Задача
Выгрузки продаж приходили из разных систем в разных кодировках и с разными разделителями, с повторами и пустыми ячейками. Нужно было складывать их в одно место, не пуская битые файлы дальше, и быстро смотреть данные без Excel.
Решение
Сделал веб-приложение на Django и pandas. При сохранении файл копируется в слой raw, читается с перебором кодировок и проходит проверки качества. Если проверка не прошла, все слои этой загрузки удаляются, а пользователь видит список ошибок. Иначе данные ложатся в ingest, table и destilled, откуда их берут предпросмотр, графики и выгрузка.
Решённые задачи
- Сделал загрузку CSV в админке с выбором разделителя
- Определяю кодировку сам: UTF-8, UTF-8 с BOM или Windows-1251
- Проверяю файл до записи: повторяющиеся строки и пропуски отклоняют загрузку
- Раскладываю данные по слоям: исходник, UTF-8 CSV, Parquet с типами и без дубликатов
- Сделал предпросмотр первых строк набора
- Сделал конструктор графиков: столбцы перетаскиваются на оси
- Показываю статистику по столбцу и даю выгрузить набор обратно в CSV
Результат
Битая выгрузка не попадает в данные: её останавливает проверка, и видно, что исправить. Набор можно посмотреть, построить по нему график и выгрузить обратно без Excel. Код открыт на GitHub.
Технологии
PythonDjangopandaspyarrowParquetPlotlyBootstrap