Дмитрий Кузьмин. Инженерия данных
926 subscribers
47 photos
4 videos
41 links
Путь Data engineer от junior до lead.

Делюсь мыслями, рабочими кейсами, обучением. Блог для junior - middle DE.

🌐 Репозиторий: https://github.com/dim4eg91/DataEngineering/tree/main
📱 Мой профиль: @dim4eg91
📚 Сайт: https://kuzmin-dmitry.ru
Download Telegram
#база_знаний

Почему дату в СУБД и других хранилищах часто записывают в формате строки?

💡 Этот пост будет полезен новичкам, кто только начинает изучать SQL и задумывается, почему даты иногда хранятся не в привычном формате DATE или TIMESTAMP, а в виде строк.

Когда я только погружался в SQL на работе, для меня было болью, если дата была записана в формате строки. Ведь везде на курсах говорят, что дату нужно хранить в DATE формате, и не иначе.

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

Давайте разберемся, какие есть плюсы и минусы в таком подходе - хранить даты в строковом формате в хранилище.

Плюсы:

▪️Универсальность и читабельность. Формат YYYY-MM-DD (ISO 8601) стал стандартом для представления дат. Записав дату строкой, её легко понять как человеку, так и компьютеру. Это особенно важно, когда данные передаются между разными системами.

▪️Минимизация ошибок при парсинге. Системы могут по-разному интерпретировать даты, записанные в числовом формате. Например, 12/11/2023 в одной системе может означать 12 ноября, а в другой — 11 декабря. Формат строки, особенно ISO 8601, помогает избежать таких путаниц.

▪️Совместимость с разными системами. Не все базы данных или приложения умеют работать с типом DATE, особенно старые системы. Строки проще использовать при интеграции с такими системами.

Минусы:

▪️Неправильная сортировка. Строки сортируются по алфавиту, и это не всегда совпадает с хронологическим порядком. Например, '12/31/2023' может оказаться перед '01/01/2024', хотя по времени это не так. Если придерживаться формата YYYY-MM-DD, таких проблем не будет, но в других случаях возможны сложности.

▪️Ограниченные возможности работы с датами. В строковом формате нельзя сразу использовать встроенные функции для дат, такие как вычисление разницы между датами или извлечение дня недели. Для этого потребуется сначала преобразовать строку в DATE или TIMESTAMP.

▪️Ошибки валидации и формата. Строки не защищены от неверных данных. Например, можно ввести '2023-13-01' или '2023-02-30', и система их примет, хотя это некорректные даты. Тип данных DATE сразу бы отклонил такие значения.

❗️Когда стоит использовать строковый формат для дат?

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

Для новичков важно понимать: строковый формат может быть полезен, но лучше использовать типы данных, созданные для работы с датами, если это возможно. Это повысит точность работы и упростит управление данными.

Если работаете с датами в строковом формате, используйте маску ‘YYYY-MM-DD’, тогда проблем с интерпретацией даты, сортировкой и выполнению join возникать не будет.

🖥 Навигация по другим материалам группы.

А как вы предпочитаете хранить даты в ваших проектах дома или на работе?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👨‍💻5🤔3👍22
#мысли

💬 Мой наставник сказал мне пару дней назад, что лучше быть инженером данных с разносторонним кругозором, быть знакомым с множеством технологий, но главное - понимать, как решать поставленную задачу, находить плюсы и минусы подходов, уметь анализировать, какой из них лучше в каждой ситуации. А также не забывать коммуницировать с заказчиками и выяснять их реальную бизнес потребность.

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

Эту мысль сразу сложно понять. Но если ваш кругозор будет широк, а также вы будете в постоянном контакте с бизнесом, то вы не только сможете использовать лучшее решение, но и принесете бизнесу бОльшую пользу, показав разные варианты решения их задачи.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍126🔥42
#курсы
#путь_DE

🔥 Завершил 10-ю неделю обучения по Apache Spark!

Сегодня закрыл еще две лабораторные работы по курсу Apache Spark для Data Engineering, которые необходимы для получения сертификата с отличием — и закрыл их первым в потоке! 🚀

