Дмитрий Кузьмин. Инженерия данных
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
Пора поговорить про аналитическое хранилище данных, или Data Warehouse. Ключевое понятие.

Под хранилищем данных понимается машина или кластер машин, целый сервис, который обеспечивает такие функции, как storage и compute (хранение и вычисление).

1️⃣ слева Source Systems - это те самые OLTP системы, файлы и т.п. Отсюда вся транзакционная информация попадает в Data Warehouse.

2️⃣ Data warehouse - центральный квадрат.
Если чуть углубиться, то в решение OLAP хранилище разделено на слои:

- Primary Data Layer - это слой хранилища, куда данные попадают так, как они лежат на источниках (AS IS)

например, сюда попадает таблица пользователей, их траты по картам, по датам

- Core Layer - слой, где над исходными данными провели какие-то действия (очистили, транспонировали, агрегировали и т.п.

здесь могут лежать посчитанные данные по каждому пользователю, например, средние траты в месяц по каждому

- Data Mart Layer - слой витрин данных - ключевой слой для аналитики и моделирования.

Витрина данных, простыми словами, - склейка нескольких таблиц из слоя Core Layer, и срезанных по временному диапазону.

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

3️⃣ BI, аналитика, моделирование- квадрат справа.

Под BI понимаются все системы Business Intelligence, которые строят понятные бизнесу отчеты из данных (дашборды - наборы графиков по интересующим метрикам).

ℹ️ Хранилище может быть обычной БД на машине, кластером машин в различных ЦОД, или в облаке.

Последнее сейчас развивается наиболее активно из-за легкого решения проблем масштабируемости.

P.S. Картинку рисовал сам. Вроде получилось очень наглядно. Продолжить самому рисовать

Если есть вопросы, задавайте. Или просто комментируйте, мне будет очень приятно получать ОС от вас.

#база_знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
Друзья, очень важно соблюдать баланс в жизни, чтобы не словить эмоциональное выгорание.

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

Всем отличных выходных! 😉

#мысли
👍5🔥5
Media is too big
VIEW IN TELEGRAM
🎬 Мой первый опыт с видео - форматом.
Всем хорошей недели!
🔥8😎2👨‍💻1
Чем интересна область data engineering и каковы перспективы этой области?

На ум приходят несколько добровольно весомых пунктов:

1️⃣Стремительное увеличение объемов данных.

Сейчас, как никогда, с каждым днем становится все больше количество тех объемов данных, которые генерируются и хранятся.

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

2️⃣Высокая ценность данных для бизнеса.

Данные стали одним из самых ценных ресурсов для компаний.

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

3️⃣Развитие технологий.

С этим связано появление новых инструментов для работы с данными. Data engineering становится все более востребованной специализацией.

За последние 10 лет технологии сильно шагнули вперед.
Появились облачные технологии и многие компании переходят на них.
Технологии распределенных вычислений (Hadoop и Spark) позволяют обрабатывать огромные объемы информации на кластерах.
Контенеризация и оркестрация (Docker и k8s) позволяют инженерам эффективнее управляться с инфраструктурой данных.

Да, есть best practices, которые будут актуальны еще очень долгое время. Но с другой стороны область крайне быстро реагирует и адаптируется под тенденции времени.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
👉Ввожу новую рубрику #кейсы

Вчера в работе столкнулся с такой задачей:

В .parquet на hdfs в таблице есть поле (значение полностью изменено для блога, но смысл остался):

“R_DUST_SNOW (Запасы пыли (в кг) и снега (в тоннах) на Красной площади [0, 1])»

Необходимо из этого получить:
• поле с чистым названием «R_DUST_SNOW»
• поле с описанием, которое находится после названия в обрамляющих скобках «Запасы … [0, 1]»

Реализовать можно на spark.sql или pySpark.

Задачу сделал, но пришлось перебрать несколько вариантов.

🤝 Было бы круто, если те, кто шарит, в комментах написали возможные решения.

#кейсы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🤔21
Data Lake - Озеро данных

Ранее мы говорили про аналитическое хранилище Data Warehouse. Его достаточно, если данные типизированные, структура данных определена. Такие данные можно использовать для построения отчетности и предиктивной аналитики.

Но что, если данные, которые должны быть обработаны, совершенно разные и неструктурированные (видео, фото, логи, метрики и т.д.)? Такие данные непригодны для аналитики, но могут быть использованы для обучени ML-моделей.

Для этих целей было разработано т.н. Озеро данных. Обычно строится на решении Apache Hadoop - распределенная кластерная система, физически состоящая из множества машин и способных параллельно обрабатывать огромные обьемы данных.

нарисовал 2 рисунка:

На первом рисунке изображена схема использования OLTP систем с Data Lake и DWH.

На втором - визуальное представление использования Data Lake.

Характеристика Data Lake:

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

❗️Проблема Озера данных заключается в том, что если не контролировать поступающие и хранящиеся в нем данные, то ситуация может выйти из-под контроля, и Озеро данных может превратиться в т.н. Болото данных.

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

Как вам мои художественные способности?)

