Časová inteligence v DAX: Jak dynamicky vybrat počáteční období

V tomto blogovém příspěvku se budeme zabývat některými problematickými problémy v časové inteligenci, zejména těmi, které jsou způsobeny týdenní granularitou a problémy, které mohou být způsobeny nepravidelným počtem týdnů v roce. K získání přesné časové inteligence v jazyce DAX použijeme offsety.

Dnes pro vás máme zajímavý scénář. Nedávno se to několikrát objevilo na fóru LuckyTemplates. Lidé chtěli udělat vizuál (což by mohl být spojnicový graf nebo sloupcový graf) a dynamicky jej měnit k datu zahájení. Celé video tohoto tutoriálu si můžete prohlédnout ve spodní části tohoto blogu.

Časová inteligence v DAX: Jak dynamicky vybrat počáteční období

V tomto případě jsme použili stejný soubor dat, který jsme zpracovali pro průměrnou spotovou cenu za barel ropy . Namísto toho, abychom vždy začínali na začátku v lednu, jsme chtěli mít možnost kliknout na vizuál, změnit jej na jiné datum zahájení, ale vždy zobrazit data za jeden rok.

Obsah

Ukázkové scénáře časové inteligence v DAX

Existuje několik důvodů, proč byste mohli chtít tuto techniku ​​provést. Můžete to použít, pokud máte metriku, která se neustále upravuje, pokud jde o způsob jejího výpočtu. Možná budete chtít zobrazit pouze data z období přenastavení dopředu.

Dalším důvodem, proč to použít, je, pokud to chcete vizualizovat animovaným způsobem. To v podstatě vezme vaše data a zobrazí je dynamicky, jakmile kliknete na přístup ke hře.

Časová inteligence v DAX: Jak dynamicky vybrat počáteční období

V tomto vizuálu můžeme změnit počáteční datum měsíc po měsíci, abychom ukázali, jak se mění v průběhu 12 měsíců v průběhu času. Toto je zajímavý a užitečný vizuál pro různé obchodní případy, ale teoreticky představuje také řadu klíčových problémů souvisejících s DAX a datovým modelováním.

Pojďme do LuckyTemplates a podívejme se nejprve na náš datový model. Jedná se o opravdu jednoduchý datový model s rozšířenou tabulkou dat a tabulkou spotových cen propojenou s daty.

Časová inteligence v DAX: Jak dynamicky vybrat počáteční období

Použití offsetů pro časovou inteligenci v DAX

Jedna z věcí, na kterých budeme pracovat, jsou offsety . Posuny v tabulce rozšířených dat se počítají dynamicky. Pokaždé, když je sestava aktualizována nebo otevřena, prochází kódem M. Například v měsíčním offsetu přiřadí aktuální měsíc 0, předchozí měsíc -1 a dva měsíce zpět -2. Při pohledu do budoucna přiděluje dalšímu měsíci +1 a na dva měsíce v budoucnu +2.

Jedná se o jednoduchý koncept, ale neuvěřitelně výkonný, když pracujete s časovou inteligencí v jazyce DAX a pracujete s měsíci , čtvrtletími a týdny . Pokud nepoužíváte offset, někdy to ve vašich výpočtech vytváří značné množství složitosti.

Použití offsetů znamená použití souvislé řady čísel, kde návrat za měsíc je vždy -1 a postupný měsíc dopředu je vždy +1 bez ohledu na to, kde v roce se nacházíte.

Implementace strategie Rubber Duck pro časovou inteligenci v DAX

V minulosti jsem mluvil o gumovém duckingu , což je verbalizace vaší strategie nahlas, než začnete psát svůj DAX.

Časová inteligence v DAX: Jak dynamicky vybrat počáteční období

Přemýšlím nahlas, jak to zvládnu z měsíčního kontextu pomocí časové inteligence v DAX. Začal bych něco na základě vybraného roku a měsíce a vybral bych ty pomocí odpojené tabulky, protože když se nad tím zamyslíte, každý další výběr bude zahrnovat křížení let (s výjimkou ledna).

Řekněme, že chceme 12 měsíců počínaje březnem, skončíme s alespoň dvěma měsíci v následujícím roce. Pokud použijeme připojený slicer, můžeme filtrovat pouze pro daný rok a nebudeme moci filtrovat do dalšího roku.

Sklizeň offsetů od data zahájení

Udělejme to s připojenou tabulkou pro měsíc i rok. Nejprve musíme sklidit první offset, který se týká počátečního data.

A pak chceme posunout tento offset dopředu o 12 měsíců a pak se podívat pouze na data, která jsou v rámci tohoto souboru offsetů. Dovolte mi, abych vám ukázal, jak to vypadá v jazyce DAX.

Výpočet měsíčního rozsahu

Toto je naše míra pro měsíčník v rámci rozsahu , kde vybíráme náš rok (který jsme sklidili z tabulky odpojených roků) a náš měsíc (který jsme sklidili z tabulky odpojených měsíců).

