Модель данных. Про столбец даты-времени (timestamp)

Если говорить про оптимизацию размера модели данных, то чаще других колонок, «под нож» попадают колонки с датой и временем. Это связано с алгоритмом хранения в модели данных — чем меньше уникальных значений в колонке, тем меньше места выделяется под ее хранение (на самом деле это один из факторов, подробнее про оптимизацию будет в будущих постах).

Если судить о столбце по количеству уникальных значений, то timestamp сильно хуже, чем колонка дат, ведь обычно не так много событий происходит в одну секунду. В то время как за один день их может регистрироваться множество.

И, тут вы можете со мной не согласится, но на практике, в подавляющем большинстве случаев, вам не нужен timestamp, а нужна только дата.

Приведу пару примеров.

Сессии пользователей. Вы спросите — а как же я тогда пойму какая из сессий была первая, а какая последняя ? Ответ прост — по id сессии. А на timestamp, в данном случае, опасно завязываться, потому что в ходе «глюков» системы у вас может быть одинаковый timestamp, в то время как id одинаковый по определению быть не может

Начало и окончание работы над задачей. Для определения потраченного времени на задачу же нужен timestamp ? Да, но в модель его тянуть при этом необязательно. Вы можете произвести преобразование на уровне источника данных (если это БД), или в рамках ETL внутри PQ

Чтобы оставить только дату в столбце timestamp — можно просто поменять тип данных в этом столбце на Date, или же выбрать на вкладке Transform опцию Date->Date only

Чтобы узнать разницу между двумя столбцами timestamp выберите оба столбца и на вкладке Add Column выберите опцию Time->Substract

После этого, к получившемуся столбцу можно применить преобразование, чтобы извлечь только дни / часы / минуты (Transform ->Duration -> …)

Последний прием поможет, если, например, оценивать среднее время ответа по заявке

Оставьте комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.