Дополнительно почитать:

1. https://habr.com/ru/amp/publications/595449/

2. https://renta.im/ru/blog/data-warehouse-vs-data-lake-vs-data-lakehouse/

#база_знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Мое обучение по Spark будет с конца августа по конец октября.

Включает в себя:
🔸работу с логами (Kafka)
🔸работа с данными в реальном времени (Streaming)
🔸ML-инжиниринг (обучение моделей)

Пока ничего не понятно, но темы очень интересные.

Сейчас в работе я готовлю данные для data scientists (моделистов). Они используют датасеты для тренировок и обучения моделей.

🔻Круто, что после обучения будет более глубокое понимание процессов смежников.

Про Spark чуть позже подготовлю материал.

#путь_de
👍7🔥4🤝4
Был вопрос от подписчика: «что в первую очередь стоит изучать для DE и куда двигаться потом?»

Пожалуй, разобью ответ также на две части.

Абсолютно точно для начала необходимо погрузиться в:
1. SQL
2. Python
3. Linux

1️⃣Для тренировки SQL, как я упоминал выше, есть пара неплохих курсов. С ними можно разобраться в основах и потренировать написание и чтение запросов. На базовом уровне, пока что без всяких оптимизаций и партицирований.

SQL - хлеб DE. Этот язык нужен почти всегда. Когда вы работаете с БД (базой данных), или с Data Lake через hive (тут используется аналог HQL), или же пишите на Spark.sql.

Как раз, пока я изучаю pyspark, некоторые запросы я пишу на spark.sql.

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

Из практики - есть таблица с идентификаторами и 120 полями. Для этих 120 полей нужно посчитать метрики (min, max, avg, stg, percentile 10,50,90). То есть создать 840 новых полей + названия.

С помощью python это делается довольно просто через генератор списка, приведения к строке и передачи в sql скрипт этой переменной. А если делать руками… а если еще ТЗ поменяется…

3️⃣Linux. Больше всего я работал с ним в контексте распределенного хранилища hdfs. Создание каталогов, перемещение по директориям, записи и удаления паркетов.

Еще владение Linux нужно для настройки и «поднятия»(термин, означающий установку. Также говорят «развернуть») сервисов на удаленных машинах, облаках.

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

#база_знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥75👌4
Друзья, мне очень приятно, что вы поддерживаете меня эмоциями и комментариями в канале!

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

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

#спасибозаподдержку #вашемнениедляменяважно
👍43🔥2
#мысли

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

📚 Обучение - великолепный инструмент развития и прокачки, к которому, в случаем случае, следует обращаться почаще.

Что самое первое приходит в голову, если я скажу работа с базой данных?
Уверен, что это будет набор из трех букв “SQL”.

Это та база, которую нужно знать. Знать и уметь пользоваться, если вы работаете с данными.

Если говорить про вектор, то SQL и ему подобные диалекты можно применять в других инструментах (например, Hive / Spark). Это существенно облегчит в некоторых ситуациях работу.

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

Так и сейчас, в Spark бОльшую часть кода я пишу на spark.sql. Но такие вещи, как создание нового поля с функцией replace() другого поля приходится выполнять на pyspark.

Так, функция за функцией, и уже есть понимание, как в некоторых случаях можно обойтись без spark.sql.

Лучшая учеба происходит в боевых условиях. Когда есть четкая задача, и ты ищешь решение. А если абстрактно изучать теорию без практики, то рано или поздно придешь к вопросу «а зачем и где мне это применить?» Прямо как с Английским языком в школе.

Резюме:
пробуйте внедрить знания на работе в рабочий процесс.