💡 Лаба 7: Обучение модели на тестовых данных и применение её к данным, поступающим из Kafka с помощью Spark Streaming, с записью результатов обратно в Kafka.

📊 Лаба 8: Улучшение модели и её обучение, запись результатов в индекс Elasticsearch и создание дашборда в Kibana для визуализации и мониторинга работы модели.

Остались всего пара теоретических тестов по Streaming и ML, и — заветный сертификат уже близко! 🏆

Курс оказался настоящим испытанием, не зря его называют «Путь героя». Сложные задачи, огромное количество новых знаний и опыта. Но на этом приключение не заканчивается! Впереди — внедрение знаний в реальных проектах. Как мы знаем, в IT навыки быстро теряются, если их не использовать. Так что вперед, к новым вызовам!

🔸Intro
🔸Итог 2 недель
🔸Итог 4 недель
🔸Итог 6 недель
🔸Итог 8 недель

Друзья, всех с пятницей, хороших вам выходных! А я пошел отмечать вкусным кофе ☕️
🔥8👏6🏆3🤩1
Нетворкинг — это невероятно важная вещь, особенно в нашем быстроразвивающемся мире. Недавно я сам в этом убедился, познакомившись с аналитиком из Тинькофф, Сашей.

Он прошел путь от стажера до миддла+ всего за два года и теперь ведет свой крутой блог про аналитику.

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

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

Залетаем за полезными материалами:

Как лгать при помощи статистики — обзор книги о том, как правильно (и не очень) интерпретировать данные и где нас могут вводить в заблуждение цифры. Книга вышла еще в 1954 году, но темы остаются актуальными до сих пор.

Почему p-value = 0.05? — отличный разбор того, почему в статистике часто используют этот порог и когда его стоит менять. В бизнесе, науке и повседневной аналитике!
👍53🔥3👌1
This media is not supported in your browser
VIEW IN TELEGRAM
#база_знаний

🛠️ Культура разработки и Git: почему это важно для DE?


Если вы разработчик, скорее всего, вы используете Git — это требует сам процесс разработки. Но если вы Data Engineer, насколько тесно вы с ним работаете? Требует ли ваш рабочий процесс активного использования Git?

Я не говорю о том, чтобы просто загрузить в Git финальную версию кода для релиза, а о полноценной разработке, коммитах и code review со стороны коллег. Это не только защищает ваш код от случайных ошибок, но и помогает избежать ситуации, когда внесенные изменения ломают продакшн. 🧩

Вот это и есть культура разработки. Каждое решение стоит коммитить, оставлять историю изменений, чтобы потом можно было отследить, что и зачем менялось. Если версия в проде отличается от версии в вашем Git, могут возникнуть большие проблемы. Без контроля версий это может стать головной болью — особенно при поиске причин неисправностей и откатов. 😬

В моей предыдущей команде предпринимались слабые попытки внедрения Git, но мотивации, кажется, не хватало — "Зачем? Всё и так работает!".

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

Это удобно, полезно вам и коллегам. Учитесь и используйте Git как инструмент, который укрепит вашу культуру разработки!

🔗 Ссылки:

Github
Теория
Тренажер
👍113👌2💯2
🙂 Друзья, мне очень важно ваше мнение о том, насколько вам понятны мои материалы по инженерии данных.

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

Пожалуйста, пройдите короткий опрос — это поможет мне улучшить блог.

https://forms.gle/V4a3zgP1pkBzzc6a6
👍93👌3🤝1
Спасибо всем, кто принял участие в опросе! Ваша обратная связь очень важна для меня, она помогает делать контент более полезным и понятным.

Благодаря вашим ответам я увидел, на каких темах стоит сделать акцент и какие аспекты требуют более глубокого раскрытия.

Буду работать над новыми материалами, которые помогут лучше понять инструменты, используемые в Data Engineering, и разобрать их применение на реальных примерах.

Оставайтесь на связи и следите за обновлениями, а те, кто еще не прошел, уделите все пару минут вашего времени 😉
👍9🤝3🔥2👌1
#материалы

Уровень SQL, необходимый Junior Data Engineer для входа в профессию


