DWH Temporalita Část 1: Výzva
V uplynulých letech jsem byl konfrontován s požadavkem vytvořit reporting s dimenzemi SCD type 2.
V uplynulých letech jsem byl konfrontován s požadavkem vytvořit reporting s dimenzemi SCD type 2. Ale jelikož v data warehousu obvykle existují 3 nebo více časových os, musel jsem znovu a znovu vyjasňovat, co je vlastně byznysovým požadavkem. Zde se snažím své myšlenky utřídit a dát vám návod pro takové diskuze.
Článek je rozdělen do tří částí: - Definice různých timeline - Vytváření snadno použitelných reportů snížením timeline zahrnutých ve výstupu DWH - Které případy užití činí nezbytným výstup různých timeline
V jednoduchém světě je jen toto zde a teď: přítomnost. Pokud chci zaznamenat vývoj v čase, potřebuji timeline.
Co je temporální dimenze (timeline)? Co je časový řez? Co je SCD Type 2? Jaký je vztah k as-is, as-was, as-of?
V jednoduchém světě je jen toto zde a teď. Tedy přítomnost. Pokud chci zaznamenat vývoj v čase, potřebuji timeline.
Timeline mohu transformovat na bod v čase, pokud ji řeznu na jakémkoli místě.
Pokud teď ale půjdu a opravím svou timeline, mohu časy změny zadat znovu na samostatnou timeline.
Pokud nyní zaznamenám tyto dvě časové osy v úhlu 90 stupňů vůči sobě, dostanu časovou plochu.
Tuto časovou plochu mohu kdykoli zredukovat zpět na časovou osu, pokud svou časovou plochu řeznu v libovolném bodě paralelně s jednou nebo druhou osou.
Takže časovou plochu mohu zredukovat na timeline a tu zase na bod v čase.
Takovým řezům se říká as-of pohledy. Existuje speciální řez, totiž ten v aktuálně platném čase (což není vždy konec timeline): as-is. A další speciální řez, který představuje kombinaci informací v okamžiku události: as-was.
V tomto zjednodušeném příkladu mohu zvolit byznysovou platnost jako timeline a kdy byla tato informace zaznamenána v IT systému jako druhou timeline. Tak máme časovou plochu.
V data warehousingu se však v každém případě přidává třetí časová osa: kdy se data warehouse dozvěděl o nových nebo změněných informacích. Pokud nyní nakreslíte tuto třetí timeline kolmo k existující časové ploše, získáte zjednodušeně řečeno krychli. To je důvod, proč rád mluvím o temporálních dimenzích.
Abych se vyhnul různým problémům s odlišnými terminologiemi, mám rád přístup, kdy jsou různé timeline (jelikož je lze chápat jako dimenze uspořádané v krychli) označovány čísly dimenzí.
-
1d: kdy byl záznam z byznysové perspektivy platný. Podle Snodgrasse citovaného Kaulem „zachycení historie měnící se reality": Valid Time.
-
2d: Capturing time / System Time / Logged Time / Inscription Time / Aproximace pro Assertion Time ve zdrojovém IT systému.
-
3d: Acquisition Time / System Time / Logged Time / Load Time / Inscription Time / Aproximace pro Assertion Time v DWH systému.
Časový řez
Časový řez je úsek na timeline, ve kterém se atributy pro konkrétní a identifikovatelný objekt nemění. Časový řez lze popsat explicitně s počátečním a koncovým datem, nebo implicitně lze časový řez považovat za ukončený podle definice, jakmile začne nový.
U 2d a 3d timeline se naopak předpokládá, že čas nového záznamu automaticky znamená konec předchozího.
Mé osobní oblíbené: 1d: Valid Time 2d: Inscription Time 3d: Load Time
Pointa je, že se vůbec nemusíme shodnout na názvech, jakmile každý ví, která timeline znamená co.
Co tedy znamená SCD Type 2?
SCD type 2 je postup pro dokumentaci nové timeline z informací přijatých v různých časech.
Obvykle se termín používá jako synonymum pro vytvoření 3d timeline v data warehousu. Doba načtení do DWH se obvykle používá pro zahájení nového časového řezu. Implicitně se doba načítání další datové sady pro stejný klíč používá pro ukončení období assertion předchozího záznamu.
Problém je, že existují implementace data warehousu i modeláři, kteří modelují DWH a kteří se ani neptají: kterou timeline zde vlastně reprezentujeme? Je tato timeline vůbec vhodná pro splnění požadavků našeho reportingu? Potřebujeme tuto timeline pro naše vyhodnocování vůbec? Jsou zaznamenané změny pouze opravy, nebo skutečně zaznamenáváme změny v reálném světě?
Z mého osobního pohledu vede tento nedostatek analýzy byznysových požadavků k unáhleným implementacím, ve kterých jsou všechny dimenze ve všech reportech vystupovány ve formě SCD Type 2.
V dalším průběhu této série se pokusím vysvětlit, že v určitých případech to není jen nadbytečné, ale v některých případech to může být i špatně. Zároveň bych rád nabídl alternativní řešení, jak obecně pracovat s časem v Data Vaultu (a Data Warehousu).
Vyzkoušejte Datavault Builder v akci
Živé demo. Upřímné odpovědi, zda je to pro váš tým.
Rezervovat bezplatné demo