Трансформируем ваши данные в прибыль

Пн — Пт: с 10:00 до 19:00

ГлавнаяБлогКак преобразовать дату в формате NUMERIC в привычный вид в Superset

Как преобразовать дату в формате NUMERIC в привычный вид в Superset

3 минут(ы)

Иногда маркетологам и аналитикам приходится сталкиваться с ситуациями, когда в базе данных значения даты хранятся в столбце с типом данных NUMERIC.
Выглядит это так: 1627288140

На самом деле это формат даты в формате ISO 8601 для представления дат и времени. Это число представляет собой количество секунд, прошедших с начала эпохи Unix (00:00:00 UTC 1 января 1970 года) до указанного момента времени.

А с точки зрения типа данных СУБД тип NUMERIC позволяет хранить числа с очень большим количеством цифр и рекомендуется для хранения величин, где нам важна точность (непривычная формулировка для тех, кто не знаком с типами данных СУБД).

Для обычного человека проблема такого типа данных для хранения даты становится очевидна, после того, как мы посмотрим на скриншот ниже.

Пример вывода формата NUMERIC в табличном виде в Superset

Сразу становится понятным, что это не привычный для нас формат и мы не можем построить графика. Что же делать?

Безусловно, первое, что приходит в голову — изменить формат даты еще до того, когда он попадает в СУБД и записать его в привычном нам виде или же воспользоваться прослойкой из Python и решить задачку так:

import time

timestamp = 1597142940
date_time = time.localtime(timestamp)
print(time.strftime("%Y-%m-%d %H:%M:%S", date_time))

Вот что выведет данный код.

Python

Но, увы, иногда нам приходится работать с тем, что мы имеем, а именно с форматом даты в поле NUMERIC в формате ISO 8601.

Superset позволяет преобразовать этот формат в привычный нам при помощи встроенных SQL запросов (функций). Чтобы ими воспользоваться, вам нужно нажать на переменную и в появившемся окне выбрать CUSTOM SQL.

Открытия окна CUSTOM SQL при клике на поле в Superset

Теперь нам нужно вспомнить о том, что Superset обращается к базе при помощи библиотеки SQLAlchemy.

Получается, что в поле CUSTOM SQL мы можем вписать некое выражение, которое получить в движок СУБД и будет там выполнено, поэтому важно помнить о том, какие функции поддерживает СУБД, в которой хранятся данные.
В моем случае данные хранились в Google BigQuery поэтому мы можем написать следующее выражение:

TIMESTAMP_SECONDS(CAST(created_at AS INT64))

Вписываем SQL функцию в поле CUSTOM SQL

И в результате нам нужно обновить наш чарт и мы увидим привычный формат даты, с которым можем работать.

Итоговое преобразование данных в читаемый вид даты

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

Преобразование NUMERIC даты в читаемый формат

Откройте для себя руководство по работе с датами в Superset