дата инженеретта @data_engineerette Channel on Telegram

дата инженеретта

@data_engineerette


серьезно говорим
о несерьезных вещах
вдохновляемся

по вопросам сюда: @aigul_sea

дата инженеретта (Russian)

Вступайте в наш канал 'дата инженеретта', где мы серьезно говорим о несерьезных вещах. Здесь вы найдете вдохновение и интересные обсуждения. Этот канал предназначен для всех, кто увлечен работой с данными и инженерией. Мы делимся своими знаниями, опытом и идеями, чтобы помочь вам стать лучшими в своей области. Задавайте вопросы, делитесь своими мыслями и вдохновляйтесь вместе с нами! Для связи с нами обращайтесь к @aigul_sea. Присоединяйтесь к 'дата инженеретта' и становитесь частью нашего сообщества уже сегодня!

дата инженеретта

10 Feb, 09:14


Вебинар VK Cloud «Поднимаем Data Lakehouse на основе Trino в облаке»


11 февраля на бесплатном вебинаре от VK Cloud расскажут:

· Что такое Data Lakehouse.
· Как эта архитектура объединяет преимущества Data Lake и Data Warehouse.
· Как упрощается управление и ускоряется анализ данных из различных источников в одном месте.
· Насколько удешевляется хранение данных.

Где: онлайн, необходимо зарегистрироваться
Когда: 11 февраля в 17:00

Также Алексей Белозерский, руководитель группы BigData Sevices в VK Cloud, покажет как новый облачный сервис Cloud Trino от VK Cloud обеспечивает быструю обработку больших объемов данных, позволяя получать ценные инсайты в реальном времени.

Регистрация

дата инженеретта

08 Feb, 08:03


Решения всех ваших проблем 🙌

Вчера на ретро с командой накидали решения проблем, перетасовали, а потом выбирали подходящие стикеры, как в игре с мемами. И вот что у нас получилось⬆️

Можете в комментах поделиться, что вам советует судьба на этот раз

дата инженеретта

06 Feb, 15:56


А есть тут такие же ненормальные люди, как я, которые пишут код с телефона? 🤣

дата инженеретта

04 Feb, 08:01


Как Docker упрощает жизнь аналитиков и инженеров данных

Когда вы работаете с данными, например, анализируете их или строите модели машинного обучения, Docker позволяет сосредоточиться на самой работе, не отвлекаясь на настройку окружения. Это как иметь готовую мастерскую со всеми нужными инструментами, где вы можете сразу приступить к работе.

На бесплатом вебинаре вы научитесь упаковывать приложения вместе со всеми зависимостями, избегать проблем с несовместимостью ➡️ повысите эффективность работы и сэкономите время на настройку окружения.

Что будем делать на вебинаре:
🟠Разберём основы Docker и как контейнеры упрощают работу;
🟠Выполним анализ данных, запустив Python прямо внутри контейнера;
🟠 Автоматизируем окружение с помощью Docker Compose (Python + PostgreSQL);
🟠 Настроим удобный доступ к результатам анализа;
🟠Организуем ускоренную обработку больших данных.

🕗Встречаемся 5 февраля 19:00 по мск

Зарегистрироваться на бесплатный вебинар

дата инженеретта

31 Jan, 09:38


🔶Запись готова🔶

Выложила запись на ютуб

Но у меня ни таймкоды не подтянулись, ни ссылки не работают 😁 Так что придется ручками потыкаться в описании или смотреть все 🥰

Спасибо всем, кто пришел! Меня ваши сердечки и огонечки очень подбадривали❤️

Немного статистики: 400 человек в пике, 600 в тотале!

Ссылка на материалы: https://github.com/Aigul9/spark-webinar

дата инженеретта

24 Jan, 12:54


я популярити

мой первый доклад по де в таком масштабе💺
уже нагенерила идеи, данные и скрипт, сегодня доделываю презу и потом пойду репать спич 😥
даже на почту эта рассылка пришла!

дата инженеретта

24 Jan, 12:54


🧑‍💻 Вебинар: Собираем витрину данных, как в бигтехе, от описания до результата

Представьте, что вы тренер футбольной команды. И у вас есть витрина данных, которая собирает информацию о каждом игроке, включая количество забитых голов, ассистов, время на поле и количество проведенных матчей. Такая витрина помогает выявить слабые места в команде и сфокусироваться на их улучшении.

О том, как аналитику строить витрину данных, разберём в прямом эфире на примере реальной задачи 28 января в 19:00 по МСК. Спикер вебинара — Айгуль Сибгатуллина, Data Engineer в Сбер, автор телеграм-канала @data_engineerette.

Вебинар пройдёт в нашем любимом режиме «решение тестового задания» — представим, что мы владельцы бизнеса, и на практическом примере покажем, зачем и почему мы это делаем.

Что будет:
🟠 Построение воркфлоу от этапа получения ТЗ до создания полноценной витрины;
🟠 Какие инструменты нужны для дата-инженера;
🟠 Как разобраться с методологией на разных диалектах;
🟠 Как объединить данные из нескольких источников;
🟠 Spark в работе дата-инженера: преобразования и оптимизации;
🟠 Как AI может ускорить процессы.

➡️ Зарегистрироваться

дата инженеретта

22 Jan, 13:41


Никто еще не попробовал эту штуку в dbt?

https://www.getdbt.com/blog/dbt-labs-acquires-sdf-labs

https://www.sdf.com/

дата инженеретта

20 Jan, 05:52


Спасибо Алексею за полное и лаконичное пояснение 🧡, а я добавлю еще пояснялку с замерами по памяти



