TGViewer
Channel Public Channel
Кухня данных | Руслан Мустафин

Кухня данных | Руслан Мустафин

@etl_kitchen

Вкусно про данные!
Собираю свой сайт с теорией по работе с данными, тестами и рецептами
https://etl-kitchen-book.ru/

По всем вопросам - @ruslan_etl
Subscribers
894
Photos
95
Videos
19
Links
52
Recent Posts 19 shown
Post #157 780
Кухня данных | Руслан Мустафин watermark
Если не сталкивались с понятием watermark
Watermark (водяной знак) в инженерии данных — это механизм, используемый в потоковой обработке (streaming) для обработки данных, поступающих с задержкой или не по порядку. Он представляет собой метку времени, которая сообщает системе: "данные с более ранним временем возникновения уже гарантированно получены, можно завершать вычисления для этого периода".

Если кратко — отметка времени, которая означает, что данные ДО уже залиты.
Например, если watermark принимает значение 20-04-2026, то это значит, что данные до 20-04-2026, уже залиты.
  • 👍 4
  • ❤‍🔥 1
Post #156 677
Задачка 🤪

Есть таблица-источник, которую мы грузим инкрементально.

В таблице есть два важных поля:
created_dt -- когда запись создана
updated_at -- когда запись последний раз обновлялась

Инкрементальная загрузка работает примерно так:
where created_dt > last_watermark_created_dt
or updated_at > last_watermark_updated_at


То есть мы забираем:
🟢новые записи;
🟢старые записи, которые были изменены после прошлой загрузки.

В какой-то момент появилась задача полностью перелить таблицу с нуля:
🟢очистить target;
🟢загрузить всю таблицу заново;
🟢обновить лог успешной загрузки и выставить watermark.

👇Вопрос:
Какие значения нужно записать в watermark после успешной полной загрузки?
last_watermark_created_dt ❓
last_watermark_updated_at ❓

З.Ы.
Как же хорош GPT стал в генерации картинок

Заходи учиться — бесплатно 🤓
➡️ https://etl-kitchen-book.ru/data/

@etl_kitchen
  • 🤔 6
  • ❤ 5
  • 🐳 3
  • ❤‍🔥 1
Post #155 842
Когда лид сказал, что в легаси подробная документация к коду.
Тем временем документация 🤪

@etl_kitchen
  • 😁 14
Post #154 828
Ларчик-то просто открывался

Когда-то рассказывал, что у меня есть мой домашний сервер для поднятия проектов и для души.
На днях перестал подрубаться к нему remote ssh из VSCode - соединение падает, при этом через powershell все стабильно.

«ну, ща починим» - подумал я и потратил весь день 🤪

Вооружившись Claude, гуглом и собственными кривыми руками начал пробовать:
🟢откатить VSCode до прошлой версии, на ноуте и на самом сервере
🟢переключить useExecServer true/false
🟢чистить ~/.vscode-server раз 10
🟢удалить UFW LIMIT правило на SSH
🟢крутить kernel.io_uring_disabled в sysctl ядра, чем вызвал busy loop и краш Node.js на сервере
и чего только не пробовал, вплоть до подмены Node.js и скачивания пакетов VSCode вручную.
Отчаявшись, решил хотя бы снять бэкапы по живому туннелю.
Но и тут проблема, невероятно медленная скорость и обрывается загрузка файлов, на ноут они попадают уже битые.

Наконец меня осенило попинговать с сервера роутер и увидеть как у меня теряется 80% пакетов.
Перезагрузил роутер, перевоткнул LAN кабель и о чудо! все заработало 🥳

Мораль сей басни такова:
Перезагрузи, кабели перевоткни и потом уже мудри 🤓

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

👇А у вас были случаи, когда часами дебажили, а проблема оказывалась на поверхности?

@etl_kitchen
  • 🤔 8
  • 👍 3
