24. června 2025

Zlo dostalo jméno Auto date/time intelligence

Kdybych měl dostat pětikorunu za každý případ, kdy jsem na tento nešvar upozornil, pravděpodobně bych nezbohatl. Bylo by to ale minimálně na solidní párty. Proto jsem se rozhodl zvěčnit své myšlenky v dnešním blogovém příspěvku. Inspirovala mě k tomu také včerejší debata s Jirkou Vicherkem při nahrávání Data talk podcastu, když se mě ptal na Power BI dark patterns. Asi z toho udělám sérii.

Pokud bych měl vybrat první věc, kterou udělat po čisté instalaci Power BI Desktopu, bylo by to vypnutí funkce Auto date/time intelligence.

Kdybych měl vyjmenovat nejčastější příčinu, proč u data import modelů méně zkušených uživatelů model nabobtnal do nesmyslných rozměrů, je to Auto date/time intelligence.

Tak si to prosím vypněte. Globální nastavení najdete v menu File - Options zde:


Pokud to máte nějakým nedopatřením zapnuté u stávajícího souboru, vypnete to zde


Tak si to prosím vypněte, ať je klid. Děkuji.

Tady by se dalo skončit, ale asi dlužím vysvětlení proč...

Co to dělá?

Pro každý sloupec datového typu date potažmo datetime to vytvoří hierarchii se čtyřmi extra sloupci pro rok, kvartál, měsíc a pořadové číslo dne měsíci

Proč to vadí?

Protože Power BI ve Vertipaq enginu drží data v column store úložišti, kde každý sloupec komprimuje do paměti. Pro každý sloupec na pozadí vzniká localdatetable a ta zabírá místo. 
O fungování Vertipaq engine jsem psal například v článku o velikosti modelu v Power BI a SSAS Tabular.

Tady máme jeden ukázkový reálný historický report stav před vypnutím auto date/time


Když se na tento report připojím z DAX studia, vidím hromadu tabulek LocalDateTable

Když vyexportuju statistiky do vpax souboru, analyzuji model ve Vertipaq analyzeru, zjistím že zabírají 92% celé velikosti modelu.
Vypínám auto date/time a ukládám soubor

Fakturuji půl dne za optimalizaci.

To je samozřejmě nadsázka, ale je to dobrý startovní bod.

Proč je to tedy proboha defaultně zaplé?
Power BI je zaměřeno na koncového uživatele a pro ty méně technicky znalé se Microsoft snaží věci zjednodušovat. Takovýto uživatel dost často nepracuje s dimenzionálním modelem, ale má jen jednu faktovou tabulku. Takže ano v takovém případě to může být užitečné, když uživatel neví, jak si vytvořit hierarchii vlastní.
Nicméně pokud mám alespoň dvě faktové tabulky obě s datumem, budu beztak potřebovat vytvořit společnou tabulku s kalendářem, abych je mohl filtrovat přes společný ovládací prvek. A ve vlastní kalendářové tabulce (jeden ze způsobů, jak ji vytvořit jsem sepsal zde). V takové společné dimenzionální tabulce si následně vytvořím hierarchii vlastní.

Můžu to tedy hned beztrestně vypnout?

Může to být tricky u stávajících souborů s vizualizacemi. Auto date/time totiž datumové sloupce referencuje v DAXu a může být potřeba opravit počítané sloupce a measures, které se odvolávají na dílčí části. Tyto návaznosti je potřeba opravit.

Stejně tak vizualizace, které tuto logiku používaly je potřeba opravit. To, co bylo seskupeno například podle roku, se rozpadne na jednotlivé datumy a musíte tyto vizualizace upravit. 

Závěr

Od té doby, co o tomto chování vím (a taky jsem na začátku nevěděl) je vypnutí auto date/time intelligence pro nové soubory první věcí, kterou vypínám po instalaci Power BI desktopu. Jestli tohle nastavení ve svých souborech potřebujete, nebo ne je na zvážení každého individuálně. Tento příspěvek vám snad dal informace abyste se mohli kvalifikovaně rozhodnout.