Знание SQL — ключевой навык для Data Engineers, и на уровне Junior важно уверенно владеть базовыми операторами, уметь писать и оптимизировать запросы для различных бизнес-задач.

🔗 В этой статье я рассмотрел примеры задач, с которыми часто сталкиваются Data Engineers, — от анализа клиентской активности до сегментации и построения профилей для маркетинга.

Эти примеры помогут вам понять, какие SQL-навыки необходимы для успешного прохождения собеседования и работы в роли Junior DE.
👍23🔥4👏2😍1💯1👨‍💻1
#материалы

📊 Понимание реляционной модели данных

Реляционная модель — это важная основа, на которой строится работа с данными в большинстве современных систем управления базами данных (MySQL, PostgreSQL, Oracle и др.). Эта важная тема помогает хранить данные в виде таблиц, связанных между собой с помощью первичных и внешних ключей, обеспечивая целостность, гибкость и удобство анализа. Понимание реляционной модели критически важно для эффективной работы с данными и создания надёжных SQL-запросов.

В статье разобраны основные понятия модели: таблицы, атрибуты, кортежи, виды связей (один ко многим, многие ко многим, один к одному), а также топ российских компаний, использующих реляционную модель данных.

🔗 Об этой модели данных в статье репозитория
👍13🔥7👏21
#материалы

⚙️ Когда вы освоили SQL и разобрались с реляционными базами данных, самое время переходить к автоматизации!

Можно попробовать создать простой ETL прямо на вашей машине — без сложного ПО и оркестраторов, используя только SQL и встроенный cron. Это отличное упражнение для погружения в задачи автоматизации данных, ведь такой ETL-процесс поможет вам структурировать и автоматизировать регулярные операции с данными.

В статье я рассказываю:

🔸Как настроить cron для автоматического запуска SQL-скриптов
🔸Как ETL помогает структурировать процесс обработки данных
🔸Почему этот подход полезен для начинающих специалистов

Подробнее — по ссылке на статью

Насколько вам больше нравится новый формат постов? Ответ принимается реакциями 🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22👍62👏2😍1
Media is too big
VIEW IN TELEGRAM
Друзья, рад представить вам свой курс по SQL на Stepik! 🎓

Что вас ждет:
Основы SQL — от простых SELECT до построения витрин данных;
📚 Пошаговые уроки с видеолекциями, конспектами, понятными примерами и практическими заданиями;
💡 Удобный формат обучения с тренажерами и моей обратной связью;
📢 Выделенная закрытая группа в телеграм.

😎 Присоединяйтесь! Начнем ваш путь в Инженерию данных вместе.
P.S. Отключайте VPN при оплате. 👀
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👏5👍4😁2🤔211
Различные подходы загрузки данных в DWH.

🔖В прошлом посте мы рассмотрели, как автоматизировать загрузку данных с помощью cron.

Теперь разберем три основных подхода:
1️⃣Full Load
2️⃣Incremental Load
3️⃣Delta Load.

Какой выбрать? Всё зависит от ваших задач и объемов данных.

В статье разберу их плюсы, минусы и области применения!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍43👏3👨‍💻1
Друзья, рад поделиться с вами крайне полезным сайтом. Он для всех, кто хочет развиваться в Data Engineering ☝🏻
👍43🔥2
Forwarded from Data Engineer Jobs
Друзья, рад сообщить о запуске сайта DataEngineers.pro, созданной мною для всех, кто интересуется Data Engineering! 🚀

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

Основная функция сайта — агрегировать учебные и другие полезные справочные материалы. Есть функция отображения вакансий, но она пока простая. Вакансии активно публикуются на моём Telegram-канале — https://t.iss.one/data_engineer_jobs

В будущем, возможно, появится Telegram-рассылка вакансий с учётом заданных пользователем параметров. Материалы сайта будут постоянно дополняться.

А пока на сайте вы найдёте:
Курсы: Рекомендуемые программы обучения для начинающих.
Техностек: Информация об инструментах, таких как SQL, Spark, Airflow и многих других
Библиотеку ресурсов: Полезные статьи, книги, видео, подкасты и Telegram-ресурсы.
Вакансии: Раздел для тех, кто ищет работу.
Менторы: Найдите наставника или станьте им.

