Ufall vs Budget - En vanlig datamodell

Mycket ofta jämför vi i en Qlik-app något utfall mot en budget. Vi läser in dels filer som rör utfallet och filer som innehåller budget. Dessa två datamängder har vissa dimensioner gemensamma, t.ex. någon form av tidsperiod och produkt eller kund. Utfallsdata har en mycket högre granularitet - en mer detaljerad nivå - än budgetdata.



Så vad är bästa sättet att skapa en datamodell där vi vill jämföra utfall och budget med varandra? Vi kommer vilja ha grafer & tabeller där man visar och jämför utfall och budget. Vi har i grunden två alternativa modeller: länkade tabeller eller sammanfogad faktatabell.


Länkade tabeller

Länkade handlar som det låter om att vi länkar de två datamängderna vara två olika tabeller i minnet som länkar till varandra med någon form av nyckel. Nyckeln består oftast av de dimensioner som budgeten byggs upp med. Dessa dimensioner finns även i utfallet så att en nyckel kan skapas.



Budget:
Load
    ÅrMånad & '_' & Produkt as ÅrMånad_Produkt,
    ÅrMånad as ÅrMånad_Budget,
    Produkt as Produkt_Budget,
    Budget
from Budget.qvd (qvd);

Utfall:
Load
    ÅrMånad & '_' & Produkt as ÅrMånad_Produkt,
    OrderNr,
    ÅrMånad,
    Produkt,
    Utfall
from Utfall.qvd (qvd);
    

Mellan tabellerna finns det gemensamma nyckelfältet ÅrMånad_Produkt som är en kombination av de två fälten ÅrMånad och Produkt. Om det hade funnits fler gemensamma fält hade även dessa ingått i nycklen. Det beror alltså på vilken nivå ni lägger er budget.


Användaren kan ni göra urval på eller i grafer använda fälten ÅrMånad och Produkt från den undre utfallstabellen. Till exempel ett urval på Produkt=A väljer ut vissa rader i utfallstabellen och via de kvarvarande nyckelvärdena filtreras även budgettabellen.


Vad händer om vi i en graf vill visa budget för kommande framtida månader? Problemet vi får då är att fältet ÅrMånad endast innehåller de värden där det finns utfall. I exempeldata ovan saknas ÅrMånad 202003 i utfallet, men det finns i budget. Således kan inte graf visa budgetvärdet i 202003 och användaren kan heller inte göra ett urval på 202003.


För att lösa detta behöver vi flytta ut fälten till en nyckeltabell som innehåller kombinationen av värden.



Budget:
Load
    ÅrMånad & '_' & Produkt