Шаг 1 из 9

В этом уроке мы познакомимся с задачами максимально приближенными к тем с которыми работают дата-инженеры в своей повседневной жизни. В качестве примера я решил взять набор данных (dataset) с поездками желтых такси по городу Нью-Йорк. В рамках инициативы по открытым данным, администрация Нью-Йорка выкладывает в открытый доступ множество данных. Если вам интересно узнать какие данные публично доступны, то посетите сайт NYC Open Data.

Мы будем использовать датасет Yellow Taxi Trip Data. Полный датасет за 2019 год весит около 4 гб, скачать его можно, нажав на Export:

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

Как будет выглядеть наш пайплайн:

  • DownloadTaxiTripTask — первый таск, скачивающий датасет согласно переданным параметрам: год и месяц. Ссылка на скачивание имеет шаблон вида: https://s3.amazonaws.com/nyc-tlc/trip+data/yellow_tripdata_2019-01.csv
  • AggregateTaxiTripTask — второй в цепочке таск, выполняющий агрегацию данных. В оригинальном датасете мы имеем уровень детализации по каждой конкретной поездке (всего за 2019 год более 44 млн поездок). Зачастую такая гранулярность ни к чему и требуется предоставить данные в некоторой группировке. Мы будем группироваться по дням и считать сумму чаевых и общую сумму всех поездок в этот день.
  • CopyTaxiTripData2SQLite — финальный таск, выполняющий копирование агрегированных данных в таблицу в базе данных SQLite.

Я выбрал в качестве БД SQLite, чтобы не нагружать дополнительной информацией об установке и настройке БД типа PostgreSQL, MySQL и т.д. SQLite все данные хранит в 1 файле на диске, дополнительно устанавливать что-либо не потребуется. Но в качестве демонстрационного примера в репозитории лежат версии для SQLite и для PostgreSQL.

Вот как будет выглядеть граф зависимостей:

Самое время разобрать каждый таск по отдельности.

Комментарии