Post #153 811
У вас есть только 10 рублей, соберите себе идеальный конвейер данных 🤪
🟢Источник не меняет схему без предупреждения — 14 рублей
🟢DAG зелёный с первого запуска — 8 рублей
🟢Нормальная документация от предыдущего инженера — 20 рублей
🟢Бизнес не меняет ТЗ после деплоя — 15 рублей
🟢Данные в источнике без дублей — 3 рубля
🟢Мониторинг, который алертит ДО того, как напишет аналитик — 7 рублей
🟢API отдаёт данные ровно так, как написано в документации — 6 рублей
🟢У API вообще есть документация — 9 рублей
🟢Логи, по которым реально понятно что упало — 2 рубля
🟢«Нам нужно срочно» не значит «вчера» — 4 рубля
🟢Никто не пишет SELECT * FROM prod на проде — 5 рублей
🟢Тестовая среда существует и актуальна — 11 рублей
🟢Аналитик не пишет в личку «цифры не бьются» в пятницу в 18:00 — 1 рубль
🟢Инкрементальная загрузка работает и при повторном запуске — 4 рубля
🟢В CSV не прилетает перенос строки внутри поля — 3 рубля
Делитесь наборами 👇

@etl_kitchen
  • 😁 17
  • 🤔 6
  • 🐳 3
Post #151 716
Когда всю неделю на работе разбираешься с парсингом XML, а на выходных решаешь просто отдохнуть и посмотреть телевизор… но у XML другие планы 🤪

@etl_kitchen
  • 😁 16
  • ❤ 1
Post #150 712
Хорошего вечера пятницы!

Обогатил материалами свой сайт, каждый раздел обрел свои квизы и даже задачки 🤪

В поте лица трудилась связка Claude, NotebookLM и меня 🤪

➡️ https://etl-kitchen-book.ru/data/

Появились полноценные материалы по SQL, Python, dbt, Kafka, Data Modeling и многому другому.

Если словите какие-то баги или несостыковки то пишите под этим постом или мне в личку - будем фиксить 😏

За вдохновение спасибо @zasql_python и @strangethemrgrench

@etl_kitchen
  • ❤ 20
  • 👍 8
  • 🐳 7
  • 🔥 3
Post #148 705
Если у вас не получилось установить расширение для dbeaver, то вот вам план Б — скидывайте менеджеру и скажите, что волнуетесь за его долголетие 🤓

@etl_kitchen
  • 😁 13
  • 💯 8
Post #147 803
Можно бесконечно радоваться крутому стэку на работе, как круто ты пишешь код или активно вайбкодишь свое мега уникальное приложение, но все это меркнет перед рабочей задачей «помочь выгрузить данные в эксель» 🤪

Все кто работал с dbeaver наверняка знают, что можно экспортировать данные в csv. Вот только такой способ не подойдет если надо сохранить тип данных json, xml или текстовое поле где есть переносы строк.

Конечно, можно нашлепать решение в python, сделать DAG куда передавать параметром название таблицы и папку Nextcloud, но ведь это нужно реализовать, а еще и научить потом пользоваться!
Это я еще забыл упомянуть про доступы к инструментам 🤪

Не отчаиваемся, все оказалось куда проще, Dbeaver давно умеет выгружать в Excel, нужно всего лишь... нажать:

Справка → Install New Software → выбрать DBeaver Office Integration, поставить галку и пройти шаги установки.

После этих нехитрых манипуляций у нас появится возможность экспортировать сразу в файл excel,при этом результат будет выглядеть ровно так же, как в DBeaver.

@etl_kitchen
  • 👍 28
  • 😁 9
  • 🔥 7
  • 🤔 1
Post #146 651
❌ Словить тоску от ожидаемой блокировки ТГ
✅Впервые в жизни сходить в отпуск на 2 недели

Съездили во Вьетнам туром с прямым перелётом из СПб.
11 часов в самолёте - то ещё удовольствие, но оно того стоило на 100%.

На фото, конечно же, чай 🤓

Осталось вернуться в рабочий режим 🤪
А там и до канала с сайтом руки дойдут, накопилось несколько идей😳

@etl_kitchen
  • 🔥 16
  • 🐳 15
  • 👍 2
Post #144 884
Как 50 байт ломали мой сайт 🤪

