дата инженеретта
Відкрити в Telegram
мелкое — крупно, в глубоком разговоре мудрость приходит по вопросам сюда: @aigul_sea
Показати більше3 348
Підписники
+424 години
-127 днів
+430 день
Архів дописів
3 348
Никто еще не попробовал эту штуку в dbt?
https://www.getdbt.com/blog/dbt-labs-acquires-sdf-labs
https://www.sdf.com/
3 348
Спасибо Алексею за полное и лаконичное пояснение 🧡, а я добавлю еще пояснялку с замерами по памяти
➖➖
Я взяла тестовый файлик с 1 млн строк и протестила все функции на нем по типу такого:
import sys
with open('1000000 Sales Records.csv') as f:
f_list = f.readlines()
print(type(f_list))
print(len(f_list))
print(sys.getsizeof(f_list)) # in bytes
🔶Результаты🔶
🟣read()
<class 'str'>
123 793 263 - длина строки
123 793 312 - размер в байтах
🟣readlines()
<class 'list'>
1 000 001 - количество строк (+заголовок)
8 448 728 - размер в байтах
🟣файловый итератор
<class '_io.TextIOWrapper'>
208 - размер в байтах
➡️ Получилось, что на выборке в 1 млн строк c длиной ~ 200 символов выигрыш по памяти между списком и итератором составил в 40k раз
➖➖
Если мы попробуем сделать такую же штуку с list(range(1000000)) vs range(1000000), то получим нечто похожее:
🟣list(range(1000000))
<class 'list'>
1 000 000 - количество чисел
8 000 056 - размер в байтах
🟣range(1000000)
<class 'range'>
1000000 - количество чисел
48 - размер в байтах
➡️ Тут с чиселками выигрыш в 166k раз
Вот и думайте
#python_tips3 348
for line in f:
Использует итерацию по файлу построчно, без загрузки всего файла в память.
Самый быстрый и экономичный способ по памяти, особенно для больших файлов.
for line in f.read()::
Читает весь файл целиком в память как одну строку, а затем проходит по символам, а не по строкам. Это значительно замедляет работу и требует больше памяти.
for line in f.readlines()::
Читает весь файл в память как список строк. Это быстрее, чем f.read(), но всё ещё требует загрузки всего файла в память.
верно рассуждаю?
3 348
Крутые дата-каналы 🔥
Собрали тут с ребятами мини-папку с дата-каналами. У меня в телеге под 200 полезных каналов, что я уже выделила папку "cool" для лучших из лучших ❤️
В ней лежит больше половины из дата-папки, и я их частенько почитываю. Сейчас добавила оставшиеся, так что точно рекомендую и вам это сделать 🔥
https://t.me/addlist/a1B07iwrPxUxNWIy
3 348
Праздничные выходные заканчиваются, начинаются большие возможности!
Уже есть опыт работы с хранилищами данных, но хочешь прокачать скилы и открыть новые карьерные горизонты? Приглашаем на ИТ-интенсив в Открытые школы Т1!
За месяц ты бесплатно получишь новые знания, практический опыт и шанс продолжить карьеру в крупнейшей российской ИТ-компании Т1!*
А также:
🧩 бесплатное обучение в гибком формате: по вечерам, онлайн, из любого города РФ и РБ;
🧩 материалы от HR для прокачки резюме и подготовки к интервью в Т1;
🧩 знакомство с ИТ-командой, погружение в культуру, проекты и процессы;
🧩 поддержка опытных преподавателей и карьерный фаст-трек до мидла в Т1 для выпускников;
🧩 реальный шанс получить оффер в Т1 и работать в аккредитованной ИТ-компании с современным техстеком и классными бонусами: ДМС, удаленка и крутые офисы, спорт и обучение, митапы и ИТ-конференции, программы признания и развития для твоего роста.
Сделай первый шаг в будущее — подай заявку до 10.02!
*По выручке, по версии RAEX и CNews Analytics 2023.
Реклама. ООО «Т1» ИНН: 7720484492. Erid: 2SDnjdg47fi
3 348
Про генераторы и итераторы
Мне когда-то советовали прочитать книжку Лутца по питону, но я ее забросила. Теперь мне нечего было делать, и я снова решила к ней вернуться) И тут я как осознала!
📝 Сделаем одно упражнение. Возьмем список, отберем только четные числа двумя способами:
lst = [1, 2, 3, 4]
l1 = [x for x in lst if x % 2 == 0]
l2 = (x for x in lst if x % 2 == 0)
print(type(l1))
# <class 'list'>
print(type(l2))
# <class 'generator'>
А теперь дважды материализуем:
print(list(l1))
print(list(l1))
# [2, 4]
# [2, 4]
print(list(l2))
print(list(l2))
# [2, 4]
# []
Список хранит все в памяти, занимает оперативку, и мы можем его вызывать сколько угодно раз.
А генератор закончился и всегда будет пустым🔲
➖➖➖➖
Если мы попробуем сделать то же самое ручками, то есть еще интересный нюанс.
Сделаем два итератора - для функции range и нашего генератора l2. Сначала вызовем первый, потом второй:
r = range(2)
i1 = iter(r)
i2 = iter(r)
print(next(i1))
# 0
print(next(i2))
# 0 - заново
l2 = (x for x in lst if x % 2 == 0)
i1 = iter(l2)
i2 = iter(l2)
print(next(i1))
# 2
print(next(i2))
# 4 - продолжили
🌀 Прикол в том, что у range итераторов может быть много, как будто они передаются по значению. А в остальных случаях как будто по ссылке - когда изменяется одна, изменяется и другая.
По сути в тех случаях, когда нам не нужно несколько раз обращаться к одним данным, мы спокойно можем использовать генератор✅3 348
Мы с вами чем-то не тем занимаемся
https://music.yandex.com/album/33934790/track/132728259?utm_medium=copy_link
3 348
Как дела?) Отдохнули?
С пн 13.01 стартует de zoomcamp!
Кто еще ждет особого знака судьбы - он здесь🔶
🔮 Зумкемп - это бесплатная штука на пару месяцев, которую я сама проходила 2 года назад. Но не сделала финальный проект и не получила серт, потому что уже нашла работу и выходила на неё.
Из стека у нас был GCP, BigQuery, Terraform, Spark, Kafka, Prefect, Postgres, Docker, dbt, Looker
Некоторые штуки у меня не удалось применить, и я по итогу заменила гугл бакеты на yandex cloud + google drive
🎄 В этом году оркестратор с Prefect меняется на Kestra, parquet на avro, и вроде все
⚠️ Видосы, стримы, задания и общение с участниками - total english
В общем, штука стоящая - тык
3 348
✨Новогоднее чудо✨
Мы тут релизились за 5 дней до нг (потому что можем себе позволить), и я испытала настоящие эмоциональные качели👌😭👌😭👌
Нужно было раскатать один сервис, но ситуация осложнилась тем, что:
🌌до релиза 3 дня
🌌еще нужны доработки
🌌я заболела и ушла на удаленку, а, кроме меня, никто глобально не знал, что нужно доделать и кто с чем может помочь (и минус доступы)
✍️ Я насчитала 10 созвонов за эти 3 дня, и в голове сразу провелась аналогия с докладом от сдека на хайлоаде. Они рассказали, как во время сбоя созванивались сначала раз в полчаса, потом раз в 3 часа…
У нас было еще одно бонусное усложнение - у разных людей разный набор доступов. Поэтому на созвонах было ~ по 3 человека, где:
🌌один мог ковыряться в технических сервисах
🌌второй мог потыкать в UI
🌌третий мог сказать, что делать в технике и когда тыкать на кнопочку (это я)
Так вот, хроники с полей:
🔵- да, все раскатили!
🔸- а нет, только трубу настроили
🔵- ну теперь точно все готово!
🔸- не совсем, надо править конфиги
🔵- все поправили!
🔸- ммм, доступов к UI не хватает
🔵- доступы получили!
🔸- ой, только из офиса можно
🔵- получили офисные доступы!
🔸- ошибка при входе( а джоба-то упала
🔵- удалили лишние версии и все перераскатили!
🔸- сетевые запросы от наших урлов блокируются, до нг точно не успеют добавить
🔵- все-таки успели!
🔸- но на нашей стороне пути тоже некорректны
🔵- пофиксили конфиги и еще раз перераскатили!
🔸- опять с сетью проблемы, но уже внутри наших микросервисов
🔵- ставим встречку со знающими людьми!
🔸- блин, для отладки нужны привилегированные доступы
🔵- поменяли еще конфиги, еще раз раскатили - все завелось!
🔸- но отчеты по безопасности не проходят
🔵- отключили лишние конфиги, перераскатили - отчеты прошли, ну теперь-то все ок??
🔸- опять коннекшн к бд протух
here we go again…
➖➖➖➖➖➖➖➖
Но новый год не был бы таким волшебным, если бы не исполнение ✨чудес✨
Поэтому эта история с счастливым концом (и парой задач на доработку уже на следующий год)
Но не стоит забывать, что за каждым чудом могут стоять люди, которые материализовали это чудо🙂🙂
3 348
Вот и настала пора подводить итоги года!
Корпораты прошли, адвенты закончились, тайные санты проведены, подарки закуплены (или будут закупаться), ну а я собрала некую смесь итогов из канала, работы и жизни 🥗
Немного циферок:
🎄 1672 подписчика: а в начале года вас было всего 182!!! - это в 9,3 раза больше без единой монетки 🍪🍪
🎄 260 постов
🎄 50 походов на концерты, съемки и митапы
🎄 28 поездок на поезде
🎄 22 собеса в нашу команду
🎄 8 встреч random coffee
🎄 7 прочитанных книжек
🎄 3 пройденных курса: де, систем дизайн, англ
🎄 3 путешествия: Питер и Йошкар-Ола
🎄 2 переезда
🎄 2 статьи на хабре: тык1, тык2
🎄 1 подкаст со мной
🎄 1 рилс в качестве амбассадора Сбера
а еще:
🧤 командой развернули собственный кластер и многому научились
🍰 попробовала себя в роли девопса
⛸ успела позаниматься k-pop и фигурным катанием
☕️ научилась собирать кубик рубика 5х5
Хотела сделать подборку постов и поняла, что они все такие крутые! 🤭 Вот просто можно взять и полистать. Я пишу от души, и любой пост - это частичка того, что я сделала/осознала/ощутила, но все-таки самые-самые-самые из самых-самых вот здесь:
👍 Крутецкие посты
dbt deep dive
Покручиваем графы
Что спросить на собесе?
Зарубежные подкасты про данные
Вопросы подписчиков
Кейс про паркеты
🥰 Про оптимизацию
Разница между MAX(dt::date) и MAX(dt)::date
LEFT убивает индексы
Разбор count(x)
Как я забила всю оперативку
Как заруинить джойн в спарке?
🤓 Покекать
Вредные советы
Как ПСИ проходили
Мама, я девопс
Наш командный сленг
Командный мудборд
И еще раз ссылочка на подкаст^^
➖➖➖➖➖➖➖➖➖➖
Надеюсь, этот год был для вас продуктивным, а следующий будет еще круче!
Может быть, до конца года еще что-нибудь напишу, пока не придумала🤭 В заготовках уже лежат 13 постов, но они не ложатся под новогоднее настроение, поэтому вернемся к ним в следующем году❄️
Мои решения для Advent of SQL можно глянуть тут, разберем интересные задачки уже в январе
А пока всех поздравляю с наступающим новым годом! 🔴
❄️ Желаю довести недоделанные дела до конца, хорошо отпраздновать и хорошо отдохнуть, загадать самые искренние пожелания, а я загадаю, чтобы они у всех у вас сбылись! 🍪
3 348
Выбор дополнительных победителей (в количестве 3):
Победители:
1. hypaslav (@hypaisonfire)
2. Igor (@GorbunovIgor)
3. RED
Проверить результаты
➖➖➖➖
Всё, подарок отправлен #1!
Всех с наступающим! ❤️❤️
3 348
🎅 Розыгрыш!
В преддверии нового года решила разыграть полезную книжку по де!
Счастливчику отправлю доставкой через озон (проверьте, что я смогу до вас это доставить)
Окончание: 18.12.2024 в 10:00
Всем удачи! 🎁
3 348
Про лаги в тг
Заметила такой лаг:
1. Пишу второй коммент под постом
2. Выхожу из поста в канал
3. Вижу только 1 коммент
4. Захожу обратно, вижу 2
5. Выхожу
6. Вижу 2 коммента, но нет картинки профиля
7. В момент клика снова вижу, как стал 1 коммент
8. Выхожу
9. Вижу 2 коммента, вижу появление своей аватарки
В свете курса по System Design могу предположить, что проблема с консистентностью)
💎 Есть известная теорема CAP, она состоит из 3х понятий. Я попросила AI помочь объяснить вам примеры нарушений как для 5летних😁
C - Consistency - пользователь видит одинаковые данные
🎙 Представь, что ты и твой друг строите башню из LEGO. Вы договорились, что башня будет зелёной. Но, когда он уходит, ты делаешь её красной.
A - Availability - при любом обращении система возвращает ответ
🎙 Вы с друзьями устроили вечер настолок. Все готовы играть, но ты не можешь найти свои карточки. Все друзья ждут, а потом скучают и уходят(
P - Partition Tolerance - система работает, даже если между нодами сетевые проблемы
🎙 Представь, что ты и твой друг решили сделать "крутой рисунок". Ты рисуешь в одной комнате, а он - в другой. Двери закрыты. В итоге ты нарисовал динозавра, а он - единорога.
Всегда можно обеспечить только 2 из 3. 3 из 3 - это уже невозможно.
🕰 Есть также Eventual Consistency - прямо сейчас данные отличаются, но через какое-то время они будут одинаковыми. И такой подход: автор всегда видит свои данные, но другие могут увидеть их чуть попозже. Например, мы записали данные в master, а читаем из slave. Из-за задержки репликации данные могут опаздывать, поэтому на разных нодах разные результаты
3 348
Станьте инженером данных с нуля за 5 месяцев, обучаясь на реальных задачах бизнеса.
Основная проблема обучений – оторванность от задач реального бизнеса. На курсе учился складывать 2+2, а на работе – сразу отправляют считать интегралы.
Курс-симулятор от Simulative построен таким образом, что вы сразу погружаетесь в настоящую работу: например, вы будете формировать продуктовые рекомендации для клиентов крупного телекома с помощью Clickhouse.
Обучение охватывает весь стек, который нужен специалисту: SQL, Python, Metabse, Linux, Docker, Airflow, Clickhouse, Hadoop и Spark. А также готовит к любому собеседованию – в курс включены тестовые задания, пробные интервью (технические и с HR) и многое другое.
С трудоустройством поможем, а на VIP тарифе преподаватели и HR спроектируют вам персональный трек обучения и за руку доведут до оффера. Часть стоимости курса вы оплачиваете только, когда найдёте работу.
Еще успеваете записаться в текущий поток
По промокоду DATA
дарим скидку 12%
3 348
+1
Прошла неделя Advent of SQL
Поделитесь, как у вас дела? Кто ещё проходит?
💻 Мне реально зашла эта штука! sql я люблю, задания прикольные, даже пришлось научиться парсить xml (не знаю зачем, но все же)
🐸💬 На реддите тоже завели треды под это дело. Оказывается, в DuckDB и Snowflake можно вот так в одном селекте обращаться к столбцам, которые мы только что посчитали, очень удобно 🔥
3 348
По следам F*ckup Meetup
🎙️ Вчера прошёл митап, где рассказывали про фейлы. В заявке нужно было рассказать свою историю, самые крутые зачитали со сцены)
Просто 🩷звездочка🩷- это фейл с видоса
А также такие:
Перенастраивал систему авторизации, в итоге удалил токены всех существующих пользаков Ввёл регламент проведения работ на проде. В тот же вечер сам зашёл и случайно удалил там все конфиги 1го апреля дропнула бд на проде. Все узнали только 2го, потому что никто не верил. Но на следующий день пришёл бизнес, и все поверилиИз докладов особенно понравились вот эти: 1️⃣ Тестировали на проде в пт в 17:00 на АЭС с эвакуацией целого региона (почти). Запустили скрипт, сервак не ответил, все ушли домой, а скрипт был зациклен🌚 В итоге когда сервак подключился, в правительство полетела куча отбивок о превышении уровня радиации 2️⃣ На графике платежей начали появляться 7-значные цифры. Причём у клиентов не списывались деньги, потому что у платежного шлюза был лимит в 100к (но на это не было нормальных логов) А у нас в бд я тоже видела аномалии по типу "150 млрд пользователей в день", но там проблема с переполнением) 3️⃣ Что-то умное про кафку и карафку (kafka для ruby) 😅 Как решали инцидент с 12 до 21, как тасовали консьюмер группы, как перезапускали кластер без перебалансировки. И что в итоге была проблема в лишнем топике, который когда-то удалили, но где-то он остался ➖➖➖➖ Считаю вечер продуктивным! ⭕️митап интересный ⭕️фуршет был ⭕️встретила 2х знакомых и познакомилась ещё с 4мя
3 348
Решила завести свой профиль и канал в сетке
Тык для канала
Тык для профиля
📱Пока что моя лента на 90% состоит из мемов, но там ещё есть вакансии, новости, истории и т.д. По сути сетка - это "линкедин дома"
Подписывайтесь, если уже там, или залетайте, если ещё нет 🌼
Вже доступно! Дослідження Telegram за 2025 — головні інсайти року 