Возможно, появятся ещё какие-то интересные идеи...

Пишите мне в ЛС @storm_de, чтобы:
- Подкинуть предложения и идеи!
- Сообщить о багах на сайте.
- Попросить добавить информацию о вас как о менторе, дата-инженере, блогере, разместить вакансию и т. д.

Буду рад любым обращениям!
Также вы можете поддержать мои усилия монетой. 💙
🔥185👍3🤯1
👨‍💻 Как я подружился с командной строкой и перестал её бояться

Ещё в конце прошлого года командная строка казалась мне чем-то страшным. Черный экран и куча странных команд немного пугали. Но работа Data Engineer без CLI просто невозможна. Как раз в то время поступил на Karpov.course по своему направлению и начал активно использовать CLI.

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

Напротив, я понял, что это один из самых удобных и мощных инструментов в арсенале инженера данных. Делюсь своим опытом и тем, как я научился её использовать.

Зачем вообще нужна командная строка?

Когда начал разбираться, понял, что без CLI сложно представить работу в этой сфере:

1. Работа с серверами. Всё, что связано с SSH, управлением файлами или настройками, делается через терминал.

2. ETL и автоматизация. Скрипты, планировщики задач, обработка данных — всё это удобнее через командную строку.

3. Инструменты Big Data. HDFS, Spark, Hive — многие из них просто требуют знаний CLI.

Как освоиться и не бояться CLI?

Первое, что помогло — это осознать, что ошибаться нормально. Сначала боялся, что случайно что-то удалю или сломаю. Но позже понял: если действовать в пределах разумного и тренироваться в безопасной среде (например, на виртуальной машине или в Docker), то ничего страшного не произойдёт.

Вот ещё несколько шагов, которые реально помогли:

1. Начал с малого
Самое простое: научился работать с файлами и папками. Использовал команды вроде ls, cd, mkdir, cp, rm. Потом добавил чуть сложнее: grep для поиска, cat для просмотра логов.

2. Записал несколько "читов"
Я завёл себе заметку с полезными командами, которые использую чаще всего. Это спасало, когда забывал синтаксис.

3. Освоил справку (man)
Когда не понимал, как работает команда, просто набирал man <команда>.

4. Буквально недавно дополнительно начал разбираться с Docker. Он оказался идеальной песочницей. Создавал контейнеры, пробовал удалять файлы, редактировать конфиги, перезагружать процессы. Если что-то шло не так — просто перезапускал контейнер.

Ключевые техники, которые освоил

1. Пайпы и перенаправления
Команды можно комбинировать:
cat file.txt | grep "ERROR" > errors.log


Так я быстро анализировал логи и сохранял результат в отдельный файл.

2. Alias
Начал создавать сокращения для часто используемых команд.
alias ll="ls -la"


Теперь вместо длинной команды просто пишу ll.

3. Автоматизация с Bash
Освоил основы скриптов. Например, вот скрипт, который удаляет файлы старше 7 дней:
#!/bin/bash
find /path/to/files -type f -mtime +7 -exec rm {} \;


4. Тренировался на реальных задачах
* Подключался к серверам через SSH.
* Скачивал логи и анализировал их.
* Автоматизировал простые задачи: от резервного копирования до мониторинга процессов.

Что я понял за это время?

Командная строка — это не враг, а инструмент. Чем больше с ней работаешь, тем проще и привычнее она становится. Если вы ещё боитесь, начните с малого, потренируйтесь в песочнице вроде Docker, заведите список полезных команд.

Сейчас я работаю с терминалом почти каждый день, и он больше не пугает. Наоборот, стало понятно, что CLI — это мощь и скорость.

А как у вас с командной строкой? Что уже умеете? Делитесь в комментариях! 🚀
👍284🔥3👨‍💻2
🧑‍💻 Не программируйте в вакууме: как дома освоить базы данных?

Если вы только начинаете свой путь в Data Engineering или хотите углубить навыки работы с базами данных, есть несколько простых и эффективных способов:

🔸Установить PostgreSQL локально
🔸Попробовать облачные базы данных
🔸Освоить Docker