Я взяла тестовый файлик с 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_tips

дата инженеретта

20 Jan, 05:51


for line in f:

Использует итерацию по файлу построчно, без загрузки всего файла в память.
Самый быстрый и экономичный способ по памяти, особенно для больших файлов.

for line in f.read()::

Читает весь файл целиком в память как одну строку, а затем проходит по символам, а не по строкам. Это значительно замедляет работу и требует больше памяти.

for line in f.readlines()::

Читает весь файл в память как список строк. Это быстрее, чем f.read(), но всё ещё требует загрузки всего файла в память.

верно рассуждаю?

дата инженеретта

18 Jan, 15:03


Крутые дата-каналы 🔥

Собрали тут с ребятами мини-папку с дата-каналами. У меня в телеге под 200 полезных каналов, что я уже выделила папку "cool" для лучших из лучших ❤️

В ней лежит больше половины из дата-папки, и я их частенько почитываю. Сейчас добавила оставшиеся, так что точно рекомендую и вам это сделать 🔥

https://t.me/addlist/a1B07iwrPxUxNWIy

дата инженеретта

14 Jan, 16:48


Про генераторы и итераторы

Мне когда-то советовали прочитать книжку Лутца по питону, но я ее забросила. Теперь мне нечего было делать, и я снова решила к ней вернуться) И тут я как осознала!

📝 Сделаем одно упражнение. Возьмем список, отберем только четные числа двумя способами:

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 итераторов может быть много, как будто они передаются по значению. А в остальных случаях как будто по ссылке - когда изменяется одна, изменяется и другая.

По сути в тех случаях, когда нам не нужно несколько раз обращаться к одним данным, мы спокойно можем использовать генератор

дата инженеретта

10 Jan, 10:22


Мы с вами чем-то не тем занимаемся

https://music.yandex.com/album/33934790/track/132728259?utm_medium=copy_link

дата инженеретта

08 Jan, 09:26


Как дела?) Отдохнули?

С пн 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
В общем, штука стоящая - тык

дата инженеретта

29 Dec, 18:40


Сгенерила себе открытку, пусть тут полежит

дата инженеретта

27 Dec, 07:40


Новогоднее чудо

Мы тут релизились за 5 дней до нг (потому что можем себе позволить), и я испытала настоящие эмоциональные качели👌😭👌😭👌

Нужно было раскатать один сервис, но ситуация осложнилась тем, что:
🌌до релиза 3 дня
🌌еще нужны доработки
🌌я заболела и ушла на удаленку, а, кроме меня, никто глобально не знал, что нужно доделать и кто с чем может помочь (и минус доступы)

✍️ Я насчитала 10 созвонов за эти 3 дня, и в голове сразу провелась аналогия с докладом от сдека на хайлоаде. Они рассказали, как во время сбоя созванивались сначала раз в полчаса, потом раз в 3 часа…

У нас было еще одно бонусное усложнение - у разных людей разный набор доступов. Поэтому на созвонах было ~ по 3 человека, где:
🌌один мог ковыряться в технических сервисах
🌌второй мог потыкать в UI
🌌третий мог сказать, что делать в технике и когда тыкать на кнопочку (это я)

Так вот, хроники с полей:

