View in Telegram
Типы timestamps в Data Engineering 2/3 🔸 Особый случай – timestamps в SCD2 таблицах. Created_at надёжно показывает, когда появилась запись, а valid_from/valid_to отвечают за историчность данных. Важно сохранять обе группы дат. Смотри пример:
WITH source_changes AS (
  SELECT *
  FROM (VALUES
    (1, 'Старый адрес', '2024-01-01 10:00:00'::timestamp),
    (1, 'Новый адрес',  '2024-01-01 15:00:00'::timestamp)
  ) AS t(user_id, address, created_at)
),

-- Храним обе группы дат
complete_approach AS (
  SELECT 
    user_id,
    address,
    created_at,                    -- когда создали запись
    created_at as valid_from,      -- когда версия стала активной
    COALESCE(LEAD(created_at) 
      OVER (PARTITION BY user_id ORDER BY created_at) - interval '1' second
             , '9999-12-31'::timestamp) as valid_to     -- когда версия стала неактивной
  FROM source_changes
)

SELECT * FROM complete_approach
ORDER BY created_at;
Зачем хранить обе группы дат: * Created_at нужен для аудита – когда физически появилась запись * Valid_from/valid_to показывают период действия версии * При откате изменений или исправлении ошибок в истории у нас будет полная картина
Love Center - Dating, Friends & Matches, NY, LA, Dubai, Global
Love Center - Dating, Friends & Matches, NY, LA, Dubai, Global
Find friends or serious relationships easily