View in Telegram
#зачем_нужно Типы 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 часа. А на самом деле это была проблема связи.
Love Center - Dating, Friends & Matches, NY, LA, Dubai, Global
Love Center - Dating, Friends & Matches, NY, LA, Dubai, Global
Find friends or serious relationships easily