Az "Early Arriving Facts" adattárház probléma megoldása

A múlt heti „Hiányzó dimenzióelemek kezelése” című cikkben bemutattam egy módszert, amely a ténytábla töltése közben felveszi a hiányzó dimenzióelemet a dimenzió táblába, de arról már nem beszéltem, hogy mi történik akkor, amikor a hiányzó dimenzióelem megérkezik az adattárházba...

Tegyük fel, hogy a ténytábla hivatkozik a 311-es kódú vevőre, de a 311-es kódú vevő nincs benne a dimenzió táblában. A cikkben említett módszer szerint ilyenkor kiosztunk a 311-es vevőnek egy mesterséges kulcsot (legyen ez most pl.: 50) és az így képzett vevőt felvesszük a dimenzió táblába. (például az „Ismeretlen vevő (311)” megnevezéssel)

VevoID VevoCode VevoDesc CsoportCode CsoportDesc
50 311 Ismeretlen vevő (311) N/A N/A

De mi történik, ha a következő betöltéskor megjelenik a 311-es vevő mint Gipsz Jakab a betöltendő dimenzióelemek között?

Ha hierarchiánk változásait az időben nem követjük nyomon (Kimball féle SCD Type 1 historizáció), akkor egyszerűen kicseréljük a 311-es vevő megnevezését Gipsz Jakabra.

De, ha hierarchiánk időbeli változásait nyomon követjük (SCD Type 2), akkor betöltőnk a később befutó információkat úgy értelmezi, mintha az adott elem tulajdonságai megváltoztak volna, és kioszt neki egy új mesterséges kulcsot, majd felveszi a dimenzió táblába

VevoID VevoCode VevoDesc CsoportCode CsoportDesc
50 311 Ismeretlen vevő (311) N/A N/A
51 311 Gipsz Jakab 10 Egyéni vállalk.

Pedig az ismeretlen vevő mindig is Gipsz Jakab volt, csak még nem tudtunk róla. (Early Arriving Fact) Jó lenne, ha ekkor (és csak ekkor) a betöltőnk nem követné nyomon a dimenzió elemek tulajdonságainak megváltozását, és nem hozna létre egy új mesterséges kulcsú elemet, hanem a meglévő elem tulajdonságait módosítaná.

VevoID VevoCode VevoDesc CsoportCode CsoportDesc
50 311 Gipsz Jakab 10 Egyéni vállalk.

 

Inferred member Support

Az integration Services (SSIS) Slowly Changing Dimension task-ja lehetőséget biztosít számunkra, hogy az „ismeretlen elemeket” (inferred member) elkülönítetten kezelje. Azaz minden dimenzióelem változást historikusan nyomon követ, kivéve ha az a dimenzióelem egy ismeretlen elem (inferred member) volt. Ehhez fel kell vennünk a dimenziótáblákba egy oszlopot , amely megmutatja, hogy az adott dimenzióelem hiányos e vagy sem, és az Integration Services (SSIS) SCD (Slowly Changing Dimension) taskjában be kell állítanunk, a hiányos dimenzióelemek historizálásnak tiltását

Kapcsolódó anyagok

Kővári Attila - BI projekt

Új hozzászólás