Time Intelligence
Pro někoho se jedná o úžasnou funkci, která mu ulehčuje práci s daty. Pro někoho je to jako noční můra, která snižuje výkon reportu.
Jsou to dva velmi rozdílné pohledy, se kterými se můžete v průběhu své práce s Power BI setkat. Osobně jsem se setkal s oběma variantami. Pro pochopení, proč tu tyto názory jsou, a jak s Time Intelligence v Power BI pracovat, nebo naopak nepracovat musíme pochopit, jak Time Intelligence funguje a co způsobuje na pozadí.
Co je to Time Intelligence
Jedná se o soubor funkcí jazyka DAX, které poskytují rychlejší práci s daty. Příkladem ulehčení a zrychlení práce může být například následující zápis.
Tento zápis nevrací jen hodnotu 3, přestože se jedná o třetí kvartál roku, ale rovnou vrací i označení „Qrt“. Pokud bychom chtěli jen číslovku 3, pak bychom Quarter změnili na QuarterNo.
Není potřeba tedy rozepisovat další funkce. Hodnoty můžeme přivolat pomocí „.[QuarterNo]“ za odkazem na sloupec s daty. Obecně po zadání tečky za odkaz na sloupec vám Time Intelligence nabídne následující volby, které umí přivolat. Pokud je funkce Time Intelligence vypnutá, pak se tyto volby nezobrazí.
Co se stane na pozadí, při aktivaci?
Automaticky se z datových sloupců vytvoří hierarchie dat, která obsahuje rok, kvartál, měsíc, den. Tato hierarchie je realizována pomocí dimenze, která se naváže na datový sloupec. Tuto dimenzi v Power BI jako tabulku nenaleznete, ale jde ji nalézt například pomocí nástroje DAX Studio, které vám odhalí, že krom jedné nové dimenze Time Intelligence vytváří hned dvě. DateTableTemplate a LocalDateTable.
Na obrázku můžete vidět, co vše nově vzniklé dimenze obsahují. Takto vypadá záznam v DAX Studiu bez zapnuté funkce.
Z těchto dvou obrázků plyne, že při zapnuté funkci Time Intelligence se bude zvětšovat objem PBIX souboru. O kolik se objem zvětší, je závislé na počtu datových sloupců a na počtu záznamů v jednotlivých sloupcích.
Toto je porovnání souboru s jedním datovým sloupcem vytvořeným ve Query o 6001 záznamech. První záznam je bez zapnuté funkce a druhý je již se zapnutou.
Tentokrát jde o porovnání opět s jedním datovým sloupcem o 6001 záznamech, ale zde jde o sloupec vytvořený v DAX jazyku pomocí funkce Calendar. První záznam je bez zapnuté funkce a druhý je již se zapnutou.
Z obou výsledků vyplývá, že soubor se zvětšuje. V těchto případech to ani není tak markantní rozdíl. Leckdy se ale můžete setkat s případem, že soubor může narůst řádově až o několik MB, což znatelně sníží rychlost.
Funguje to vždy se všemi sloupci, které obsahují data?
Ne tak úplně…aby funkce Time Intelligence mohla fungovat, tak potřebuje, aby byl sloupec označen jako datum (date) nebo datum/čas (date/time) a musí obsahovat nepřerušenou řadu (žádné duplicitní záznamy). Pokud tedy budete mít řadu od 1.1.2019 do 30.12.2019, ale bude vám mezi nimi chybět datum 13.6.2019, pak funkce Time Intelligence nezafunguje.
Že funkce s vašimi daty zafungovala, můžete zjistit velmi jednoduše. U vašeho sloupce s datem se vytvoří rozbalovací nabídka a ikona kalendáře, pod kterou naleznete hierarchii.
Pokud by funkce nezafungovala, pak vám v přehledu zůstane pouze váš sloupec bez ikony a hierarchie.
Kde povolím, nebo deaktivuji funkci Time Intelligence?
Funkce Time Intelligence je v základním nastavení povolena a měla by se provádět automaticky. Tato funkce se dá nastavit jak obecně pro všechny nově vytvořené soubory, tak pro konkrétní. Pokud tedy chcete tuto funkci pro své reporty vypnout, nebo naopak zapnout, pak musíte do Menu -> Možnosti a Nastavení (Options and Settings) -> Možnosti (Options). Zde se dá Time Intelligence nalézt ve dvou záložkách.
Pokud chcete nastavit globálně, aby se další reporty vytvářeli s/bez této funkce, pak:
Globální Nastavení -> Načtení dat a vypnout/zapnout v sekci Časové měřítko
Nastavení pro aktuální soubor se nastavuje zde:
Aktuální soubor -> Načtení dat a vypnout/zapnout v sekci Časové měřítko