Máme také tento další parametr, kde pokud není proveden žádný výběr, bude výchozí leden. Tento parametr je primárně určen pouze pro účely ladění.

Časová inteligence v DAX: Jak dynamicky vybrat počáteční období

Výpočet Počátečního a Koncového měsíce offsetů

Podívejme se na offset počátečního měsíce pomocí výpočtu MAX offsetu. Odebereme všechny filtry v tabulce dat a filtrujeme až na vybraný měsíc a vybraný rok. Pro každý měsíc by měl existovat pouze jeden posun, který odpovídá danému měsíci a roku.

Časová inteligence v DAX: Jak dynamicky vybrat počáteční období

Od tohoto okamžiku můžeme vzít kompenzaci na konci měsíce , což je pouze kompenzace počátečního měsíce + 11 měsíců.

Časová inteligence v DAX: Jak dynamicky vybrat počáteční období

A pak se podíváme na každé vybrané datum a určíme, zda spadá do offsetu počátečního měsíce a offsetu na konci měsíce. pokud spadá do tohoto období, dáme mu 1 a pokud ne, dáme mu 0.

Časová inteligence v DAX: Jak dynamicky vybrat počáteční období

Pokud se v našem vizuálu vrátíme k měsíčnímu zobrazení, můžeme vidět vizuál V rámci rozsahu , který jsme nastavili jako rovný jedné. Zobrazuje tedy pouze měsíce od začátku do konce. Pokud například klikneme na únor, uvidíme únor až leden.

Časová inteligence v DAX: Jak dynamicky vybrat počáteční období

Výpočet týdenního rozsahu

Pojďme se podívat, jak to vypadá z týdenního hlediska. Vizuál zpočátku začíná v pořádku a trvá od týdne 1 do týdne 52. Zatím je to dobré.

Časová inteligence v DAX: Jak dynamicky vybrat počáteční období

Ale když klikneme na ostatní roky v kráječi roku, uvidíme 52. týden, zatímco někteří mají 53. týden, což představuje spoustu problémů. Na tomto příkladu vidíte, že se problém začíná projevovat.

Máme počáteční období rok 2020 a týden 15 , ale období ukončení je rok 2021 a týden 13 místo roku 2021 a týden 14 .

Časová inteligence v DAX: Jak dynamicky vybrat počáteční období

Pokud se vrátíme do týdne 1, můžeme vidět, že to začíná v pořádku, ale končí v týdnu 52. Pokud se podíváme na výpočet týdne 53 zde, maximální počet týdnů pro roky 2020 a 2021 je 53 týdnů. Toto nebude fungovat pro týdenní podrobnosti.

Časová inteligence v DAX: Jak dynamicky vybrat počáteční období

Pojďme se podívat, co můžeme udělat, aby to fungovalo. Potřebujeme opravit výpočet DAX přímo zde v této části:

Časová inteligence v DAX: Jak dynamicky vybrat počáteční období

Je to proto, že v některých případech je 51 správných, když rok má pouze 52 týdnů, ale pro rok, kde je 53 týdnů, toto poslední období vynechá. To je přesně to, co jsme viděli v dynamickém vizuálu několik týdnů, kde výpočet odstranil poslední období v letech 2020 a 2021.

Abychom to napravili, přejdeme k měření V rámci rozsahu Weekly Wrong , které ve skutečnosti vypadá jednodušeji než dřívější měření. Měli jsme počáteční měření offsetu a vypočítali jsme maximální offset. Poté jsme filtr zbavili dat a poté jsme filtr nasadili na vybraný týden a vybraný rok s předpokladem, že to povede ke správnému offsetu.

Časová inteligence v DAX: Jak dynamicky vybrat počáteční období

Ale to nefunguje, protože by nezáleželo na tom, jestli používáte maximální nebo minimální posun. Vše, co děláme, je obalování agregátorem, takže do příkazu CALCULATE nevkládáme holý sloupec.

Ale pokud se vrátíme zpět k ISO WeekNumber , můžeme vidět, že rok a číslo týdne jednoznačně neurčují týdenní posun v tomto prvním období.

Časová inteligence v DAX: Jak dynamicky vybrat počáteční období

Přišel jsem na neprůstřelný způsob, jak to udělat. Můžete použít MIN, ale dává větší smysl vytvořit toto měření Offsetu 1. týdne . Abychom dosáhli offsetu týdne 1, zabýváme se týdnem 2, protože se nikdy nerozdělí. Bez ohledu na to, zda je v roce 52 nebo 53 týdnů, týden 2 zůstává nedotčen.

Časová inteligence v DAX: Jak dynamicky vybrat počáteční období

V tomto výpočtu filtrujeme až na týden 2, abychom získali offset. A pak jakmile dostaneme offset za týden 2, odečteme od něj jen jeden. To nám jednoznačně poskytne offset 1. týdne. Tím se náš problém vyřeší.

Výpočet týdenního intervalu

