MEL Science - отчеты и аналитика

Описание проекта

Разработал годовой финансовый отчет за 2018 год.

Необходимо было в короткие сроки разобраться в сложной структуре базы данных компании. Затем составить сложный SQL запрос для извлечения всех данных по всем продажам за год. Также необходимо было провести дополнительную обработку данных, которую проблематично сделать на уровне SQL запроса. Отчет требовалось предоставить бухгалтерии в формате xlsx для дальнейшей обработки в Excel.

В процессе работы пришлось преодолеть некоторые сложности:

  • Прямой доступ к базе данным не предоставлялся, поэтому все SQL запросы писались и выполнялись в среде Metabase.
  • Структура БД менялась, в результате для данных за разные месяцы использовались разные структуры таблиц.
  • Неочевидная структура базы данных, приходилось много общаться с разработчиками
  • Некоторые необходимые данные отсутствовали в базе данных. Они хранились в отдельных excel файлах, google docs или, в худшем случае, на бумаге.
  • Полученный сложный SQL запрос выполнялся для интервала 1 месяц, но не мог выполниться для года.
  • Выгрузка в excel не работала из-за большого объема данных
  • Платежи проводились в разных валютах

В результате, написал довольно сложный SQL запрос, разделенный на логические блоки с помощью переменных и оператора WITH. Для обработки различных структур таблиц пришлось использовать WHEN/ELSE. В некоторых случаях для обработки данных пришлось использовать pivot и crosstab. Часть данных пришлось ввести вручную с использованием временной таблицы.

Поскольку запрос получился сложным, то он мог выполняться более 10 секунд для интервала в один месяц. Отчет за весь год выгрузить не было возможности. Кроме того, требовалась дальнейшая обработка данных. В результате принял решение выгружать данные по месяцам в csv файлы, затем обрабатывать и собирать в единый отчет с помощью Python скрипта. Также в рамках python скрипта обрабатывались данные, отсутствующие в основной базе. К примеру, данные, хранящиеся в excel файлах и Google Docs.

Также в определенный момент возникла необходимость конвертировать платежи из разных валют и приводить к единой валюте. Конвертацию нужно было проводить по курсу на момент совершения платежа. В результате пришлось написать парсер для получения курсов валют из официальных источников(EUR, RUB, GBP, CAD, MXN).

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

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

Стек технологий: Python, Excel, PostgreSQL, Metabase