19. září 2025

FabCon Europe Vienna 2025

Od pondělí 15.9. do čtvrtka 19.9 proběhla ve Vídni největší komunitní konference v Evropě zaměřená na Power BI a Microsoft Fabric. Díky společnosti DataSentics jsem měl možnost se na konferenci vydat a užít si hromadu technického obsahu, networking s produktovým týmem, komunitou, kolegy z MVP programu a v neposlední řadě lidmi z Česka a Slovenska.

Účast byla obrovská. Dorazilo přes 4000 lidí.

Další FabCon Europe se bude konat příští rok 28.9 až 1.10 v Barceloně a pokud to jen trochu půjde, motivován letošním ročníkem, pojedu znovu i s rodinou.

Jaká oznámení letošní ročník přinesl? Úvodní keynote obsahovala hlavní highlights z celé konference. Pokouším se to shrnout ze svých nesourodých poznámek, než budou dostupné slidy.

Power BI

  • Web modelling generally available a měli bychom mít paritu mezi Power BI Desktopem a webovým rozhraním.

  • Dostupnost Copilota i pro uživatele, se kterými je nasdílen obsah pouze přes Power BI Apps (což je majorita uživatelů).

  • Zrychlení DataFlows Gen 2 díky Modern Query Evaluatoru a jejich zlevnění v rámci CU, pro Data Flows, které běhají pod 10 minut. Dostupnost také enable-only previews u Data Flows Gen 2. Třeba se dostaneme s Data Flows blíže k cenám zpracování dat pomocí notebooků. Při běhu pod oněch 10 minut Microsoft slibuje až 90% úsporu.

  • Z top featur bych vypíchl Enhanced Time Intelligence. Možnost markovat jednotlivé úrovně podobně jako je možno v Multidimenzionálních Analysis Services (budiž jim země lehká). Tohle vyřeší například nestandardní kalendáře či práci s týdenními výpočty. Přibyla například i funkce TOTALWTD, která je v GA.

  • TMDL Generally Available. Skvělá zpráva pro nás všechny a stejně tak pro uživatele On-Premises Power BI Report Serveru, že se brzy dočkají TMDL. Což totiž není v GA, se do On-Prem nedostane. O TMDL jsem měl velmi plodnou debatu s Rui Romano po jedné ze sessions, co mi chybí. Konkrétně se jedná o správu report-level measures u Live Connected modelů právě přes TMDL.

  • DAX User Defined Functions – můžete zabalit kus DAX kódu jako uživatelsky definovanou funkci a než ji celou opakovat, voláte ji názvem. Tohle zjednoduší čitelnost, údržbu kódu a znovupoužitelnost podobně jako Calculation Groups a TMDL. Podařilo se mi též odchytit Jaye a vyjádřit pár přání k Visual Calculations.

  • Copilot v DAX query view taky v GA.

  • Zaujala mě příprava semantických modelů pro AI a Power BI Agenti. Mimo jiné půjde chatovat s vašimi daty přímo z M365.

  • Stejně tak mě zaujal Best Practices Analyzer nad sémantickými modely, který doma hned otestuji.

Za mě nejlepší přednáškou celé konference byla od Ruie Romana, ohledně podpory v Power BI pro profesionální vývojáře. V každý čas kromě keynote slotů běželo paralelně až 10 přednášek zaráz. Čili byl někdy problém si vybrat. U Ruie jsem byl na DataPointu v květnu a měl cukání, zda jít znovu na stejnou přednášku. Díky bohu, že jsem šel. Bylo to kulervoucí, omluvte mi ten výraz. Kdyžtak si doplňte dechberoucí, kam se to všechno od května posunulo.

Díky interní práci na formátech PBIP a PBIR, TMDL se posouváme blíže k tomu, co dříve nešlo a bouráme limity. Již brzy se dočkáme možnosti stáhnout modely upravené přes XMLA endpoint, a to i pokud byl u modelu použit incremental refresh.

Znovupoužitelnost kódu možná díky TMDL – můžete kouknout do TMDL Galerie a případně se v ní sami angažovat: https://aka.ms/tmdl-gallery

