Vlastní odhad budoucích tržeb v jazyku DAX a Power BI

Úvodní obrázek

V tomto příspěvku si ukážeme příklad vytvoření měřítka, které bude vracet odhad budoucích tržeb na základě vývoje prodejů v předchozích letech. V měřítku si nejdříve vytvoříme koeficient vývoje tržeb, který bude vycházet z prodejů za poslední rok od posledního dne s prodeji v porovnání s prodeji za stejné období v předchozím roce. Následně použijeme tento koeficient pro odhad budoucích tržeb.

Logika pro odhad budoucích tržeb popsaná v tomto příspěvku je samozřejmě pouze jednou z nepřeberného množství možností, jakým způsobem můžeme predikovat budoucí vývoj prodejů. Čtenář by proto měl brát tento příklad pouze jako inspiraci co vše můžeme v Power BI pomocí jazyka DAX vytvořit, a ideálně aplikovat vlastní logiku pro odhad budoucích tržeb, která bude odpovídat struktuře modelu a požadavkům uživatelů reportů.

Začít můžeme přípravou reportu. Do vizuálu Průřez vložíme roky a měsíce z kalendářní tabulky, a do vizuálu Skládaný sloupcový graf vložíme do hodnot měřítko [Prodeje] a na osu X měsíce.

Vlastní odhad budoucích tržeb v jazyku DAX a Power BI

V Průřezu na levé straně jsou vybrány měsíce duben až prosinec roku 2020. V grafu ale vidíme pouze tři měsíce, a to měsíce duben až červen 2020. Důvodem je že v použitém modelu jsou k dispozici informace o prodejích pouze do 15. června 2020. Pro všechny ostatní dny vrací měřítko [Prodeje] prázdnou hodnotu BLANK. To je důvod proč v grafu nevidíme žádné hodnoty prodejů pro měsíce červenec až prosinec. Všechny dny po 15. červnu 2020 proto budeme v použitém modelu považovat za budoucnost, a právě pro tyto dny budeme chtít získat odhad tržeb.

Odhad tržeb na základě prodejů v předchozích letech

Celý výpočet odhadu budoucích tržeb použitý v tomto příkladu není ze své podstaty nijak složitý, nicméně skládá se z několika na sebe navazujících kroků. Prvním úkolem bude zjistit poslední den pro který máme k dispozici záznamy o prodejích ve faktové tabulce Sales. Na základě tohoto dne si následně vytvoříme proměnnou, která bude obsahovat prodeje za jeden celý rok, a to právě za období od posledního dne s prodeji jeden rok zpět. V dalším kroku budeme chtít získat prodeje za stejný časový úsek, ale v předchozím roce. Jakmile budeme mít prodeje za dvě po sobě jdoucí roční období, spočítáme procentuální rozdíl prodejů v aktuálním roce vůči prodejům v předchozím roce. Tento koeficient následně použijeme pro odhad budoucích tržeb, kde budeme ve všech dnech, které považujeme za budoucnost násobit prodeje za stejný den v předchozím roce právě dříve spočítaným koeficientem. Celý takto popsaný výpočet může vypadat například následovně.

Měřítko:

Odhad tržeb =
VAR DenPosledniObjednavky = CALCULATETABLE(LASTDATE(Sales[Order Date]), REMOVEFILTERS())
VAR DenPosledniObjednavkyStejnyDenLoni = SAMEPERIODLASTYEAR(DenPosledniObjednavky)
VAR ProdejeRokZpetOdPoslednihoDne =
    CALCULATE
    (
        [Prodeje],
        DATESINPERIOD('Date'[Date], DenPosledniObjednavky, -1, YEAR)
    )
VAR ProdejeRokZpetOdPoslednihoDnePredchoziRok =
    CALCULATE
    (
        [Prodeje],
        DATESINPERIOD('Date'[Date], DenPosledniObjednavkyStejnyDenLoni, -1, YEAR)
    )
VAR ProdejeLetosVsProdejeLoni =
    DIVIDE
    (
        ProdejeRokZpetOdPoslednihoDne - ProdejeRokZpetOdPoslednihoDnePredchoziRok,
        ProdejeRokZpetOdPoslednihoDnePredchoziRok
    )
VAR Vypocet =
    CALCULATE
    (
        CALCULATE
        (
            [Prodeje] * (1 + ProdejeLetosVsProdejeLoni),
            SAMEPERIODLASTYEAR('Date'[Date])
        ),
        KEEPFILTERS('Date'[Date] > DenPosledniObjednavky)
    )
RETURN
    Vypocet

V proměnné výpočet je ve vnější funkci CALCULATE() filtr nastavený pouze na dny, které následují za posledním dnem s prodeji. Díky tomu máme jistotu, že se celý výpočet bude zobrazovat pouze pro dny ve kterých ještě nejsou k dispozici informace o prodejích, tedy pro dny které považujeme za budoucnost. Pokud nové měřítko vložíme do původního grafu, výsledek může vypadat například následovně.

Vlastní odhad budoucích tržeb v jazyku DAX a Power BI 2

Na obrázku výše již můžeme vidět hodnoty měřítka [Prodeje] a měřítka [Odhad tržeb] v jednom grafu.

Pokud se zaměříme na měsíc červen 2020, tak v tomto měsíci tvořily tržby za prodeje produktů 3,5 mil. Odhad budoucích tržeb ve stejném měsíci je pak 1,9 mil. Důvodem, proč je měsíc červen 2020 jediný měsíc, ve kterém vidíme jak hodnotu reálných prodejů, tak odhad budoucích tržeb je ten, že v použitém modelu jsou k dispozici prodeje pouze do 15 června 2020. Pro měsíc červen 2020 tak vidíme hodnotu měřítka [Prodeje] 3,5 mil., což jsou tržby za dny do 15. června včetně. Měřítko [Odhad tržeb] pak vrací pro tento měsíc hodnotu 1,9 mil, což je odhad tržeb za všechny následující dny po 15. červnu 2020.

U všech následujících měsíců pak vidíme pouze odhad tržeb, který je vytvořen jako násobek prodejů za stejné období v předchozím roce vynásobený procentuálním rozdílem ročních prodejů od posledního dne s prodeji vůči prodejům za stejné období v předchozím roce. Jinými slovy předpokládáme, že tempo růstu/poklesu tržeb bude stejné, jako tomu bylo v předchozích dvou letech.

č. 104

Komentáře