Miért építsünk mindig külön dátum táblát?
Egy on-the-job Power BI képzésen jött elő a következő probléma: Az üzlet kért a belső datás csapattól egy „széles” táblát amely tartalmazza az összes elemzéshez szükséges oszlopot. A datás csapat meg is adta: Benne volt minden tranzakció és a tranzakcióhoz a tranzakció pillanatában tartozó összes jellemző: A tranzakció dátuma, az értékesített cikkek jellemzői, a vevők, a csatorna jellemzői és minden fontos dátum is.
Miután beimportáltuk Power BI-ba, kapásból kiegészítettük az adatmodellt egy külön dátum táblával, úgy ahogy a az nagykönyvben meg van írva. De felmerült kérdésként, hogy miért kell egy plusz dátum tábla, ha a széles tábla tartalmazza az összes szükséges dátum attribútumot, azok szép megnevezését, stb. Teljesen feleslegesnek tűnt egy ilyen jól előkészített tábla mellé beimportálni egy plusz dátum táblát.
Látszólag nem is indokolja semmi. Legalábbis addig nem, amig nem használjuk az idősor kalkuláló DAX függvényeket (DateAdd(), SamePeriodLastYear(), stb) Ezek a függvények ugyanis csak folytonos dátum intervallumon működnek jól, ha lyukak vannak az idősorban akkor hibásan tudnak működni. Márpedig a tranzakciókat tartalmazó táblában lesznek lyukak ha egy adott napon nincs értékesítés.
Mutatom a példát:
Power BI: Miért hozzunk létre szeparált dátum táblát?
A fenti táblázatban az adott napot megelőző napot írtam ki, és tisztán látszik, hogy január 6.-nak nincs előző napja. 2020-ban nem volt január 5.-e? Dehognem. Csak ebben a dátum oszlopban nem volt. Ha külön dátum táblából vettük volna az előző napot, ott lett volna... (Tudom, hogy ha átírnám a képletet a következő alakra: DATEADD('Tábla'[Dátum].[Date], -1, DAY)) akkor jól működne a DAX képlet, de ehhez be kell kapcsolni az auto date/time (Automatikus dátum/idő új fájlok esetében) funkciót, amit by default mindig kikapcsolunk. És a .[Date] és azt csinálná, hogy a Power BI beépített dátum táblájából venné ki az előző napot. Úgyhogy ezzel csak áttolnánk a kutyapiszkot a szomszéd portájára...)
Egy szónak is száz a vége: Minden esetben létre kell hozni az adatmodellben egy külön dátum táblát. Akkor is, ha a tranzakció tábla minden szükséges információt tartalmaz a dátumokról.
Megj.: Most látom, hogy erről a problémáról már 15! évvel ezelőtt is írtam. Nem újkeletű problémáról van szó valószínűleg minden multidimenziós vagy oszlopalapú adatbázis-kezelő így működik, és így is fog működni...
Kővári Attila - BI projekt
POWER BI WORKSHOP
Tudjon meg többet az itt elhangzottakról! Jöjjön el a 2025. február 27.-i Power BI workshopra vagy rendeljen kihelyezett képzést! Részletek >>
Önkiszolgáló BI WORKSHOP
Tudjon meg többet az itt elhangzottakról! Jelentkezzen a 2025. február 20-21.-i Excel Power Pivot videókurzusra! Részletek >>
hozzászólás
JbrImre
h, 10/26/2020 - 08:45
Permalink
úgy ahogy a az nagykönyvben meg van írva
JbrImre
h, 10/26/2020 - 08:49
Permalink
dátumtábla
Kővári Attila
h, 10/26/2020 - 09:12
Permalink
Dátum tábla best practice-ek
JbrImre
h, 10/26/2020 - 09:32
Permalink
dátumtábla
Kővári Attila
h, 11/02/2020 - 08:58
Permalink
Dátum tábla best practice-ek
Új hozzászólás