🔵- да, все раскатили!
🔸- а нет, только трубу настроили
🔵- ну теперь точно все готово!
🔸- не совсем, надо править конфиги
🔵- все поправили!
🔸- ммм, доступов к UI не хватает
🔵- доступы получили!
🔸- ой, только из офиса можно
🔵- получили офисные доступы!
🔸- ошибка при входе( а джоба-то упала
🔵- удалили лишние версии и все перераскатили!
🔸- сетевые запросы от наших урлов блокируются, до нг точно не успеют добавить
🔵- все-таки успели!
🔸- но на нашей стороне пути тоже некорректны
🔵- пофиксили конфиги и еще раз перераскатили!
🔸- опять с сетью проблемы, но уже внутри наших микросервисов
🔵- ставим встречку со знающими людьми!
🔸- блин, для отладки нужны привилегированные доступы
🔵- поменяли еще конфиги, еще раз раскатили - все завелось!
🔸- но отчеты по безопасности не проходят
🔵- отключили лишние конфиги, перераскатили - отчеты прошли, ну теперь-то все ок??
🔸- опять коннекшн к бд протух
here we go again…



Но новый год не был бы таким волшебным, если бы не исполнение чудес
Поэтому эта история с счастливым концом (и парой задач на доработку уже на следующий год)
Но не стоит забывать, что за каждым чудом могут стоять люди, которые материализовали это чудо🙂🙂

дата инженеретта

25 Dec, 15:45


Вот и настала пора подводить итоги года!

Корпораты прошли, адвенты закончились, тайные санты проведены, подарки закуплены (или будут закупаться), ну а я собрала некую смесь итогов из канала, работы и жизни 🥗

Немного циферок:

🎄 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 можно глянуть тут, разберем интересные задачки уже в январе

А пока всех поздравляю с наступающим новым годом! 🔴
❄️ Желаю довести недоделанные дела до конца, хорошо отпраздновать и хорошо отдохнуть, загадать самые искренние пожелания, а я загадаю, чтобы они у всех у вас сбылись! 🍪

дата инженеретта

18 Dec, 07:45


Выбор дополнительных победителей (в количестве 3):

Победители:
1. hypaslav (@hypaisonfire)
2. Igor (@GorbunovIgor)
3. RED

Проверить результаты



Всё, подарок отправлен #1!
Всех с наступающим! ❤️❤️

дата инженеретта

18 Dec, 07:00


🎉 Результаты розыгрыша:

Победитель:
1. Natali (@And_NaN)

Проверить результаты

дата инженеретта

16 Dec, 06:45


🎅 Розыгрыш!

В преддверии нового года решила разыграть полезную книжку по де!

Счастливчику отправлю доставкой через озон (проверьте, что я смогу до вас это доставить)

Окончание: 18.12.2024 в 10:00

Всем удачи! 🎁

дата инженеретта

12 Dec, 11:01


Про лаги в тг

Заметила такой лаг:

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. Из-за задержки репликации данные могут опаздывать, поэтому на разных нодах разные результаты

дата инженеретта

07 Dec, 13:01


Прошла неделя Advent of SQL

Поделитесь, как у вас дела? Кто ещё проходит?

💻 Мне реально зашла эта штука! sql я люблю, задания прикольные, даже пришлось научиться парсить xml (не знаю зачем, но все же)

🐸💬 На реддите тоже завели треды под это дело. Оказывается, в DuckDB и Snowflake можно вот так в одном селекте обращаться к столбцам, которые мы только что посчитали, очень удобно 🔥

дата инженеретта

05 Dec, 09:35


Решила завести свой профиль и канал в сетке

Тык для канала
Тык для профиля

📱Пока что моя лента на 90% состоит из мемов, но там ещё есть вакансии, новости, истории и т.д. По сути сетка - это "линкедин дома"

Подписывайтесь, если уже там, или залетайте, если ещё нет 🌼

дата инженеретта

03 Dec, 18:12


Рекомендасьон

Мой коллега по парте сходил на конфу Highload 2-3 декабря
Эксклюзивный контент🔥
И вообще пишет про классные штуки

дата инженеретта

03 Dec, 18:12


🔆 Вот и подошел к концу Highload++ 2024.
Первый раз был на такой крупной конференции, и я конечно же восхищен.
Вот что я могу сказать, из плюсов

Очень удобный бот конференции в котором можно отслеживать доклады и устроить Random Coffee

Очень широкий спектр тем (от даты до архитектуры, маркетинга и безопасности)

Прекрасный кейтеринг

Куча C-levelов российского бигтеха с которыми можно вживую поговорить и задать вопросы (переборов страх быть кринжовым)

Колоссальные возможности для нетворкинга - я поставил себе цель, познакомиться и обменяться контактами с 10+ специалистами и перевыполнил эту цель в 1.5 раза, без особых усилий.

Из минусов (каинда):

стоит разделить конференцию на фестивальную часть и часть докладов - невозможно физически посетить все доклады и все стенды - я старался держать баланс, но охватил от силы 30 процентов стендов и 20 процентов докладов. (Доклады к тому же шли в параллель)

Звездами этой конференции были PHP и Golang - у меня немного другой стек

Ну и подводя итог, рекомендовал бы посетить эту конференцию, специалистам уровня Middle+
Тк у многих докладов есть неслабый порог вхождения, и вам нужно быть хотя бы специалистом конкретно вашей области + иметь хорошие знания в general computer science (вспоминаем о входителях в айти, говорящих, что алгоритмы, паттерны проектирования и прочая БАЗА никому не нужна) - иначе для вас конференция сведется лишь к фестивальной части.

В следующем посте, на основе данных этой конференции, расскажу о том когда вашему хадупу/S3 стоит задуматься об использовании Apache Iceberg.

дата инженеретта

02 Dec, 17:14


System Design. №2 Расчет ресурсов

Как же это все интересно, куча циферок... ☺️

Нужно учитывать 4 пункта:

1️⃣ Пользователи
MAU, DAU, сколько в пик, прирост в день/месяц/несколько лет, отношение чтения к записи, сколько генерится контента

💬 MAU/DAU (Monthly/Daily Active Users) - сколько пользаков в месяц/день

2️⃣ Сеть
Сколько одновременных соединений, трафик, какие данные и сколько передают пользаки в день, RPS

Ну и облака - это медленнее, чем физические сервера

3️⃣ Вычисления
Сколько rps на получение текста, на чтение и запись в бд, на запуск ML-моделей

Недавно общалась с одним коллегой из отдела биометрии, он сказал, что на прохождение даже одной модельки может уходить время 200ms. А если их несколько - вот ты уже стоишь у кассы и ждешь несколько секунд, пока пройдет оплата 😐

4️⃣ Хранение
Сколько нужно сейчас, сколько будет прирастать в течение длительного периода
Что мы будем хранить на HDD, SSD, RAM. Горячие/теплые/холодные/ледяные данные
Сколько нужно заложить на репликацию



Пока я поняла, что нужно:

- прикинуть DAU, MAU
- научиться считать RPS, скорость, соединения, количество данных
- экстраполировать это на несколько лет вперед
- взять цены и просуммировать

Если вообще нет представлений, то можно поковыряться в планах облачных провайдеров и составить общую картинку.

Но с осознанием пока сложно, чувствую, надо это все еще раз пересмотреть)

#system_design

дата инженеретта

30 Nov, 16:45


🎄 Завтра стартуют advent-челленджи 🎄

Advent of Code
Advent of SQL

На sql я наткнулась только недавно. Возможно, он проводится в первый раз?
А вот про advent of code мне рассказали в 2020 году в кругу американских прогеров и математиков

🗓️ Это связано с адвент-календарем, в котором каждый день с 1 по 25 декабря люди открывают по одному окошечку с подарком по случаю католического рождества

