В этом уроке мы познакомимся с задачами максимально приближенными к тем с которыми работают дата-инженеры в своей повседневной жизни. В качестве примера я решил взять набор данных (dataset) с поездками желтых такси по городу Нью-Йорк. В рамках инициативы по открытым данным, администрация Нью-Йорка выкладывает в открытый доступ множество данных. Если вам интересно узнать какие данные публично доступны, то посетите сайт NYC Open Data.
Мы будем использовать датасет Yellow Taxi Trip Data. Полный датасет за 2019 год весит около 4 гб, скачать его можно, нажав на Export:
Но конкретно в этой задаче он нам не нужен, т.к. наша задача — написать Task, который будет скачивать набор данных за конкретный год и месяц. Список с данными разбитыми по годам и месяцам можно увидеть по ссылке.
Как будет выглядеть наш пайплайн:
Я выбрал в качестве БД SQLite, чтобы не нагружать дополнительной информацией об установке и настройке БД типа PostgreSQL, MySQL и т.д. SQLite все данные хранит в 1 файле на диске, дополнительно устанавливать что-либо не потребуется. Но в качестве демонстрационного примера в репозитории лежат версии для SQLite и для PostgreSQL.
Вот как будет выглядеть граф зависимостей:
Самое время разобрать каждый таск по отдельности.