Týdenní výpočty DAX – Problémy s inteligencí času LuckyTemplates

V dnešním tutoriálu poskytnu několik technik a tipů, jak se vypořádat s běžnými problémy způsobenými týdenní granularitou jazyka DAX ve výpočtech časové inteligence. Celé video tohoto tutoriálu si můžete prohlédnout ve spodní části tohoto blogu.

Nedávno jsem udělal tutoriál o získání hodnot předchozího týdne v LuckyTemplates. Od té doby mám několik otázek týkajících se časové inteligence a zejména týdenních hodnot DAX. To není překvapivé, protože týdny jsou ve sféře časové inteligence skutečně nejhůře vychovanou granularitou.

V případě měsíců máte vždy 12 měsíců v roce. V případě čtvrtin máte vždy čtyři čtvrtiny. Týdny jsou různé, protože týden má sedm dní a rok 52 týdnů – to je 364 dní. Takže tam máš ten den navíc. V přestupných letech máte dva dny navíc.

Takže to ve skutečnosti skončí v některých letech, na základě schématu číslování pro číslo týdne ISO, někdy 52 týdnů, někdy 53 týdnů. 53. týden je ten, který způsobí nejvíce problémů.

Obsah

Problémy časové inteligence týdenního výpočtu DAX

V tomto příkladu používám Total Spot Price. Se součty je snazší si to představit a mluvit o nich.

Týdenní výpočty DAX – Problémy s inteligencí času LuckyTemplates

V tomto případě chceme pro každý rok zobrazit řádek pro týden 53, ať už v daném roce byl týden 53 nebo ne. Takže můžete vidět, že v roce 2018 a 2019 neexistuje týden 53, ale v roce 2020 ano. Chceme to mít konzistentní, aby 53. řada byla v každém ročníku. Ale pak by metrika byla prázdná pro roky, ve kterých nebyl 53. rok.

Jedním z běžných způsobů, jak to děláme, je přejít na Zobrazit položky bez dat a ujistit se, že je to zapnuté. V tomto případě je zapnutá, ale nepomůže, protože to funguje, když máte fyzický řádek, ale k tomuto řádku nejsou přiřazena žádná data. V tomto případě nemáme ani řádek.

Týdenní výpočty DAX – Problémy s inteligencí času LuckyTemplates

Techniky jako používánínebo Odebrat filtry nebudou fungovat, protože není co odstraňovat. Filtr na tomto řádku prostě neexistuje. A tak je otázka, jak vložíme tento řádek do každého roku, ve kterém neexistuje? A pak se to skutečně stává problémem datového modelování.

Jedna z věcí, kterou můžeme potenciálně udělat, je přejít na schéma sněhových vloček, kde filtrujeme tabulku Data podle něčeho, co každý rok vynutí tento 53. týden. Funkce, která mě k tomu napadne, je.

Týdenní výpočty DAX – Problémy s inteligencí času LuckyTemplates

CROSSJOIN se používá ke spojení dvou polí, která mohou, ale nemusí mít vztah. Nemusí mít vztah na rozdíl od většiny respnebo jiné tabulkové funkce.

V tomto případě CROSSJOIN vezme dva sloupce a vytvoří každou kombinaci těchto dvou sloupců, ať už v sadě dat existuje nebo ne. To je přesně to, co chceme.

Musíme vytvořit tabulku ze sloupce. CROSSJOIN vezme dvě tabulky a pak VALUES na čísle týdne ISO a my je spojíme dohromady. To nám dá 53 týdnů každý rok.

A pak do tabulky přidáme třetí sloupec. Mohli bychom to udělat v Power Query, ale je snazší ukázat vám logiku v jazyce DAX. To, co zde děláme, je, že ve skutečnosti bereme a spojujeme rok se spojovníkem a pak číslem týdne, takže máme klíčové pole, které jej připojí k tabulce Data.

Týdenní výpočty DAX – Problémy s inteligencí času LuckyTemplates

