Иногда маркетологам и аналитикам приходится сталкиваться с ситуациями, когда в базе данных значения даты хранятся в столбце с типом данных NUMERIC.
Выглядит это так: 1627288140
На самом деле это формат даты в формате ISO 8601 для представления дат и времени. Это число представляет собой количество секунд, прошедших с начала эпохи Unix (00:00:00 UTC 1 января 1970 года) до указанного момента времени.
А с точки зрения типа данных СУБД тип NUMERIC позволяет хранить числа с очень большим количеством цифр и рекомендуется для хранения величин, где нам важна точность (непривычная формулировка для тех, кто не знаком с типами данных СУБД).
Для обычного человека проблема такого типа данных для хранения даты становится очевидна, после того, как мы посмотрим на скриншот ниже.
Сразу становится понятным, что это не привычный для нас формат и мы не можем построить графика. Что же делать?
Безусловно, первое, что приходит в голову — изменить формат даты еще до того, когда он попадает в СУБД и записать его в привычном нам виде или же воспользоваться прослойкой из Python и решить задачку так:
import time timestamp = 1597142940 date_time = time.localtime(timestamp) print(time.strftime("%Y-%m-%d %H:%M:%S", date_time))
Вот что выведет данный код.
Но, увы, иногда нам приходится работать с тем, что мы имеем, а именно с форматом даты в поле NUMERIC в формате ISO 8601.
Superset позволяет преобразовать этот формат в привычный нам при помощи встроенных SQL запросов (функций). Чтобы ими воспользоваться, вам нужно нажать на переменную и в появившемся окне выбрать CUSTOM SQL.
Теперь нам нужно вспомнить о том, что Superset обращается к базе при помощи библиотеки SQLAlchemy.
Важно
Получается, что в поле CUSTOM SQL мы можем вписать некое выражение, которое получить в движок СУБД и будет там выполнено, поэтому важно помнить о том, какие функции поддерживает СУБД, в которой хранятся данные.
В моем случае данные хранились в Google BigQuery поэтому мы можем написать следующее выражение:
TIMESTAMP_SECONDS(CAST(created_at AS INT64))
И в результате нам нужно обновить наш чарт и мы увидим привычный формат даты, с которым можем работать.
Помните, что мы всегда можем решить для вас задачи по сбору данных и построению любых, даже самых сложных дашбордов.