Сидоров Данил
RU EN DE
Telegram

Озеро данных для выгрузок продаж

Загрузка CSV из учётных систем с проверкой качества, слоями от исходника до Parquet и графиками

Обложка кейса «Озеро данных для выгрузок продаж»

Задача

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

Решение

Сделал веб-приложение на Django и pandas. При сохранении файл копируется в слой raw, читается с перебором кодировок и проходит проверки качества. Если проверка не прошла, все слои этой загрузки удаляются, а пользователь видит список ошибок. Иначе данные ложатся в ingest, table и destilled, откуда их берут предпросмотр, графики и выгрузка.

Решённые задачи

  • Сделал загрузку CSV в админке с выбором разделителя
  • Определяю кодировку сам: UTF-8, UTF-8 с BOM или Windows-1251
  • Проверяю файл до записи: повторяющиеся строки и пропуски отклоняют загрузку
  • Раскладываю данные по слоям: исходник, UTF-8 CSV, Parquet с типами и без дубликатов
  • Сделал предпросмотр первых строк набора
  • Сделал конструктор графиков: столбцы перетаскиваются на оси
  • Показываю статистику по столбцу и даю выгрузить набор обратно в CSV

Результат

Битая выгрузка не попадает в данные: её останавливает проверка, и видно, что исправить. Набор можно посмотреть, построить по нему график и выгрузить обратно без Excel. Код открыт на GitHub.

Технологии

PythonDjangopandaspyarrowParquetPlotlyBootstrap

Источники

Ссылки подтверждают цифры в кейсе

Расскажите о задаче

Telegram