💻 Обычно первые задачки супер изи, но до 25 дня я не доходила (потому что алгосы - это слабенькое место), а в прошлом году уровень в разы повысился из-за развития AI штук. Что будет в этом году - даже не знаю. Хотя там есть глобальный лидерборд, и некоторые пишут длиннющие однострочники и решают в терминале за миллисекунды 😱

В общем, это интересная штука, потому что:

🩷есть сторителлинг, т.е. вы не просто решаете рандомные задачки, а они еще связаны единой канвой - эльфами, тропическими островами и прочими штуками

🩷можно круто прокачаться в использовании либы itertools (если на питоне)

🩷можно почекать на реддите, как другие решают на абсолютно любом языке (есть даже Excel, Zig, J, Uiua, Raku и куча других ноунеймов)

🩷можно выставить свое решение, чтобы кто-то прокомментил. мои решения даже набирали два лайка 😁

🩷а еще однажды на собесе спросили, в каких это я хакатонах участвую 😅 возможно, это был плюсик в карму!

дата инженеретта

29 Nov, 13:56


Ураа, мне пришла приглашалка на митап 🌼 Неужели я достигла уровня значимых факапов?

🍿 А в комментах можете поделиться, были ли у вас неудачи и как вы из них выпутывались. Было бы интересно посмотреть)

дата инженеретта

26 Nov, 07:35


Кейс про паркеты

Предыстория

Мы хотим перекладывать паркет-файлики из одной системы в другую. Выложили их на s3. Все, можно забирать. Казалось бы, что может пойти не так?

Но этот процесс прошел несколько итераций, прежде чем я сказала "все ок" 😊

1️⃣
Проблема: Illegal Parquet type: FIXED_LEN_BYTE_ARRAY
Смысл: паркет не умеет читать тип FixedString из кх
Решение: удаляем столбец или сохраняем в формате String

2️⃣
Проблема: Required field 'codec' was not present!
Смысл: связано с несопоставимыми алгоритмами компрессии файлов
Решение: используем другой алгоритм (н-р, Snappy)

3️⃣
Проблема: Строковые типы отображаются вот так: [57 65 62 4B 69 74]
Смысл: отображается в бинарном виде
Решение:

SELECT unhex(regexp_replace(StartURL, ' ', ''))

(или без unhex)

Но это неудобно все преобразовывать на этапе чтения

4️⃣
Проблема: делаю printSchema() и вижу, что все строковые поля имеют тип binary
Решение: сохраняем в string

5️⃣
Проблема: date в формате 20031
Смысл: это количество дней от 1970-01-01
Решение:

df.withColumn(
'new_date',
F.date_from_unix_date(date)
)


6️⃣
Проблема: функция date_from_unix_date появилась в версии 3.5.0, а у нас ниже
Решение: делаем примерно так и кладем все в string на этапе записи

SELECT date_add('1970-01-01', 20031) AS new_date


Ура😑

дата инженеретта

22 Nov, 06:56


Я прочитала DAMA-DMBOK

Это книжка на 830 страниц - "Свод знаний по управлению данными". Мне ее как-то советовали прочитать, и вот полтора месяца я упорно это делала 📖

Вкратце эта книга про фреймворк DAMA (Data Management Association). Про то, как должно быть. Он включает такие аспекты:
🔵архитектура и моделирование данных
🔵хранение
🔵безопасность
🔵интеграции
🔵основные данные
🔵метаданные
🔵качество данных
и еще несколько (на картинке - колесо DAMA)

Я по ходу чтения записывала интересные, новые для меня моменты, буду постепенно делиться)

Зачем это все нужно?

Одни и те же данные складываются по-разному, называются по-разному. Одинаковые метрики считаются по-разному.

Глобальная цель - чтобы я из маркетинга и Оля из любой другой команды понимали, что цена всегда до ндс, а clientid имеет тип string и обозначает человека, который купил у нас продукт.

Это нужно, чтобы больше не переписываться в почте на тему "А это что означает? А что заложено в эту метрику?". Мы делаем каталог данных, и каждый ходит туда и смотрит нужные ему вещи:
🟡бизнес-смысл
🟠бизнес-правила
🟡источник
🟠логика преобразований из системы в систему (lineage)

🙂 Еще сквозь всю книгу красной линией проходит мысль - бизнес и IT должны работать вместе. Кстати, у нас когда-то вставал вопрос - нужно ли IT-командам на 100% понимать, как их работа влияет на метрики бизнеса?

В Сбере есть активность "Random Coffee", где рандомно подбирается зареганный собеседник. И несколько человек мне ответили, что они просто крутят модельки и жизнь прекрасна 🌼

Что думаете?

#dama_dmbok

дата инженеретта

20 Nov, 08:01


Мы в этой жизни всё делаем правильно?

Картина буквами: 10% от всего плана запросов

дата инженеретта

18 Nov, 08:15


Как я забила всю оперативку

⭐️Нужно было переложить табличку из кх в s3 через Airflow. Табличка небольшая, проблем быть не должно

Идея №1

1️⃣Считать табличку из кх в pandas dataframe
2️⃣Сохранить датафрейм в .csv файл
3️⃣Залить в s3 через либу boto3

Пока тестирую и отлаживаю на 10 строках - все ок. Убираю лимит - и Airflow становится очень плохо, он не прогружается и не дает завершить таску 🥲

Смотрю в источник - там 12млн строк. Неужели pandas не может столько переварить? Очевидно, надо искать другой способ

Идея №2

Я раньше сталкивалась, что в кх можно прям запросом читать из s3. Вот так:

SELECT * FROM s3()


Оказывается, это работает и на запись!

INSERT INTO FUNCTION s3()
SELECT * FROM your_table


