Кто такой Data Engineer

6f0943e5f371a18f87019674a21d856b.png

Да, в этих ваших интернетах есть много материалов о том кто такой Data Engineer (DE), в том числе и на самом хабре. Но мне самому захотелось об этом рассказать. Опыт, хоть и небольшой, в этой сфере у меня есть (Сейчас Data Engineer в Сбер Образовании). 

ЭТА СТАТЬЯ НЕ ЯВЛЯЕТСЯ СУПЕР ТЕХНИЧЕСКОЙ, В КОТОРОЙ СТРОГО ВСЕ ПО НАУЧНОМУ. ТУТ Я ОБЪЯСНЯЮ ТЕМУ ПРОСТЫМ ЯЗЫКОМ (по другому не сумею)

Кто он?

Для того, чтобы объяснить кто такой дата-инженер я нарисовал картинку ниже

5df942e837e98931a2fbdb6b48b41edd.png

Что там нарисовано:

Есть разные источники (разные БД, сайты, файлики и др.), дата инженер собирает эти все данные и кладет в БД, дальше уже мастера своего дела строят из этих данных графики и ИИ. 

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

ETL

12dd7070b5e37f4bf6ee2f7913f85e5c.jpg

ETL (Extract, Transform, Load) — это процесс переноса данных из разных источников в одно место, после чего эти данные преобразуются и сохраняются в удобном для анализа или использования виде. Стрелочка «Делает Data engineer» на рисунке выше и являются этим самым ETL

То есть нам (как дата инженеру) нужно взять данные из разных источников (базы данных, файлы, веб-сервисы/API), преобразовать их и сложить все в удобном виде, в правильном формате, «чистыми» в нашу базу данных из которой этими данными уже смогут пользоваться другие специалисты. Ну и, конечно, чтобы это все потом работало без нашего участия

Пример: взять данные по api, распарсить js,   убрать не нужную нам инфу (например клиентов у которых какой-то параметр пустой), а дальше из получившейся таблице и еще нескольких других с помощью sql создать витрину (о них ниже), чтобы потом какой-нибудь дяденька в костюме смог посмотреть на график, который сделан с помощью этой витрины, и принять какое-то важное решение

Про витрины

7117170ca94252b75355f3d2a36a65f4.png

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

Кто их должен строить — писать sql скрипт? Есть 3 варианта 

  • Дата инженер сам узнает что надо и сам пишет скрипт

  • Дата анатилик передает готовый sql дата инженеру

  • Дата аналитик говорит, что нужно сделать (возможно в формате псевдокода), а дата инженер это делает 

В разных местах, возможны разные варианты, поэтому нужно быть готовым ко всему 

Другие задачи

a27f9d496c8272023d7f689cb90a669e.png

Настройка ETL-процессов является основной задачей для DE и большую часть времени обычно он занимается именно этим, но также могут быть и другие задачи:

  • Данные мы ведь кладем в БД, а значит там все должно быть хорошо, порядок, правильные схемы, отсутствие мусора, производительность и все такое, часто за этим следит именно DE

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

  • Не все в этом мире идеально и даже наши ETL потоки, поэтому это тоже нужно отслеживать и бежать их чинить в случаи ошибки

  • Отслеживать качество и чистоту данных. Если DE сказали взять данные от куда-то и положить в БД, а потом оказалось, что данные мусор, то вина DE в этом тоже есть

  • И, конечно, еще куча остальных задач — созваны, чайок с печененками …

Что должен знать Data Engineer

6d54212f27dca6ecfdc2395dd0cc5a16.jpg

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

ОБЯЗАТЕЛЬНО:

  • Базы данных и SQL. Дата инженер работает с данными и поэтому он должен понимать, что такое БД, и уметь доставать от туда нужную информацию с помощью sql. И не просто уметь делать select, но и делать более сложные штуки — where, join, оконные функции, процедуры и другое

  • Python или другой язык программирования. Чаще всего основным языком DE является python, но в некоторых местах пользуются также и другими языками — Java или Scala. Но если вы только начинаете, то достаточно будет знать только python. Уровень, по крайне мере на начальных позициях, не требуется слишком крутой. Знать какие-то основы, api, библиотеки для работы с данными. 

ВСТРЕЧАЕТСЯ РЕЖЕ ИЛИ У ПРОДВИНУТЫХ:

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

  • Знать не только какую-то общую инфу про БД, но и понимать чем одна база данных отличается от другой и где какая нужна

  • Биг дата — Hadoop, Spark и все такое

  • Брокеры сообщений, например Kafka

  • Bi-системы — вряд ли DE будет строить дашборды, но на начальном этапе все возможно

  • Сети, инфраструктура …

  • Понимание бизнеса — ведь крутой программист не просто закрывает таски, он решает задачи бизнеса 

Необходимо еще знать кукую-то общую инфу для большинства программистов — Git, консоль 

Ну, а вообще просто открываете какой-нибудь сайт с вакансиями и смотрите требования

Плюсы и минусы

733a7c7bbe998158fa88853b97a4d9f0.png

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

ПЛЮСЫ:

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

  • Легко прийти, легко уйти. Главными умениями дата инженера является знание python и sql, эти знания нужно и во многих других областях, поэтому не очень сложно как прийти сюда из другой области, так и наоборот уйти в другое место если надоест 

МИНУСЫ

  • Может быть скучно. Другие программисты делают сайты, приложения, ИИ и другие штуки, которые можно пощупать или сказать вау, а результат твоей работы — это табличка в базе данных. Для тех кому хочется видеть результат своей работы в более явном виде, профессия DE может показаться скучной

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

  • Не всегда есть удаленка. Работать удаленно для человека из it — это что-то обыденное, но у тех кто работает с данными не всегда есть такая возможность. БЕЗОПАСТНОСТЬ 

Кратко

Какое нужно образование? — У меня нет профильного образования, но лучше, наверное, чтобы было какое-нибудь связанное с программированием 

Карьерный рост? — CDO можете стать. Это главный по данным в компании

В каких компаниях нужны инженеры данных? — Нужны везде

Полезные ссылки

  • Cтатья на хабре с полезными ссылками

  • Библиотека ссылок по инженерии информационных систем

  • Куча курсов (в основном бесплатно) по python и sql есть на Stepik

Если вдруг понравилась статья

Если вам понравилась статья, то можете подписать на мой телеграм канал https://t.me/datamisha там я о своей работе дата инженера пишу

© Habrahabr.ru