Zde však musíme udělat trochu více práce, protože klíčové pole v tabulce Data funguje tak, že se jedná o čtyřmístnou pomlčku roku a poté dvoumístný týden. Takže v případech, kdy je číslo týdne ISO dvoumístné, můžeme provést jednoduché zřetězení. V případech, kdy je to jedna číslice, musíme vzít číslo roku a pak ho zřetězit spojovníkem, pak úvodní nulou a pak číslem týdne.

Jakmile to máme, můžeme vzít tuto tabulku v datovém modelu a najít sloupec Týden a rok. Pak se připojíme k těm, kteří jsou ve vztahu jeden k mnoha. Vždy jsem rád zapnul tuto možnost na Připnout související pole na začátek karty, takže když to zaškrtneme, hned to vidíme.

Týdenní výpočty DAX – Problémy s inteligencí času LuckyTemplates

Pokud se vrátíme k vizuálu, musíme změnit řádky. Místo čísla roku a týdne chceme použít číslo roku a týdne z tabulky CROSSJOIN. A teď máme ten 53. týden v roce 2018 s prázdnou a 53. týden v roce 2019 s prázdnou. V roce 2020 máme skutečné číslo, protože má 53. týden.

Týdenní výpočty DAX – Problémy s inteligencí času LuckyTemplates

Tady bychom se mohli zastavit, až na to, že jsme nyní opustili model Star Schema. Kdykoli se vzdálíte od hvězdného schématu v LuckyTemplates, posunete se mimo oblast toho, co je obecně považováno za nejlepší postup.

A tak pro Snowflake Schema to není velké porušení. Jsou případy, kdy to určitě budete chtít použít, ale pokud se tomu můžete vyhnout, zkuste to. Snižuje duplicitu, ale ne nutně velikost. Umožňuje vám používat měření s přímým počtem, ale existují problémy s výkonem a potenciální problémy s použitelností a rozhodně se zvyšuje složitost jazyka DAX. Brání vám ve vytváření hierarchií napříč tabulkami a pravděpodobně nejproblematičtější je, že to může opravdu zkazit vaši schopnost synchronizovat řezy napříč různými poli.

Takže i když to problém vyřeší, dělá to způsobem, který není skvělý. Uvidíme, jestli to dokážeme lépe než tohle. Pojďme na další datový model. V tomto modelu jsem vzal přesně stejná data, data a okamžitou cenu, ale tentokrát jsem odstranil tabulku CROSSJOIN. Stále existuje, ale není připojen.

Týdenní výpočty DAX – Problémy s inteligencí času LuckyTemplates

Ale když se podíváme na DAX, uvidíme, že je to přesně stejný DAX, který vytvořil tuto tabulku v druhém přehledu. Takže místo toho, abychom to spojili ve fyzickém vztahu a pak porušili hvězdné schéma a převedli to na schéma sněhové vločky, můžeme udržovat schéma hvězd a použít pouze virtuální vztah.

Týdenní výpočty DAX – Problémy s inteligencí času LuckyTemplates

K tomu použijeme funkci tzv. Vytváří tento vztah mezi tabulkami, ale dělá to virtuálně. Děláme to pomocí, protože budeme měnit kontext. V tomto případě se kontext bude týkat vztahu. Takže máme naši celkovou spotovou cenu a pak máme TREATAS. Musíme ten sloupec změnit na tabulku.

A pak máme pole Rok a týden, což je klíč, který jsme vytvořili. Máme to připojené virtuálním způsobem k Týdnu a roku v tabulce Data. Takže teď máme tabulku Crossjoint, která filtruje tabulku Data stejným způsobem, jako když jsme měli fyzický vztah, ale bez porušení hvězdného schématu.

Týdenní výpočty DAX – Problémy s inteligencí času LuckyTemplates

Nyní můžeme vzít a vložit tuto celkovou spotovou cenu TREATAS do matice a to, co vidíme, jsou přesně stejné součty. Tímto způsobem jsme to udělali, aniž bychom narušili náš datový model a způsobili jakékoli nevýhody, o kterých jsme hovořili ve vztahu ke schématu sněhové vločky.