В эту функцию можно добавлять разные настройки. Из полезного - разбить вашу табличку на несколько файликов. Примерно такой код у меня работает:

INSERT INTO FUNCTION
s3(
'filename_{{_partition_id}}.csv.gz',
'S3_ACCESS_KEY',
'S3_SECRET_ACCESS_KEY',
'CSVWithNames'
)
PARTITION BY rand % 10
SELECT * FROM your_table;


Что тут есть?

⚫️{_partition_id} – это переменная, которая пробрасывается сама. Просто счетчик от 0
Если вставлять этот код в строку, нужно обязательно обрамить скобками {} дважды – иначе s3 воспринимает это по-другому и падает с ошибкой

⚫️.gz – алгоритм компрессии файликов

⚫️CSVWithNames – мы включаем названия столбцов первой строкой

⚫️PARTITION BY [столбец] - можно выбрать существующий или просто задать рандомно

И этот метод работает просто в разы быстрее. Теперь табличка на 12 млн строк пишется за несколько секунд 🙂

дата инженеретта

15 Nov, 05:50


А вы знали, что существует лидерский манифест о данных?

дата инженеретта

08 Nov, 13:59


Подъехала запись и презы с митапа

https://developers.sber.ru/kak-v-sbere/events/data_meetup_october

дата инженеретта

06 Nov, 14:01


Я иду на интенсив по англу!

Есть люди, которые спрашивают про мой уровень англа и как я до него дошла. Все-таки он очень важен в нашей сфере, и гуглеж на англ - наше все. Так что рассказываю свою краткую историю...

📖 История

🟣Начиналось все очень плохо. Два года (весь 2-3 класс) мы просто читали, а в 4 снова начали учить буквы 💢

🟣В 5 всем классом поменяли препода, но уже были проблемы с аудированием.

🟣В 8 я перешла в другую школу с делением на сильную и слабую группы. По тестам я чуть недотянула, но мне разрешили остаться в сильной и попробовать. Мы на уроках смотрели Гарри Поттера в оригинале, и все понимали, а я нет 😭

🟣В 10 нам сказали, что именно мы все пишем ЕГЭ в след году. Я год с лишним ходила к репетитору, пока нам не сказали "отмена"

🟣В универе снова были входные тесты, и групп было уже 4 по градации. Да, я попала в сильную! Некоторые снова смотрели фильмы в оригинале без субтитров и имели большой словарный запас. Тогда я тоже начала смотреть фильмы 📺

🟣На 3 курсе я начала играть в онлайн-игрульку и наткнулась на english-speaking community. В течение 3х лет я подключалась на голос для обсуждений, читала абсолютно все чатики, постила мемы на англ, вела свой словарик частых сокращений, переписывалась с игроками в личке. Заметила, что у меня появился американский акцент

🟣Потом я захотела получить опыт иностранных собесов на будущее, но мое резюме было никому не нужно 🥲
А сейчас я наткнулась на AgileFluent, они помогают специалистам из IT и digital находить работу за рубежом, а также прокачивать бизнес-английский. У них есть крутые программы, ориентированные не на королевский Future Perfect Continuous in the Past, а на жизнь. И я решила попробовать какой-нибудь интенсив на 1 месяц.

Всего их 3, но мне понравились вот эти:
1️⃣ Engish for IT teams, где на англ ведутся скрам-церемонии (планирование, стендапы, демо, ретро)
2️⃣ Focus on Speaking - как решать конфликты, как давать фидбек и вести переговоры

Решила, что если с первым понятно - когда у тебя есть задачи, то кажется несложным спланировать спринт и рассказывать, чем ты занимался вчера и чем будешь заниматься сегодня.

А вот со вторым уже что-то поинтереснее.
🙂 Встречи 2 раза в неделю, где мы будем обсуждать реальные жизненные ситуации. Поток стартует 11 ноября, и если вы тоже хотите запрыгуть, то можете использовать мой реферальный код CREF-MMTTRM (7% на первую покупку)
Я в предвушении🙂

дата инженеретта

04 Nov, 15:55


Прошедший Data.Meetup

🕒24.10.2024 состоялся Data.Meetup 2024 в Сбере, где сначала рассказывали про сберовские штуки типо супермаркета или карты данных, а потом про Trino, Iceberg и Flink.

🐰 Оказалось, что у нас Trino внедряют, но как обычно с банковскими обвязками. Сейчас там сейчас 300+ пользователей, еще планируются доработки и добавление функционала. Показалось, что лучше еще подождать, пока это все подъедет. А на одном недавнем митапе мне сказали, что в озоне пилотится Trino.

Про Trino+Iceberg рассказывал спикер, который в этом году выступал на SmartData с похожим докладом тык

🐿 Больше всего понравился практический доклад по Flink - объясняли про окна событий на пальцах (точнее на белочках и орешках) и как их джойнить между собой. Лайк 👍

Я тут поресерчила в конфлюэнсе - у нас есть R&D команда, которая занимается ресерчами новых технологий. И они еще в начале 2022 года (если не раньше) тестили Trino, Iceberg, Hudi, Delta Lake (но не знаю, к чему пришли).

А на кофе-брейке я осмелилась подойти к CDO WB и начать разговор🌼 Помню, что еще давно писала ему по поводу рекламы моего канальчика, но после расценок решила ничего не делать))

дата инженеретта

01 Nov, 13:50


Я начала курс по систем дизайн

Давно хотела в это погрузиться - как проектировать, как считать ресурсы и нагрузку, как выбирать технологии

чтобы не только крутить таблички, но и выбиваться в тех лиды👔