Так что выбрать?

В статье я рассказываю о каждом варианте, делюсь плюсами, минусами, полезными советами для старта и своим опытом.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍95🔥3🤝1
▶️ Кейс про связь BI, SQL и Airflow

Работаю с BI-инструментами уже 2-3 месяца и постепенно начинаю видеть, как это дополняет работу дата-инженера. Недавно разбирал интересный кейс: автоматический расчет данных, ручное обогащение и построение актуального отчета в Qlik Sense на основе SQL и оркестрации в Airflow.

🔹 Что это дало?

1️⃣Понимание бизнес-смысла: важно не просто строить пайплайны, а понимать, как данные влияют на решения.
2️⃣Более глубокое понимание BI: визуализация помогает увидеть конечный результат работы и получить обратную связь от бизнеса.
3️⃣Полный цикл данных: от загрузки и обработки до наглядного отображения в отчетах.

🎯 Вывод: Дата-инженеру полезно освоить BI и немного глубже погрузиться в потребности бизнеса. Это помогает лучше понимать конечный продукт и ценность данных, над которыми мы работаем.

А как у вас с BI? Пробовали строить отчеты или работать с визуализацией? Делитесь опытом!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍4🤔3😐2👨‍💻21
#путь_DE

🔥 Почему важно учиться на реальных кейсах?
Многие новички в Data Engineering считают, что достаточно выучить SQL-синтаксис, Spark-трансформации или теорию о хранилищах данных. Как-то давно мне запомнилась фраза: «В теории можно обойтись без практики. На практике - нельзя»

💡 Реальные кейсы — это ключ к глубокому пониманию. Почему?

1️⃣Связь с реальной жизнью:
Часто учебные примеры слишком упрощены: одна таблица, простые запросы. В реальной работе вы столкнётесь с ситуациями, когда у вас:
• Несколько таблиц с огромным количеством данных.
• Сложные связи, которые нужно оптимизировать.
• Неоднозначные и часто непонятные требования от бизнеса.

Решая кейсы, вы учитесь справляться с этим заранее.

2️⃣Ошибки = опыт:
На реальных задачах вы неизбежно совершите ошибки: что-то не сработает, запрос выполнится слишком долго или окажется неверным результат.

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

3️⃣Готовность к собеседованию:
HR и технические специалисты ценят кандидатов, которые не просто «знают», но и умеют применять. Если у вас есть опыт решения реальных кейсов, это ваш козырь на собеседовании.

💼 Пример:
На собеседовании вас могут спросить:
“Как бы вы организовали ETL для обработки данных о продажах?”

Если вы решали кейсы, вы уже знаете, как спроектировать процесс, выбрать инструменты и оптимизировать запросы. У вас уже есть опыт, и это сразу будет видно.

🚀 Мой совет:
Не бойтесь сложных задач. Берите кейсы, даже если они кажутся трудными. На моём курсе, помимо основ SQL, итоговый проект приближен к реальной задаче DE, чтобы вы были готовы к работе уже после обучения.

А как вы учитесь на практике? Пишите в комментариях 👇
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥4🤔3👨‍💻1🤝1
Какие антипаттерны вы встречали в SQL и Spark? 🤔

Вот пример из SQL:

Подзапросы вместо JOIN там, где это не нужно

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

🚫 Антипаттерн:

SELECT first_name, last_name,
(SELECT COUNT(*) FROM payments WHERE payments.client_id = clients.client_id) AS payment_count
FROM clients;


Более правильно использовать JOIN:

SELECT c.first_name, c.last_name, COUNT(p.payment_id) AS payment_count
FROM clients c
LEFT JOIN payments p ON c.client_id = p.client_id
GROUP BY c.client_id, c.first_name, c.last_name;


Какие антипаттерны в SQL и Spark вы встречали?
Поделитесь своим опытом! Интересно собрать список того, чего точно не стоит делать, чтобы избежать проблем с производительностью и читаемостью кода.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12👌3🤝2
🎄 Друзья, с наступающим Новым годом!

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

P.S. Я ушел на каникулы, всем хорошего отдыха, друзья!
14🎉7🎄72🤝1