P.S.
А для тех, кто все хочет, но не может сесть за новый материал, есть лайфхак. Пробуйте выделить по 30-60 минут в день. За месяц у вас будет от 15 до 30 часов обучения.

😉 Будет здорово, если вы напишите в комментариях темы / инструменты, которые вызывали у вас наибольшее сопротивление, но потом вы их поняли и начали применять.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🐳3🤝3
Media is too big
VIEW IN TELEGRAM
#база_знаний

ETL
🤜 ELT

Немного рассуждений про сходство и различие подходов.

👌 Что общего?

Извлечение, загрузка, а главное - трансформация данных.

Это может быть удаление дублей, избавление от null значений, вплоть до склейки данных, получения единого DataFrame.

🚫 В чем отличия?

ETL
- как правило, фаза Transform выполняется инструментом ETL на отдельной машине (кластере), нежели где развернуто аналитическое хранилище.

Если говорить про инструменты, это могут быть Pentaho, Informatica. Если говорить про Big Data, обычно используется Spark ⚡️.

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

Подход, проверенный временем. Считается более надежным, но менее гибким. Экспертиза этого подхода накоплена.

ELT

После извлечения данных их грузят в Core Layer аналитического хранилища “As Is” (как есть). И уже непосредственно в нем с помощью процедур и функций, под капотом которых обычно SQL, выполняются те же операции фазы Transform.

Этот подход позволяет загружать даже неструктурированные данные, пользователи уже могу их коснуться.

Подход используют в совокупности с Data Lake / Cloud хранилищами (Озера данных / Облачные хранилища) из-за отсутствия требований структуризации данных.

🔥 Резюме

Общее - трансформация данных.

Различия - порядок, место, технологии и ресурсы трансформаций.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍5👌3🤡2💯1
#кейсы

⬇️ Делюсь с вами одним из рабочих кейсов про необходимость инженеру знать Python, хотя бы базовые конструкции.

https://carnelian-wax-cff.notion.site/Python-for-SQL-Part_01-c4961644291f4aef8b0be0de8e001201?pvs=4

Хабр ведет себя странно - уже около 5 дней держит статью в статусе «Ожидает модерации».
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥3🤝3
#база_знаний

🔤 Переходим от курсов по SQL к реальным СУБД

Освоение SQL на курсах – это важный шаг к карьере в области работы с данными.
Но что делать дальше? Как применить полученные знания в реальных проектах и перейти к работе с настоящими системами управления базами данных (СУБД)?

Помню, как, устроившись на работу в IT, мне пришлось впервые в жизни запустить клиент базы данных. Тогда это был Dbeaver для подключения к СУБД Greenplum.

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

1️⃣Практика на реальных данных.

Лучшее, что новички, прошедшие пару курсов по SQL, могут сделать - установить себе локально БД и начать практиковаться в работе на небольших выборках данных.

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

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

2️⃣Создание собственных проектов.

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

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

3️⃣Популярные СУБД и их особенности.

Не угадаешь, с какой СУБД придется работать.
Можно немного поизучать особенности каждой из них:

• MySQL: Отличается высокой производительностью и используется в основном для веб-приложений.
• PostgreSQL: Известна своей расширяемостью и соответствием стандартам SQL.
• Oracle: Широко используется в корпоративной среде благодаря своей надежности и масштабируемости.
• Microsoft SQL Server: Интегрируется с другими продуктами Microsoft, что делает его популярным выбором для корпоративных приложений.
• MongoDB: Это NoSQL база данных, которая хорошо подходит для работы с неструктурированными данными.

Рекомендую начать с установки и изучения Postgres.

*️⃣Скачать СУБД можно отсюда:
https://www.postgresql.org/download/
Выбираете под свою систему и следуете приказам подсказкам в инструкции.

4️⃣Углубленное изучение SQL и оптимизация запросов.

На курсах, как правило, рассматриваются базовые операторы SQL, такие как SELECT, INSERT, UPDATE и DELETE. В реальных проектах вам придется сталкиваться с более сложными задачами и оптимизацией запросов.

Не бойтесь изучать расширенные возможности SQL, такие как подзапросы, оконные функции и индексы. Обратите внимание на методы оптимизации запросов, чтобы делать их более эффективными и быстрыми.

5️⃣Расширенные возможности SQL.

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

6️⃣Оптимизация запросов.

