#зачем_нужно
Типы timestamps в Data Engineering 1/3
🔸 Сегодня разберём такую базовую, но важную штуку как timestamps в данных. Казалось бы, что тут сложного – просто метки времени. Но их бывает несколько видов, и путаница между ними может создать серьёзные проблемы.
В работе с данными встречаются разные timestamps. Самые частые – это created_at* (когда данные появились) и modified_at (когда изменились). В Data Warehouse часто увидишь loaded_at (загрузка в хранилище) и processed_at (обработка).
Реже, но в особых случаях пригодятся sent_at (отправка) и received_at (получение). Они важны в распределённых системах, где критична точность отслеживания движения данных или есть существенные задержки в передаче.
* конечно же, названия полей могут быть какими угодно, улови суть
🔸 Давай рассмотрим простой пример. У тебя мобильное приложение, которое собирает данные о действиях пользователей. Вот как будут различаться timestamps:
WITH user_actions AS (
SELECT *
FROM (VALUES
('action1',
'2024-01-01 12:00:00'::timestamp, -- created_at (пользователь нажал кнопку)
'2024-01-01 15:30:00'::timestamp, -- sent_at (телефон был офлайн 3.5 часа)
'2024-01-01 15:30:02'::timestamp, -- received_at (задержка сети 2 сек)
'2024-01-01 15:35:00'::timestamp -- processed_at (очередь обработки 5 мин)
)
) AS t(action_id, created_at, sent_at, received_at, processed_at)
)
SELECT * FROM user_actions;
Видишь разницу? Если использовать только processed_at, можно подумать, что пользователь бездействовал 3.5 часа. А на самом деле это была проблема связи.