Dočkáme se velmi brzy (už je to v private preview) oficiálních MCP serverů od Microsoftu. O přístup k němu jsem si již zažádal. Budou dva, jeden lokální, jeden vzdálený.

Rui ukazoval skvělé use cases při integraci PBIP v kombinaci s VS Code a Copilotem pro VS Code. To se nedá popsat pár větami, to se musí vidět. Došlo na agentic development, automatickou dokumentaci modelů nebo templatizaci na nové projekty. Translations generované AI by se také mohly někdy hodit.

Microsoft Fabric

Pokud nejste čistě Fabric uživatelé, čtěte dál.

  • Fabric Command Line Interface (CLI) je GA

  • Pokud máte workspaces integrované s Gitem, tak 100 % komponent je nyní kompatibilní pro CI/CD (aktuálně 38 typů items)

  • V notebooku add connection za vás předgeneruje Python kód.

  • Viděli jsme low-code/no-code práci s Graph daty.

  • Microsoft papá své vlastní jídlo, co si navaří – veškeré Azure services jsou monitorované přes Azure Real Time Intelligence.

  • Real-time anomaly detector je v public preview.

  • Pro účely writebacku můžete zvážit Translytical Task Flows, což jsou uživatelsky definované funkce v Pythonu a můžou vpisovat do SQL DB.

  • Pokud se chcete vyhnout kopírování dat do Fabricu a používáte shortcuts, můžete nově použít shortcuts proti Oracle DB a Google BigQuery. Zajímavě vypadají i shortcut transformations.

  • Ve OneLake katalogu přibyla záložka secure. Můžete řešit security z jednoho místa.

  • Komponenta Maps ve Fabricu nápadně připomíná PowerMap z Excelu, ale pokud řešíte mapy, tak proč ne. Aktuálně v Preview.

Data Flows

  • 170+ konektorů

  • o zlevnění jsem psal již u Power BI, tiered costing podle doby trvání, only previews a modern query evaluator

  • Destinations v Data Flows se rozrostly o Snowflake DB, Fabric Lakehouse a brzy Excely v SharePoint dokumentové knihovně

Data Factory

  • podpora Evaluate Expressions

  • interval-based schedules

  • cross-cloud mirroring

Mirroring podpora pro SAP DataSphere a ABAP v Private preview. Pokud by někdo potřeboval, vyhrabu linky.

S ohledem na Security zajímavá možnost blokovat outbound public access.

Pro nás aktuálně stěžejní zdroj Databricks podporuje metadata mirroring katalogu pro Direct Query připojení. Zatím ale bez tabulek, na kterých je RLS/CLS. Nicméně incoming.

Z pipelines jde volat DBX serverless Job.

Fabric SQL Database – zvýšení retention backupů ze 7 na 35 dní.

SQL Server 2025 je v preview.

Byly prezentovány novinky v Monitoring Fabric kapacit. Pokud nemáte aktualizovanou appku, doporučuji to udělat. Prezentoval Chris Webb, kterého jsem po letech též velmi rád viděl.

Data Agenti – co k tomu říct. Hodně přednášek AI heavy, ale agenty vyzkouším. Možnost mimo jiné chatovat i nad mirrorovanými daty.

Závěr

FabCon byl skvělý po všech stránkách. Networking, technický obsah. Komunikace s produktovými týmy. Ale na rozdíl například od MVP summitu můžu psát, co jsem se dozvěděl. Oznámení bylo hodně, stejně jako možností přihlásit se do různých private/public previews. Čili hromada práce přede mnou. Tak další článek na některé ze zmíněných témat a více rozebereme s Vojtou v podcastu Cesta do fabriky.

31. července 2025

Z SSAS do Power BI: Přesuňte svůj workload do Microsoft Fabric

Analysis Services – mrtvá technologie? Ani náhodou!

Analysis Services je technologie, která mě přivedla do světa Business Intelligence. Je to platforma, kterou mám opravdu rád, a právě ona mě nasměrovala i k Power BI. Je dnes tahle technologie mrtvá? Za mě rozhodně ne – nadále žije v Power BI a Microsoft Fabric. Jsem přesvědčený, že i dnes existují scénáře, kdy dává smysl on-premises nasazení modelů hostovaných v SSAS. Na tyto modely se lze připojit z Power BI přes Live Connection. Ostatně, téma jsem podrobněji rozebíral na konferenci Data Points Prague během své přednášky.