В первую очередь благодарю за обратную связь, которую вы мне даете ❤️
А еще зацените какие изменения готовятся на сайте, но это пока небольшой спойлер — https://etl-kitchen-book.ru/data/
(Да, там граф материалов и roadmap в каком порядке изучать, если ты новичок).

Уже несколько месяцев как мой сайт живет на VPS у reg.ru. На первый взгляд все работало стабильно и быстро, но начал получать от вас фидбэк, что сайт недоступен.
Причем странно...
ping проходит, по HTTP отвечает, а HTTPS — висит и таймаут. При этом ошибка не у всех — у кого-то открывается, у кого-то нет.
Начал смотреть доступность сайта (смотри фото Было) и вижу как примерно 75% падают по тайм-ауту 😩.
Вместе с поддержкой reg.ru разобрались. Оказалось, проблема в размере сетевых пакетов 👌

Что произошло?
Сеть reg.ru пропускает пакеты до 1450 байт (это MTU — максимальный размер пакета).
Docker по умолчанию создаёт свои сети с лимитом 1500 байт.
Простые запросы проходят — они маленькие.
А HTTPS-хендшейк (обмен сертификатами при подключении) — больше 1450 байт, и его просто обрезает на уровне сети. Соединение не устанавливается.

🛠 Как починил?
Создал файл /etc/docker/daemon.json:
{"mtu": 1450}


Перезапустил Docker, и обязательно пересоздал контейнеры: docker compose down && docker compose up -d
(просто restart не поможет, нужно пересоздать сети).

и все заработало 🥳

🥳 Дайте знать, если интересно узнать про то как живет сайт и инфраструктура, а то в последнее время у нас только хиханьки, да хахоньки

@etl_kitchen
  • 👍 1
  • 🔥 1
Post #143 786
Всем хорошего отрицания понедельника!

@etl_kitchen
  • ❤ 1
Post #141 891
Kitchen пала, да здравствует Кухня!
Небольшие изменения 🤪

🟢 У нас небольшой ребрендинг и канал сменил имя и обложку. Год должен начинаться не только с нового сайта, но и с нового имени (не важно,что уже почти март) 🤓

🟢 Испробовал Notebook LM и сгенерил кучу вопросов по Greenplum и PostgreSQL, использовал как источники официальную документацию.
Местами очень заковыристые вопросы, погнали вместе тестировать!
➡️ https://etl-kitchen-book.ru/testing/

🤪 — ставь, если ждешь сотни других вопросов по другим темам

@etl_kitchen
  • 🔥 13
  • ❤ 11
  • 😁 1
Post #140
Channel photo updated
Post #139
Channel name was changed to «Кухня данных | Руслан Мустафин»
Post #128 1.03K
Кухня данных | Руслан Мустафин NULL и сравнения в SQL NULL в SQL — это не “ничего”, а неизвестно / отсутствует значение. Поэтому обычное сравнение ломается: SELECT NULL = NULL AS eq; -- NULL (UNKNOWN) И это всплывает в самых неприятных местах: JOIN / MERGE / дедупликации, когда хочется…
Собрал карточки, как работать с NULL в SQL 👌

💾 Сохраняй, чтобы не забыть

Слушаю аудио книги по ведьмаку, озвученные Всеволодом Кузнецовым, и в полном восторге, Заценили отсылку на Геральта?

👇Как у вас прошла масленичная неделя? Надеюсь все поели блины?

UPD
у дата инженеретты была задача связанная как раз с is (not) distinct from
зацените — https://t.me/data_engineerette/545

@etl_kitchen
  • 🔥 28
  • 🐳 8
  • ❤ 3
Older posts →

About this channel

How can I read @etl_kitchen without a Telegram account?
TGViewer shows the public web preview Telegram publishes for Кухня данных | Руслан Мустафин: recent posts, photos, videos and the subscriber count, with no app, login or account.
How many subscribers does Кухня данных | Руслан Мустафин have?
Кухня данных | Руслан Мустафин (@etl_kitchen) has 894 subscribers on Telegram, refreshed roughly every 30 minutes.
Does Кухня данных | Руслан Мустафин know I viewed it here?
No. Public channel previews carry no viewer identity, and TGViewer has no accounts or tracking of what you look up.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →