kpimaker / metrika_etl_example

Учебный пример ETL-процесса на примере отчетов Яндекс.Метрики

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Учебный пример ETL-процесса на примере отчетов Яндекс.Метрики

Процесс состоит из трех действий:

  1. Выгрузка из Яндекс.Метрики в metrika_report.py. Итоговый файл data/data_metrika.csv.
  2. Обработка базы costs_db.csv в costs_processing.py. Итоговый файл data/data_costs.csv.
  3. Объединение результатов первых двух пунктов в main.py и подсчет столбца cost_per_visit. Итоговый результат складывается в data/joined.csv.

Быстрый старт

Параметры запуска (например, дата выгрузки LOAD_DATE) лежат в файле config.py. Описание параметров и функций приведено в коде.

python metrika_lib.py
python costs_processing.py
python main.py

Технические особенности

Чем такое построение процесса отличается от примеров в jupyter notebook:

  1. Для получения нового отчета добавьте в metrika_lib.py новую функцию по аналогии с функциями attendance и traffic_sources. Скорее всего это будет функция из одной строчки. Обычно библиотеки вроде metrika_lib.py можно сильно упростить с помощью классов, но здесь для учебных целей специально используются только функции.

  2. Обратите внимание на небольшие размеры каждой функции. В случае возникновения ошибки можно проверить каждое действие ETL-процесса, вызвав его с помощью функции с заданными параметрами. И относительно быстро скорректировать код. Также можно внести изменения в код, изменяя только одну функцию:

    • Для усовершенствования запросов к API Я.Метрики изменяйте request_report. Например, иногда сеть мигает или сервис кратковременно недоступен. Можно добавить алгоритм экспоненциальной задержки в request_report, не трогая остальной код.
    • Для изменения формата отдаваемых данных изменяйте reformat_api_report. Здесь конечно не обойдется без проверки последующих отчетов, которые рассчитаны на определенный формат.
    • Для добавления/изменения параметров запроса к API Я.Метрики смотрите make_request_params.
  3. Конфигурация расчета вынесена в отдельный файл config.py. Обычно за запуск отвечает отдельная система запуска и мониторинга ваших скриптов. Можно посмотреть в сторону Airflow. Статья на Хабре об использовании этой системы в Mail.ru.

About

Учебный пример ETL-процесса на примере отчетов Яндекс.Метрики


Languages

Language:Python 55.1%Language:Jupyter Notebook 44.9%