У нас есть закупленные курсы, и конкретно этот от карпова на 5 недель. Я уже посмотрела первый вводный урок про то, что будет:

🔘как собирать фкц и нефкц требования
🔘как считать нагрузку
🔘как делать высокоуровневый дизайн
🔘а как покомпонентный
🔘а что по масштабированию, отзывчивости и мониторингу
🔘а сколько закладывать на это все в бюджет
🔘а может, лучше взять менее идеальную штуку, но по которой у нас есть экспертиза?

Среди спикеров Валерий Бабушкин, который накидал кучу непонятных букв типо ELP, consistent hashing, QPS, trie, фильтр Блума и т.д.
Ну ладно, не совсем непонятных 😁 Trie я видела в задачках на литкоде, а фильтр Блума использовала в магистерской)

Плюс это все еще и с точки зрения данных, а не чисто приложух
Короче, звучит супер хайпово 🍢

дата инженеретта

31 Oct, 11:41


🌟Ответ🌟

Вопрос тут

Правильный вариант - оба!

В having можно использовать:

⚫️любую агрегирующую функцию (необязательно ту, которая в селекте)
⚫️колонки из group by
⚫️константы (применение не придумала)

Так что чисто технически можно фильтровать значения и в having, но, вероятно, это будет дольше 😔 А в некоторых базенках оптимизатор сам делает, как where

дата инженеретта

29 Oct, 10:45


Закулисье IT: честный взгляд изнутри на управление проектами, продуктами и командами

Менеджмент продуктов и руководство в IT — сложный процесс, о котором известно не так много. На канале «Кем я хочу стать когда вырасту» автор рассказывает о развитии продуктов, продакт-менеджеров и работе руководителя.

Что стоит прочитать в первую очередь:
• От чего на самом деле зависит успех в IT
• Почему стремятся в руководителями и стоит ли это того?
• Почему не нужно идти на курсы программирования, чтобы работать в IT

Все посты основаны на личном опыте более 10 лет в роли тимлида и руководителя.

Подписывайтесь на канал, чтобы погрузиться в реальный мир IT без розовых очков.

Реклама. Миронова Н.О. ИНН: 772985604739 erid:2VtzqvNtpHS

дата инженеретта

28 Oct, 06:44


Мини-квиз

Есть два запроса. Какой из них корректный?

1️⃣
SELECT id, COUNT(*)
FROM demo
GROUP BY id
HAVING id = 3;


2️⃣
SELECT id, COUNT(*)
FROM demo
GROUP BY id
HAVING MIN(id) = 3;

дата инженеретта

23 Oct, 15:30


🌄 Зарубежные подкасты про данные

В конце "Fundamentals of DE" была ссылка на подкаст, который ведут авторы книги. И мне захотелось погуглить, а какие еще подкасты про де есть. Взяла за основу список с прошлогоднего поста на реддите, убрала неактивные и добавила новые. Поделитесь, кто что слушает и что рекомендуете?

Monday Morning Data Chat - от авторов
The Analytics Engineering Podcast
The Data Engineering Show
The Data Engineering Podcast
The Data Stack Show
Drill to Detail Podcast
Analytics Power Hour
DataTalks.Club
The Data Cloud Podcast
The MongoDB Podcast
The Analytics Everywhere Podcast
The Real Python Podcast
Plumbers of Data Science Podcast
What's New in Data?
The Datanation Podcast

дата инженеретта

21 Oct, 11:02


Разработчик платформы данных, ты тут? 😳

Специально для тебя запустили бесплатный онлайн-интенсив в Открытых школах Т1! Прокачай скилы и, если повезет, попади в штат Холдинга Т1 — крупнейшей ИТ-компании в России по версии RAEX и CNews Analytics 2023.

Зачем участвовать?

🔵Бесплатное обучение в гибком формате: по вечерам, онлайн, из любого города РФ
🔵Уникальный рыночный опыт. Проекты Т1 ежегодно побеждают в ИТ-конкурсах: Global CIO, Национальной банковской премии и др. Тебя обучит и поддержит команда профессионалов.
🔵Возможность влиять на развитие ключевых отраслей экономики: в портфеле Т1 800+ высокотехнологичных проектов и 70+ продуктов и услуг на современном техстеке для крупнейших компаний и госсектора.
🔵Карьерный рост и поддержка. Уникальный карьерный фаст-трек для выпускников Открытых школ помогает молодым специалистам прокачаться до уровня мидла в Т1 за 1,5 года.

Успей подать заявку до 25 октября!

Реклама. ООО «Т1» ИНН: 7720484492. Erid: 2SDnjcSjzEF

дата инженеретта

21 Oct, 05:45


Командный мудборд

Сделали с коллегами "мотивационный плакат" на одном из ретро за 5 минут
Вот такой у нас вайб😄

Всем хорошей недели!💻

дата инженеретта

17 Oct, 13:32


Больше архитектур

Недавно была на "Hadoop Admins Meetup", где рассказывали про современные тех. штуки и подкапотную жесть🌼 В продолжение поста закидываю вам еще ряд интересных картинок с архитектурами систем и умными словами.

Из того, что озвучили в докладах:

Data Ocean Nova - платная штука от Glowbyte

Apache Yunikorn - замена YARN (ресурс-менеджер на кластере)

Talys.SDI - CDC для стриминга с Flink

Apache Kyuubi [кьюби] - суперновая модная штука с парой докладов на русском (остальные - китайские), что-то типо спарка, но поверх спарка (в том числе)