Týdenní výpočty DAX – Problémy s inteligencí času LuckyTemplates




Závěr

V tomto tutoriálu jsem vám ukázal několik způsobů, jak vyřešit problém týdenního výpočtu DAX v LuckyTemplates. Jedním z nich je použití CROSSJOIN, ale má to určité nevýhody. Druhým způsobem je použití TREATAS, vytvoření virtuálního vztahu a neporušení přístupu Star Schema.

To je jedna technika, která je docela užitečná pro řešení tohoto problému 53. týdne. Doufám, že vám to bylo užitečné. Chci znát váš názor na toto. Dejte mi vědět v komentářích níže.

Vše nejlepší,


Ako nainštalovať DAX Studio & Tabular Editor v LuckyTemplates

Ako nainštalovať DAX Studio & Tabular Editor v LuckyTemplates

Zistite, ako stiahnuť a nainštalovať DAX Studio a Tabular Editor 3 a ako ich nakonfigurovať na použitie v LuckyTemplates a v Exceli.

LuckyTemplates Vizualizácia tvarovej mapy pre priestorovú analýzu

LuckyTemplates Vizualizácia tvarovej mapy pre priestorovú analýzu

Tento blog obsahuje vizualizáciu Shape Map pre priestorovú analýzu v LuckyTemplates. Ukážem vám, ako môžete efektívne využiť túto vizualizáciu s jej funkciami a prvkami.

LuckyTemplates Finančné výkazníctvo: Prideľovanie výsledkov šablónam v každom jednom riadku

LuckyTemplates Finančné výkazníctvo: Prideľovanie výsledkov šablónam v každom jednom riadku

V tomto návode predstavujem jedinečný nápad týkajúci sa finančného výkazníctva, ktorý spočíva v prideľovaní výsledkov na vopred určené šablóny tabuliek v rámci LuckyTemplates.

DAX měří v LuckyTemplates pomocí Measure Branching

DAX měří v LuckyTemplates pomocí Measure Branching

Vytvářejte míry DAX v LuckyTemplates pomocí existujících mír nebo vzorců. Tomu říkám technika větvení opatření.

Najvýkonnejšie volanie funkcie v LuckyTemplates

Najvýkonnejšie volanie funkcie v LuckyTemplates

V tomto blogu preskúmajte množinu údajov LuckyTemplates, najvýkonnejšie volanie funkcií, ktoré vám prináša tisíce funkcií M a DAX na dosah ruky.

Techniky modelovania údajov na organizáciu opatrení DAX

Techniky modelovania údajov na organizáciu opatrení DAX

V dnešnom návode sa podelím o niekoľko techník modelovania údajov o tom, ako lepšie usporiadať vaše merania DAX pre efektívnejší pracovný tok.

LuckyTemplates Financial Dashboard: Kompletné tipy na prispôsobenie tabuľky

LuckyTemplates Financial Dashboard: Kompletné tipy na prispôsobenie tabuľky

LuckyTemplates je skvelý nástroj pre finančné výkazníctvo. Tu je návod, ako vytvoriť prispôsobené tabuľky pre váš finančný dashboard LuckyTemplates.

Osvedčené postupy toku jazyka Power Query

Osvedčené postupy toku jazyka Power Query

V tomto návode sa bude diskutovať o toku jazyka Power Query a o tom, ako môže pomôcť vytvoriť hladkú a efektívnu zostavu údajov.

LuckyTemplates vlastní ikony | Vizualizační technika PBI

LuckyTemplates vlastní ikony | Vizualizační technika PBI

Budu diskutovat o jedné z mých oblíbených technik kolem vlastních ikon LuckyTemplates, která používá vlastní ikony dynamickým způsobem ve vizuálech LuckyTemplates.

Vytváření tabulek LuckyTemplates pomocí funkce UNION & ROW

Vytváření tabulek LuckyTemplates pomocí funkce UNION & ROW

V tomto blogu vám ukážu, jak můžete vytvořit tabulky LuckyTemplates pomocí vzorce, který kombinuje funkci UNION a funkci ROW.