A pak se vrátíme k našemu týdennímu měření v rámci rozsahu a napíšeme příkaz IF, kde je-li číslo sklizně za týden 1, vypočítáme posun prvního týdne. Pokud to není týden 1, vypočítáme pouze posun počátečního týdne jako v předchozím měsíčním výpočtu.

Časová inteligence v DAX: Jak dynamicky vybrat počáteční období

A pak offset na konci týdne bude offset na začátku týdne + maximální číslo týdne, které může být buď 52 nebo 53. Pak prostě odečteme 1, aby se počáteční offset nezapočítával dvakrát.

Časová inteligence v DAX: Jak dynamicky vybrat počáteční období

Můžeme udělat stejnou konstrukci, kterou jsme použili pro měsíční rozsah k filtrování týdnů, kde vše, co spadá mezi počáteční a koncový posun, dostane 1 a vše, co nedostane 0.

Potom do podokna filtru umístíme týdenní měření v rámci rozsahu. Všechno se kontroluje a vypadá přesně.

Časová inteligence v DAX: Jak dynamicky vybrat počáteční období

Můžeme kliknout na osu přehrávání a spustit týdenní granularitu. Vidíme, že funguje správně stejně jako v kontextu měsíce.

Závěr

Toto je docela hluboký ponor do časové inteligence v DAX, kde jsme diskutovali o tom, jak můžeme vyřešit některé problémy týkající se čísel týdnů. Doufám, že vám tento návod pomohl a poskytl vám některé další nástroje ve vaší sadě nástrojů, když se potýkáte s problematickou týdenní situací.

Pokud se vám obsah obsažený v tomto konkrétním tutoriálu líbil, nezapomeňte se přihlásit k odběru televizního kanálu LuckyTemplates. Neustále vychází obrovské množství obsahu ode mne a řady tvůrců obsahu, všichni se věnují zlepšování způsobu, jakým používáte LuckyTemplates a Power Platform.


Tip LuckyTemplates: Ako porovnať prvých N pracovných dní

Tip LuckyTemplates: Ako porovnať prvých N pracovných dní

Pozrite si tento tip LuckyTemplates od Briana o tom, ako môžete dynamicky porovnávať prvých N pracovných dní pomocou dotazu Power.

Modelom Power Apps: Nastavenie prostredia a navigácia

Modelom Power Apps: Nastavenie prostredia a navigácia

Získajte informácie o modelových aplikáciách Power Apps, o tom, ako nastaviť prostredie a ako sa v ňom efektívne pohybovať.

Modelom podporované aplikácie Power Apps: Mapy stránok a ako fungujú

Modelom podporované aplikácie Power Apps: Mapy stránok a ako fungujú

Získajte viac informácií o práci s mapami lokalít v modelových aplikáciách Power Apps a objavte rôzne zložitosti a spôsoby, ako sa s nimi vysporiadať.

Zobrazit výsledky nahoře nebo dole pomocí hodnocení v LuckyTemplates

Zobrazit výsledky nahoře nebo dole pomocí hodnocení v LuckyTemplates

V tomto tutoriálu se ponoříme do hodnocení v LuckyTemplates pomocí funkce RANKX k diagnostice nejlepších nebo nejnižších výsledků v rámci klientské základny.

Nastavenie prostredia Power Apps: Pripojte sa k OneDrive a Disku Google

Nastavenie prostredia Power Apps: Pripojte sa k OneDrive a Disku Google

Zistite, ako sa pripojiť k OneDrive a Disku Google v prostredí Power Apps, aby ste mali skutočný vplyv na spôsob vášho podnikania.

Výukový program a recenze funkce Sort Legend LuckyTemplates

Výukový program a recenze funkce Sort Legend LuckyTemplates

V rámci mini-série, kterou připravuji o aktualizacích LuckyTemplates z listopadu 2021, bych se chtěl zabývat funkcí Sort Legend LuckyTemplates pro dnešní blog.

Popisky v LuckyTemplates | Recenze nových moderních vizuálních popisků

Popisky v LuckyTemplates | Recenze nových moderních vizuálních popisků

Chci mluvit o nových nápovědách v LuckyTemplates – nových nápovědách pro moderní vizuální. Myslím, že má potenciál být docela skvělý.

Dátový model LuckyTemplates: Komplexný prehľad

Dátový model LuckyTemplates: Komplexný prehľad

V tomto návode sa dozviete o všetkých dôležitých veciach, ktoré je potrebné zvážiť pri nastavovaní dátového modelu LuckyTemplates.

Prostředí Power Automate: Nastavení a přehled

Prostředí Power Automate: Nastavení a přehled

Zjistěte, jak nastavit účet v Microsoft Power Automate a prozkoumejte funkce, které prostředí Power Automate poskytuje.

Analýza hodnocení v LuckyTemplates: Pokročilé statistiky z kombinovaných souborů dat

Analýza hodnocení v LuckyTemplates: Pokročilé statistiky z kombinovaných souborů dat

Naučte se, jak získat pokročilou analýzu hodnocení ve vašich sestavách LuckyTemplates pomocí RANKX a dalších funkcí a technik.