Вряд ли я вживую пойду слушать в другой раз, много чего было абсолютно непонятно 😱 Плюс было немного людей, и все такие взрослые и пожившие эту жизнь)) Разве что чтобы быть в контексте?

🔍 P.S. А вы на логотипе Flink тоже видите сердце вместо белочки?

#system_design

дата инженеретта

15 Oct, 11:15


Реально ли IT-специалисту переехать в Великобританию без предложения о работе, без высшего образования и без знания английского языка? Ответ: да! Рассказываем, как это сделать.

Виза Global Talent дала возможность более 8000 IT-специалистам переехать в Британию в 2022 году. Она выдаётся на срок до 5 лет, по ней можно работать в любой компании, фрилансить, открывать собственный бизнес и даже претендовать на паспорт!

Чтобы получить эту визу, не обязательно иметь высшее образование, не нужно знать язык на высоком уровне, а заявку можно подать из любой страны. И, пожалуй, самое главное – не нужно обладать каким-то исключительным талантом! Почти все IT-специалисты могут претендовать на эту визу.

Подписывайтесь на наш Telegram-канал, где мы даём массу полезной информации о релокации: https://t.me/relocode

Пишите нам в WhatsApp: +44 7496 949122 или в Telegram: @relocode_uk. Мы проводим бесплатные консультации, на которых поможем разобрать ваш кейс и подобрать наиболее подходящий способ релокаци

дата инженеретта

09 Oct, 15:39


Мама, я девопс

Я тут взглянула сверху на нашу команду, и вот какие роли у нас оказались:

🙂 Product Owner - выстраивает стратегии и дальносрочные планы развития продукта

🤔 Solution Architect - проектирует взаимодействия и интеграции между системами

🙂 Release Manager - отвечает за процесс релизов

👔 Lead DevOps - разворачивает инфру на опеншифтах (старается)

✍️ Big Data Analyst/восходящая звездочка PO - решает серьёзные вопросики на серьёзных созвонах

😥 Data Engineer - вкатывается в процессы, т.к. недавно пришёл

Это что получается, у нас некому работать? 🙂

дата инженеретта

06 Oct, 09:24


Покручиваем графы

Мне давно хотелось визуализировать систему лифтов, которая есть в башне на Кутузе. И вот я добралась!

Предыстория
В каждой шахте ходят по 2 лифта, и есть продуманное разделение секций лифтов на три разных холла. Например, в башне Б всего 41 этаж, и уже с середины здания ты можешь добраться только с пересадкой.

На картинке вся система переходов между этажами в одной башне. Сразу видны центры сосредоточения⬇️ Буковками обозначены холлы:
C - центральный
L - левый
R - правый
(я так вижу)

🟡 Еще некоторые лифты открываются в две стороны, т.е. уехать ты можешь слева, а приехать справа.

Но есть проблема - с первого и даже с десятого раза ты не угадаешь, на каких этажах делать пересадку, пока не осознаешь логику или не выучишь все этажи👍

Мне было очень интересно составить комплексную картину, и я решила пройтись по всем этажам и холлам и четенько зафиксировать🤓

📊 В итоге все закинула в графовую бд neo4j, которая сейчас доступна только с впн, но потыкаться уже в готовой пока можно и просто так.
(Только в бесплатной версии она на паузе после 72ч неактивности. Ссылка на уже загруженные данные в проекте чуть пониже)

Чтобы что?
Чтобы понимать, каким образом можно добраться из точки А в точку Б. А потом написать мобилку, захостить и расшерить коллегам (может быть) 😥
Например, вот запрос для 2х кратчайших путей между этажами:

MATCH p = SHORTEST 2 (from: Floor)-[*]-(to: Floor)
WHERE from.id = 1 AND to.id = 39
RETURN p, length(p) AS result


Мне было интересно, и я покопалась в синтаксисе Cypher, чтобы минимизировать количество пересадок и их сложность (близкая или далекая), а также количество проезжаемых этажей. Потому что самым коротким могут оказаться 30+ путей, и возникли идеи дальше отбирать по логичным критериям 💻

🔖Интересный факт: чтобы добраться с 4го этажа на 41й, нужно 5 шагов! (если у вас нет доступа к крутому лифту)

Кому интересно - проектик с инструкцией лежит тут: https://github.com/Aigul9/elevators/tree/main

дата инженеретта

04 Oct, 08:30


Объявляем большой сбор дата-специалистов!
На бесплатный Aston Data Engineering Meetup в Санкт-Петербурге.


Обсудим, как Modern Data Stack изменил подход к ETL-процессам и поговорим про неожиданные возможности оркестратора Airflow. Спикерами выступят опытные дата-инженеры, поэтому будет полезно специалистам уровня Middle+ и выше.

📍Мероприятие пройдет в двух форматах: онлайн и офлайн.

Когда: 17 октября
Офлайн 18:30 (мск) / онлайн 19:00 (мск)
Где: БЦ «Ренессанс Холл», 6 этаж, 601, Владимирский проспект, 23

Подробнее про темы:

🟢 Data Engineer Unirest Никита Целищев разберет подходы старой школы к построению ETL и сравнит их с современными методами. Также он расскажет, как изменилась роль разработчика DWH и дата-инженера c появлением Modern Data Stack.

🟢 Data Engineer ASTON Расим Гарипов расскажет про полезные возможности Airflow, которыми редко пользуются дата-инженеры и другие специалисты, научит писать DAG-и в едином, читаемом и понятном виде. Кроме того, он поделится опытом работы с Data-aware Scheduling и разметкой Data Lineage, и объяснит, зачем нужен triggerer в Airflow и как его задействовать.