Оптимизация запросов – это ключевой аспект работы с реальными СУБД. Например, используйте индексы для ускорения поиска данных, избегайте использования SELECT * для уменьшения объема передаваемых данных и применяйте подходящие типы соединений (JOIN). Также полезно изучить план выполнения запросов, чтобы понять, как СУБД обрабатывает ваш запрос и где могут быть узкие места.

#️⃣Резюме.

• Переход от курсов по SQL к работе с реальными СУБД может показаться сложным, но это вполне необходимо и вполне достижимо.
• Практика на реальных данных, изучение различных СУБД и углубленное изучение SQL – это ключевые шаги для успешного перехода.
• Начните с малого и постепенно усложняйте задачи, и вы обязательно добьетесь успеха в этой области.

Успехов в освоении нового!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍74🔥3
🙂 Друзья, всех с окончанием трудовых будней !

На следующую неделю подготовил для вас интересный материал.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝10🔥53
#кейсы

Делюсь с вами очередным кейсом.

Хотя действия, описанные в статье, могут быть очевидны многим, стоит об этом рассказать явно. Кажется, через это все проходят.

https://www.notion.so/e43c34f33f4249258c7233c83abafd78
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥73👍3
Ребят, сделал для вас небольшие тесты.

Больше будет интересно новичкам в области data. Или для тех, у кого кофе-брейк

1️⃣Junior
https://forms.gle/qh5qHswCjBZnFjc37

2️⃣Junior +
https://forms.gle/roGw6TYbZ6x1BTww6

Напишите, понравилось?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥4🤝4
#база_знаний

📚 Пару месяцев назад приобрел книгу «Рецепты Python”. Все как всегда, руки не доходили.

Читая сейчас её пару дней, хочу отметить несколько моментов:

* для чтения книги нужны минимальные знания основных структур
* разбираются 63 базовых навыков программирования
* в каждой теме для большего понимания разбирают задачи
* темы идти от простого к сложному (сейчас я на split / rsplit), а далее будет ООП)

На первый взгляд книга очень полезна. Будет неплохо иметь ее под рукой на работе. Рекомендую)

Традиционно, поздравляю с пятницей, насыщенных и интересных выходных!

🏆 Если вам будет интересно, под пятничными постами можем вкратце делиться успехами за неделю, личными и профессиональными.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥32🤝2
📱Новая фича в разработке - готовлю реструктуризацию блога, чтобы вам было проще дотянуться до любого материала, вышедшего ранее.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥3👏3
#путь_de
#база_знаний

⏱️ Вот уже 2 спринта (спринт = 2 недели, термин используется в командах разработки) я занимаюсь разработкой дашборда на Qlik Sense (это BI инструмент). Раньше только касался инструментов в обучении Karpov.

Изначально Qlik Sense показался мне монстром, с которым предстоит сражаться. Сейчас уже много что освоил :)

📊 BI (Business Intelligence)это набор технологий и процессов, которые помогают компаниям собирать, анализировать и визуализировать данные для принятия обоснованных решений. По сути, BI позволяет увидеть, что происходит в бизнесе, и использовать эти данные для улучшения его работы.

🔗 Затрагивал BI в посте про Data Lake и Data Warehouse

Очень рад, что поработал с этой частью проекта, и дополнительно выделил несколько плюсов:

1️⃣Углубляются знания в аналитике: если вы принимаете участие в BI проектах, это помогает вам лучше понимать потребности аналитиков и конечных пользователей. А также это развивает навыки работы с аналитическими инструментами, базами данных и языками запросов, что позволяет создавать более эффективные и удобные для анализа структуры данных.

2️⃣Появляются и совершенствуются навыки визуализации данных: вы, как Data engineer, работая над BI, осваиваете основы визуализации данных, понимая, как лучше представлять информацию для бизнеса.
Это крайне полезно для создания отчетов и дашбордов, которые помогают в принятии решений.

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

#️⃣Где и как можно начать знакомиться с BI
Я рекомендую Google Data Studio: Это бесплатный инструмент от Google для создания интерактивных отчетов и дашбордов.
Он интегрируется с различными источниками данных, такими как Google Analytics, Google Sheets и другими. На официальном сайте Google Data Studio есть учебные материалы и шаблоны для быстрого старта.

🔗 Google Data Studio

Кто-нибудь уже работал с BI?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥32