Москва+7 495 215-10-97
Как преобразовать дату в формате NUMERIC в привычный вид в Superset

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

17.06.2024

2 мин

Статьи

#None
Иван Барченков

Иван Барченков

Эксперт в области performance-маркетинга, BI-аналитики и цифровых технологий с MBA в сфере инновационно-инвестиционного менеджмента. Генеральный директор Medianation, основатель SearchBooster и StreamMyData, автор бестселлера «Библия интернет-маркетолога», признанный «Человеком года» в маркетинге по версии RUWARD 2024.

Опыт работы:
16 лет

Иногда маркетологам и аналитикам приходится сталкиваться с ситуациями, когда в базе данных значения даты хранятся в столбце с типом данных 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.SQLAlchemy мощная и гибкая ORM (Object-Relational Mapper) для Python, которая позволяет разработчикам абстрагироваться от низкоуровневого взаимодействия с базами данных, позволяя работать с данными через объекты Python.Получается, что в поле CUSTOM SQL мы можем вписать некое выражение, которое получить в движок СУБД и будет там выполнено, поэтому важно помнить о том, какие функции поддерживает СУБД, в которой хранятся данные. В моем случае данные хранились в Google BigQuery поэтому мы можем написать следующее выражение:

TIMESTAMP_SECONDS(CAST(created_at AS INT64))
Вписываем SQL функцию в поле CUSTOM SQL

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

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

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

Узнавайте первыми
о полезных материалах и новостях

Другие материалы