👉 Регистрируйся по ссылке и приходи!

Реклама ООО "Астон", ИНН 9715350151, erid=2VtzqwLPDsj

дата инженеретта

30 Sep, 12:56


Хотели бы реализовать свои идеи в проекте с многомиллионной аудиторией? 🚀

В Авито актуальны вакансии для инженеров под разные задачи:

1️⃣ Data Engineer в команду Clickstream

Вы будете разрабатывать новые и поддерживать существующие продукты в составе кросс-функциональной команды, заниматься развитием существующей BigData-платформы, а также создавать новые сервисы на Python.

2️⃣ Системный инженер HPC кластеров

Вам предстоит участвовать в разворачивании HPC кластера для задач ML/AI с нуля, а также заниматься сопровождением и развитием высокопроизводительных кластеров.

Что ещё вас ждёт:

– достойная зарплата, размер которой обсуждается на собеседовании;
– прозрачная система премий;
– передовые технологии и подходы, возможность пробовать новое;
– опытные и заинтересованные коллеги, готовые оказать поддержку;
– мощное железо, дополнительные мониторы и всё, что нужно для продуктивной работы;
– личный бюджет на обучение, который можно тратить на книги, курсы и конференции;
– забота о здоровье: ДМС со стоматологией с первого дня, в офисе принимают терапевт и массажист;
– возможность работать удалённо и по желанию посещать комфортный офис в Москве или Санкт-Петербурге.

Откликайтесь по ссылкам выше!

дата инженеретта

27 Sep, 15:26


Мои отношения со скалой

Впервые столкнулась с ней, когда мы хотели считать графы, код на спарке конкретно падал, и я попробовала переписать все на скалу. Боль началась уже с чтения json-конфига🥲

Scala в моей голове была очень похожа на Java, но это совсем не так. После слез, страданий, знакомства с синтаксисом циклов и бесконечным количеством типов получилось что-то такое:

import org.json4s._
import org.json4s.jackson.JsonMethods._

val filename = "config_v1.json"
val config = parse(Source.fromFile(filename).getLines.mkString)

implicit val formats = DefaultFormats

for {
JObject(table) <- config
JField("columns", JArray(columns)) <- table
} {
for (column <- columns) {
val colName = column.extract[String]
// ...
}
}
}


Уже
🟢начало приходить понимание,
🟢конструкции не казались супер необычными,
🟢return без return - это норма,
🟢вызов функций без скобочек - это норма,
🟢отвращение отошло на второй план.
Но потом я решила погрузиться еще раз и пройти курс на степике🤓

Я снова перестала воспринимать скалу как что-то естественное. Это какое-то обилие скобочек, черточек, стрелочек, обозначающих сложные математические штуки.

😭 Однажды сидела на конфе с челами, которые реализовывали доказательства теорем на хаскале и не понимала абсолютно ничего. Запомнила только, что много раз повторялось слово "монады". Ощущение от всего этого примерно такое же.

Тут выжимка самых странных операций)

дата инженеретта

23 Sep, 11:15


Поддержите начинающую актрису!

Мне тут написали из сообщества амбассадоров и пригласили сняться в рилсе!
Буквально 10 минут, несколько дублей, склейка, склейка - и готово

Лайки не запрещаются🩷

дата инженеретта

16 Sep, 14:59


Про архитектуры дата платформ

Наконец-то появилось время посмотреть доклады со SmartData 2024. К сожалению, не разрешили пойти в оффлайн, поэтому довольствуемся чем есть🥲🥲

🔡
Из доклада "Data Lineage: как настроить в зоопарке технологий и зачем это нужно" - Купер
Уже из всех утюгов говорят про Debezium, Iceberg, Trino, Data Lineage. Как будто взяли самые хайповые технологии и сделали конфетку, как по мне - выглядит очень круто

1️⃣
Из доклада "Data mesh: ожидания vs реальность" - Леруа Мерлен (Лемана ПРО)
Это то, с чего они начинали

©️
Это то, к чему они сейчас пришли
Есть две статьи на хабре: 2021г. и 2023г., где они вкратце про это рассказывают

Вот такой System Design

дата инженеретта

03 Sep, 14:59


Кринж вопросы

Бывало ли у вас такое, что на собесе спрашивали абсолютную кринжатину?

В мой топ пока входят эти вопросы:

😒 Что такое json?
😒 Что такое html?
😒 А расскажите что-нибудь про ди ви эйч

В этих случаях обычно спрашивал человек возле IT, которого попросили по бумажке проверить ответы. У меня почему-то от них возникает ощущение неуважения))

И тут я подумала, что уровень вопросов на собесе тоже сильно важен. Потому что ты можешь понять, с какими людьми и задачами будешь имеешь дело. Если они задают жесть какие вопросы - значит, сами шарят за это и можно у них набраться крутого опыта👓👏 (лично моё мнение)

🎧 А вам задавали похожие вопросы?
Ориентируетесь ли вы на уровень вопросов?

дата инженеретта

28 Aug, 17:37


Топ-подборка

🕒 Полгода назад мы с коллегами практически друг за другом завели тг-каналы, обсуждали пути их развития, соревновались. (Кстати, скрипт в Airflow до сих пор присылает на почту ежедневные отчетики по инкременту подписчиков.)

🔝 А потом уже сами прошли путь до амбассадоров Сбера и вошли в топ крутышей (я надеюсь!)

И вот мы с нашими коллегами-амбассадорами собрали папку на тему IT. Возможно, откроете новые в себе новые грани, возможно, нет, но заглянуть определенно стоит 👀