Данные предварительно загружались в parquet файлы, которые использовал расчетный микросервис dask. Таким образом было сформировано локальное хранилище с параллельными вычислениями без обращения в КХД. Дополнительно брокер запросов (веб сервер Nginx) кэшировал запросы, чем еще более ускорял выдачу повторных запрсов.
Дашборды получали данные из веб сервиса, который, в свою очередь, получал их из КХД. Скорость выполнения запросов была неудовлетворительной.
Быстрая отрисовка визуализаций на дашбордах по источникам с 1 млрд записей для тысяч пользователей, просмативающих данные
Задача была реализована миксом из процедур на python и SQL. В зависимости от сложности обработки применялись нужные средства.
Требовалось выделять «дельту» изменений по предоставляемым текстовым данным
Данные передавались каждый раз за всю историю
Была написана библиотека на python с методом многопоточной параллельной обработки входных данных и последующей записи в базу. Исходный файл читался полностью в оперативную память и делился на части, которые обрабатывались параллельными потоками. Далле каждая обработанная часть информации превращалась в оперативной памяти в csv файл (не на диске) и сохранялась в базу командой COPY
Данные предоставлялись в виде текстового csv файла, в котором каждая строка - отдельный json, данные из которого надо было также обрабатывать до загрузки в базу данных (применение бизнес правил)
Загрузка и обработка большого массива данных ~1млрд. записей
Был использован оркестратор Apache Airflow вместо классического ETL, который управлял задачами обработки данных, написанными на python. В зависимости от сложности и от применимости python или SQL процедур, принималось решение о реализации алгоритмов очистки и обработки данных на разных этапах загрузки данных.
Классические поточные ETL не удобны, поскольку алгоритмы обработки данных довольно сложные и требуется написание кастомных процедур обработки на каком-либо языке программирования
Источники данных очень «грязные»
Справочник компаний собирался алгоритмически из разных частей с логированием ошибок. Применялось около 10 разных алгоритмов, чтобы привести его к нужному виду. Данные, которые не удовлетворяли условиям попадали в лог ошибок и правились вручную в источниках. Другие справочники собирались вручную и назначались фактам по заданным алгоритмам аналитиками
Данные предоставлялись из разнородных источников без возможности использования мастер-справочников. Например, справочник компаний был представлен 4 источниками, а некоторые справочники создавались вручную по ходу проекта.
Интеграция с разнородными источниками
Вызовы