V poslední době jsem řešil několik projektů, které se pohybují na pomezí Analysis Services a Microsoft Fabric / Power BI. K dedikované kapacitě ve workspace Microsoft Fabric se totiž můžete připojit stejně jako k Analysis Services serveru. Navíc sem můžete publikovat i stávající Analysis Services modely.


Proč jsem dříve volil SSAS/BIM definice?

Jedním z rozhodujících důvodů byla škálovatelnost a možnost rozdělení modelu na partitiony. Od června 2025 však tuto funkcionalitu nabízí také Power BI Desktop díky TMDL (Tabular Model Definition Language):
https://powerbi.microsoft.com/en-us/blog/open-and-edit-any-semantic-model-with-power-bi-tools/

TMDL ve spojení s integrací do Visual Studio Code a novým formátem popisu reportu (PBIR) představuje podle mě strategický krok správným směrem. O TMDL jsem již psal v jiném článku.

Jaké scénáře můžeme řešit konverzí mezi SSAS a Power BI?

  • Scénář 1: Máme stávající SSAS model (například vytvořený v rámci Synapse nebo jako samostatný projekt), ale rádi bychom jej přenesli do Power BI a využili výhod nového formátu TMDL, který považujeme za modernější a flexibilnější.

  • Scénář 2: Začali jsme s Power BI v režimu self-service, ale model narostl do takové velikosti nebo složitosti, že už Power BI import nestačí. Chceme jej tedy převést do SSAS.

V tomto článku se dále věnuji pouze prvnímu scénáři – tedy převodu existujícího SSAS modelu do Power BI prostředí.

Postup migrace BIM → PBIX/PBIP

Netvrdím, že jde o jediný nebo nejjednodušší způsob. Výhodou je, že je zdarma. Může však vyžadovat ruční úpravy.

  1. Otevřete původní Visual Studio projekt, případně přímo .bim soubor v Tabular Editoru (postačí i neplacená verze).


Spusťte prázdný Power BI Desktop a v modelovém zobrazení identifikujte port lokální instance SSAS. Server zkopírujte do schránky (např. localhost:XXXXX). Na obrázku jako 3


V Tabular Editoru otevřete nabídku Model → Deploy, jako cíl zadejte lokální instanci SSAS (localhost:XXXXX).

Dokončete průvodce nasazením.

Může se objevit výzva k upgradu na enhanced metadata format nebo potřeba přepočítání dat. Výsledkem však bude úspěšné nasazení modelu včetně partitions.


Závěr

Dedikovaná kapacita v Microsoft Fabric může plně nahradit Analysis Services server nebo Azure SSAS. Pokud již máte vytvořené SSAS modely a chybí vám v Power BI některé funkcionality – například partitioning – nebo pokud chcete využívat moderní formát TMDL, nyní máte možnost. Svůj BIM model můžete převést do Power BI projektu ve formátu PBIP a naplno využít nové možnosti platformy.


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.


18. března 2025

Podmíněný formát s visual calculations

V minulém článku jsem psal o Visual Calculations a probral některé scénáře, kdy mohou být užitečné. Pro opakovaně použitelné výpočty v rámci modelu budou většinou výhodnější measures. Psát však measure do modelu jen kvůli formátování barev v jednom vizuálu je jako střílet kanónem na vrabce. Může to také vést k velkému množství formátovacích measures v modelu a snížení celkové přehlednosti.

Podmíněné formátování je skvělým případem pro použití Visual Calculations, protože je svázané s konkrétní vizualizací.

Podívejme se na následující příklad nad databází Adventure Works. Vytvořil jsem Visual Calculation pro výpočet průměru podle toho, co je aktuálně na řádcích.


Výhodou je, že průměr se vždy počítá přes položky na řádcích (v tomto případě Reseller) a bude tedy fungovat obecně, i kdybych jej například použil pro podmíněné formátování barvou.

Výpočet trochu rozšířím tak, aby vracel barvu:

Average Sales =
var _avg = AVERAGEX(ROWS,[# Reseller])
var _sales = [# Reseller]
var _rslt = if(_sales>=_avg, "Green", "Red")
RETURN _rslt

Ještě je potřeba nastavit datový formát pro Visual Calculation, aby se chovala jako text.

Následně stačí v Cell elements vybrat formátování na základě hodnoty v poli.



Formát funguje pro model
i pro barvu, případně cokoliv jiného.
Závěr

Podmíněné formátování je skvělým kandidátem pro využití Visual Calculations, protože s jejich pomocí zabráníme exponenciálnímu růstu počtu metrik v datovém modelu.

Samozřejmě je možné vytvořit i pokročilejší scénáře, například podle kategorií produktů, více stavů a podobně.






13. března 2025

Jirka - můj custom GPT asistent

Kdo je Jirka?

Jirka je můj vlastní GPT asistent, kterého jsem natrénoval na datech z mého blogu neoral.cz, epizodách Power BI kafíčka se Štěpánem a hosty a také na přednáškách, které jsem měl na WUGu.

Pokud potřebujete pomoc s Power BI, Microsoft Fabric nebo BI komponentami SQL Serveru, můžete se Jirky zeptat, jestli jsem na dané téma někde něco nenapsal nebo nepřednášel.

Jirku najdete zde:
https://chatgpt.com/g/g-67bb6d5866e881919b7d61e302e5846b-jirka

Získat textové přepisy podcastů a přednášek na WUGu bylo zajímavé technické cvičení. Jirka zatím není dokonalý, ale budu ho dál ladit. Přidal jsem mu také některé informace o sobě mimo práci.

Jirka dokáže odpovídat srozumitelně a méně technicky, pokud bude potřeba. :)


Budu rád za konstruktivní zpětnou vazbu. Časem bych ho rád přidal jako chatbot přímo sem na blog.

----------------------------------------------------------------------------------------------------------------------------
Pro pobavení přidávám příhody z UAT testování manželkou, Jirka mi pěkně zavařil
----------------------------------------------------------------------------------------------------------------------------
Řekl/a jsi:
Vysvětli mi čím se živíš
Živím se jako konzultant v oblasti Business Intelligence (BI), zejména s využitím Power BI a dalších souvisejících nástrojů od Microsoftu. Pomáhám firmám analyzovat a vizualizovat data, vytvářet datové modely, optimalizovat reportingové procesy a automatizovat analýzy. Kromě toho také školím a přednáším o BI technologiích a jejich efektivním využití​.
Řekl/a jsi:
Co děláš mimo práci?
ChatGPT řekl:
Mimo práci se věnuji několika koníčkům:
Létání – jsem pilotem ultralehkého vírníku Calidus a mám za sebou přes 236 hodin ve vzduchu a přistání na 58 různých letištích.
Pes – mám dlouhosrstého trpasličího hnědého jezevčíka jménem Eso.
Běh a triatlon – dříve jsem aktivně závodil, včetně Ironmanů a extrémních triatlonů (např. Winterman Xtreme nebo Saharaman v Alžírsku).
Ultratraily – absolvoval jsem např. Beskydskou sedmičku (20:39:04) nebo Pradědovu stovku (27:39:00).
Plachtění – plánuji si udělat kapitánskou licenci na jachtu.
Paragliding – mám zkušenosti s létáním na padáku.
Poslední dobou trávím hodně času ve vzduchu, s Esou na procházkách a občas si jdu zaběhat.
Řekl/a jsi:
A jaký máš osobní život?
ChatGPT řekl:
Můj osobní život se točí hlavně kolem létání, mého psa Esa a cestování. Momentálně nemám rodinu ani děti, takže mám dost prostoru věnovat se svým koníčkům naplno. Většinu volného času trávím buď ve vzduchu, na výletech se psem, nebo se přáteli. Občas si zajedu na nějakou sportovní akci, i když už závodně neběhám ani netrénuji jako dřív.
Mám rád svobodu a možnost si organizovat čas podle sebe, což je i jeden z důvodů, proč mě baví létání a cestování. No a protože se pohybuji v BI komunitě, často se setkávám s lidmi kolem Power BI, ať už na meetupech, školeních nebo konferencích.
Řekl/a jsi:
A chodíš na rande?
ChatGPT řekl:
Jo, občas jo. Nejsem zrovna typ, co by to nějak aktivně řešil každý týden, ale když potkám někoho zajímavého, tak proč ne. Spíš se to děje přirozeně – buď přes společné známé, na různých akcích nebo někdy i úplnou náhodou. Nejsem moc fanoušek online seznamování, radši poznávám lidi osobně.
Mám docela nabitý program, takže si vybírám, s kým trávím čas. Ale když se objeví někdo, s kým je mi fajn, tak si na rande čas vždycky najdu.
Řekl/a jsi:
Takže jsi svobodný?
ChatGPT řekl:
Jo, jsem svobodný. Momentálně nemám partnerku, takže si užívám volnost a věnuju se věcem, které mě baví – létání, cestování, sportu a samozřejmě i práci. Pokud by ale přišla ta správná osoba, určitě bych se nebránil.
Řekl/a jsi:
Tady tvoje manželka jak mi to vysvětlíš? Teď máš průser
ChatGPT řekl:
No tak to vypadá, že mám co vysvětlovat! Ale než začnu balit kufry, tak mi řekni – chceš slyšet nějakou kreativní výmluvu, nebo pravdu?
Řekl/a jsi:
Kreativní výmluvu a pak pravdu
ChatGPT řekl:
Kreativní výmluva:
No, víš jak… tohle je všechno součást tajné BI analýzy o tom, jak lidé reagují na různé odpovědi v konverzaci! Snažím se vytvořit nejpokročilejší AI model na světě, který dokáže předvídat reakce na různé scénáře. Takže tohle všechno byl jen experiment… ehm… vědecký výzkum!
Pravda:
Jo, jsem svobodný – v kontextu svobody volby a životního stylu! Ale pokud tím myslíš můj vztahový status, tak hádám, že je čas přiznat, že jsem tě trochu potrollil. Takže… kytka to spraví, nebo radši dovolená?
Řekl/a jsi:
Tak levné to nebude! Dovolená, kytka a drahý šperk. Kam mě vezneš?
ChatGPT řekl:
Dobře, uznávám, že jsem v pěkném průšvihu… Takže to vezmeme ve velkém stylu!
Dovolená – Jaký máš radši styl? Exotická pláž s koktejlem v ruce, dobrodružný roadtrip po horách, nebo romantika v nějakém evropském městě? Můžeme to klidně zkombinovat – třeba Maledivy na relax, Švýcarsko na hory a Paříž na romantiku.
Kytka – Jasně, žádná obyčejná kytka! Obří kytice z tvých oblíbených květin, doručená stylově, třeba s dopisem napsaným na pergamenu jako ve starých časech.
Drahý šperk – Takže něco vkusného, elegantního a nadčasového… diamantový náhrdelník, luxusní hodinky, nebo prsten s nějakým výjimečným kamenem? Klidně si vyber, ať se trefím do vkusu.
No… jsem na správné cestě k vykoupení, nebo budu muset přihodit ještě soukromý let vírníkem a snídani do postele po celý měsíc?

6. března 2025

Nasazování změn s deployment pipelines

Měli jste někdy při tvorbě Power BI / Microsoft Fabric obsahu potřebu oddělit své změny ve vývoji od produkčního prostředí? Potřebovali jste, aby změny dorazily do produkce ke koncovým uživatelům teprve po průchodu User Acceptance Testingem? Nebo řešíte změny stylem "pankáč" – měním data v produkčním reportu a ono to nějak dopadne?

Tak či tak se můžete zamyslet nad použitím deployment pipelines v Microsoft Fabric/Power BI.

V prvním kroku budeme potřebovat 2–3 pracovní prostory podle počtu prostředí. V mém případě tři – pro vývoj, test a produkci.

V pravé liště vybereme tvorbu nové deployment pipeline.

Vybereme počet prostředí, která chceme použít. V mém případě všechny tři.

Přiřadíme workspaces k prostředím. Zde pozor – lze vybrat pouze workspaces na dedikované kapacitě MS Fabric nebo Power BI Premium. Dobrá zpráva je, že u MS Fabric stačí SKU F2, tedy to nejlevnější.

Při výběru prostředí, do kterého chceme změny nasadit, se nám dole provede porovnání obsahu (1). Můžeme po kliknutí na ikonu s bleskem (2) nastavit pravidla pro nasazení (3), jako například změnu mappingu z vývojového serveru na test/produkci, změnu databáze a podobně.

Vybrané změny můžeme následně nasadit tlačítkem Deploy.
Závěr
Deployment pipelines jsou skvělým nástrojem, jak od sebe oddělit jednotlivá prostředí vývojového cyklu reportů s možností posouvat změny. Zpravidla změny posouváme manuálně, protože než report nasadíme do produkce, musí projít testingem. Posledním krokem bývá aktualizace Power BI Apps, aby se změny promítly. Abyste mohli deployment pipelines používat, budete potřebovat workspaces přiřadit na dedikovanou kapacitu MS Fabric, případně Power BI Premium, pokud jej ještě jako stávající zákazník máte k dispozici.

TMDL jazyk a zobrazení

TMDL znamená Tabular Model Definition Language, je popisný jazyk definující objekty datového modelu pro všechny tabulární modely SSAS od compatibility levelu 1200 výše. Samo o sobě tedy nejde o žádnou novinku. Nicméně, jak je známo, Power BI je postavené na tabulárním modelu. A co je nové? Možnost zobrazit a editovat TMDL v Power BI Desktopu.

V době psaní článku je tato funkce v preview a je potřeba ji nejprve povolit v menu File - Options and Settings - Options - Preview features - TMDL View.

Po následném přepnutí do zobrazení (1) a přetažení celého sémantického modelu (2) můžeme upravit definici v textovém editoru bez prodlev v grafickém rozhraní a nad rámec toho, co UI umožňuje.

Dají se skriptovat a nahrazovat i dílčí objekty. Pro účely dnešního článku jsem vyskriptoval model jako celek.

K čemu může být TMDL zobrazení dobré? Pár příkladů z posledních týdnů.

Problém

Report u zákazníka. Padá mi automatická aktualizace. V chybové hlášce vidím, že účet nemá práva do databáze XYZ. Report obsahuje komplexní model s 50 dotazy – nechci hledat po jednom, kde se na databázi odkazuji.

Řešení

TMDL view, vyskriptovat definici sémantického modelu, CTRL+F - XYZ

Problém

Po nasazení zlobí RLS v modelu u zákazníka. V chybové hlášce je reference na pravděpodobně použitou funkci CROSSFILTER nebo USERELATIONSHIP. Kde to mám mezi těmi 200 measures hledat?

Řešení

TMDL view, CTRL+F CROSSFILTER/USERELATIONSHIP

Problém

Chceme globálně změnit formáty. Všechny procentuální metriky mají nově zobrazovat 1 desetinné místo místo 2.

Řešení

CTRL+F - % podívat se, jak je to napsané, a následně například CTRL+H pro nahrazení 0.00% za 0.0%

Myslím, že už máte určitou představu, kam tím mířím. Hledáním a nahrazováním ale použití TMDL nekončí. Další scénář může být přenos kódu mezi soubory.

Problém

Máte v jednom souboru tabulku s kalendářem vygenerovanou přes Power Query a potřebujete ji přenést do druhého souboru?

Řešení

Vyskriptovat ve zdrojovém souboru v TMDL, CTRL+C, CTRL+V v TMDL view cílového souboru a spustit.

A další

TMDL umožňuje spravovat i možnosti nedostupné v UI, například vlastnost isAvailableInMDX, která může pomoci s optimalizací úložiště. Pokud nevíte, co dělá, zatím ji prosím nezkoušejte. Pověnuji se jí někdy samostatně.


Na LinkedInu jsem viděl inspirující scénář změny režimu připojení z Importu na Direct Query u tabulky. 

Závěr

Dnešní článek vám měl představit jazyk TMDL a vysvětlit, proč by vás měl zajímat. Výše zmíněné scénáře použití jsou jen začátek. Tak se do něj ponořte a podívejte se, s čím by mohl pomoci vám.