Обсудить
бизнес-задачи

Очистка данных экспортируемых в CSV от кода форматирования HTML в Apache Superset

Используя HTML для форматирования, можно добиться красочных визуализаций в Apache Superset. Эта тема подробно раскрыта ранее в нашем блоге в статье «Интерактивная визуализация с использованием HTML в Apache Superset». Но, последствием такого решения является некорректная выгрузка данных в CSV-формат из чарта, так как кастомизация добавляется на уровне запроса к базе данных. Мы разработали дополнение, встраиваемое в Superset, которое решает эту проблему, что будет продемонстрировано в этой статье.
блог о bi, №1 в рунете
Рассмотрим пример, показанный на рисунке ниже. Здесь наглядно видно, как используя HTML можно преобразить визуализацию «Чарта2» к визуализации на «Чарте1».
Допустим, для более детальной проработки аналитику потребовалось забрать данные чартов. Скачать их с CSV-формате достаточно просто. Необходимо нажать не троеточие в правом верхнем углу экрана, затем «Download» и «Export to csv»:
Сохраним данные чартов в CSV-формате и затем загрузим их в excel. Результат показан на рисунке ниже:
Видно, что данные с «Чарта1» выгружаются не совсем корректно, а также есть еще несколько проблем:
  1. Если в таблице присутствует html разметка для цветовой индикации ячеек, то он попадает в итоговый файл;
  2. При открытии CSV в excel:
а) Неправильная кодировка;
б) Разделитель по умолчанию запятая, а необходим точка с запятой.

Можно очистить такие данные на уровне excel, но если требуется неоднократная обработка или массив данных большой, то это существенно увеличит трудозатраты. Бизнес-пользователю такой вариант не может подойти.

Для решения этих проблем было изменено 2 файла: в исходных кодах и конфигурации superset.

Файл superset/utils/csv.py:
Файл superset/config.py:
Выгрузка принимает следующий вид в excel при использовании этого решения:
На данный момент решение встраивается в докер-контейнер, легко переносится из проекта в проект и может быть адаптировано для разных версий Apache Superset.