<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>neoral.cz</title>
<link>https://www.neoral.cz/</link>
<description>Power BI, Microsoft Fabric a AI nad daty. Prakticky, česky, od roku 2015.</description>
<language>cs</language>
<atom:link href="https://www.neoral.cz/feed.xml" rel="self" type="application/rss+xml"/>
<lastBuildDate>Fri, 16 Oct 2026 11:30:00 GMT</lastBuildDate>
<item>
<title>Mapa AI nástrojů kolem datové platformy</title>
<link>https://www.neoral.cz/2026/10/mapa-ai-nastroju-kolem-datove-platformy.html</link>
<guid isPermaLink="true">https://www.neoral.cz/2026/10/mapa-ai-nastroju-kolem-datove-platformy.html</guid>
<pubDate>Fri, 16 Oct 2026 11:30:00 GMT</pubDate>
<category>AI &amp; Foundry</category>
<description><![CDATA[<p>Na konzultacích teď dostávám pořád stejnou otázku. Kde končí Copilot v Power BI a kde začíná data agent? A k čemu je vlastně Copilot Studio, když máme Foundry? Odpověď se nejlíp ukazuje na mapě. Tak jsem ji nakreslil.</p>

<p>Nejde o deep dive. Dnešní díl je rozcestník a jednotlivým nástrojům se budu věnovat v samostatných dílech seriálu.</p>

<h2>Proč je to tak těžké?</h2>

<p>Důvody jsou dva. Nástrojů je hodně a mění se rychle. Za poslední zhruba dva roky se AI skill přejmenoval na data agenta, Azure AI Studio na Azure AI Foundry a pak na Microsoft Foundry. Power BI Q&amp;A v únoru 2027 skončí. Stav jedné a té samé funkce se občas liší podle toho, kterou stránku dokumentace zrovna čtete.</p>

<p>A pak je tu slovo Copilot. To dnes neznamená jeden produkt, ale celou rodinu.</p>

<h2>Tři patra</h2>

<p>V hlavě si AI kolem dat dělím na patra:</p>

<ul>
<li><b>Ptám se</b> – konverzační AI, která odpovídá nad daty. Copilot v Power BI, Microsoft 365 Copilot, Fabric data agent.</li>
<li><b>Stavím agenta</b> – platformy, kde si takového agenta postavíte sami. Copilot Studio a Microsoft Foundry.</li>
<li><b>Vyvíjím s agentem</b> – agentický vývoj. GitHub Copilot, Claude Code, Codex. Ty dnes umí přes MCP sáhnout i do semantic modelu.</li>
</ul>

<p>Dnešní mapa pokrývá hlavně první dvě patra. Třetímu patru dám vlastní díl.</p>

<h2>Základ: semantic model a Prep data for AI</h2>

<p>Než se pustím do nástrojů – všechno z prvního patra stojí na stejném základu. Na semantic modelu. Pokud je model nepopsaný a plný technických sloupců, žádný Copilot to nezachrání.</p>

<p>Proto vzniklo <a href="https://learn.microsoft.com/en-us/power-bi/create-reports/copilot-prepare-data-ai">Prep data for AI</a>. Vyberete podmnožinu polí, kterou má AI používat (AI data schema). Doplníte instrukce s byznysovými pojmy (AI instructions). A pro nejčastější otázky připravíte schválené odpovědi (verified answers). Všechno se ukládá do modelu, ne do reportu. Takže to platí všude, kde se model s Copilotem potká – včetně data agenta.</p>

<p>Je to stará známá práce datového modeláře, jen s novým publikem.</p>

<h2>Copilot v Power BI</h2>

<p>Copilot v Power BI není jedna věc, ale <a href="https://learn.microsoft.com/en-us/power-bi/create-reports/copilot-introduction">několik různých funkcí</a>:</p>

<ul>
<li><b>Copilot pane v reportu</b> (GA) – odpovídá nad reportem, který máte otevřený.</li>
<li><b>Standalone Copilot</b> (preview) – celoobrazovkový, sám najde vhodný report nebo model, ke kterému máte přístup. Když odpověď v reportu není, sáhne do measures nebo si napíše DAX.</li>
<li><b>Copilot pro tvůrce</b> – psaní DAX, popisy measures, úpravy modelu.</li>
</ul>

<p>Často slýchám, že Copilot „vidí celý tenant“. Nevidí. Vidí to, k čemu máte přístup vy, a admin mu to může dál zúžit na schválené modely. RLS platí.</p>

<p>Požadavek na kapacitu: F2 a výš nebo P1 a výš, případně Fabric Copilot capacity. Samotná Pro licence nestačí.</p>

<h2>Microsoft 365 Copilot a Fabric IQ</h2>

<p>Tady se na FabConu v Barceloně posunulo nejvíc. Power BI data v Microsoft Copilot Chatu jsou GA. Copilot sám pozná, který report nebo model se k otázce hodí. A k číslům přidá kontext z mailů, schůzek a dokumentů.</p>

<p>Zajímavost: <a href="https://learn.microsoft.com/en-us/fabric/iq/connectors/microsoft-365-copilot-overview">funguje to</a> i nad Pro a PPU workspace (Embedded kapacity ne). Potřebujete licenci Microsoft 365 Copilot (Learn ji teď vede jako Copilot Premium) a běžný přístup k reportu. Fabric kapacita podmínkou není.</p>

<p>Druhý krok se týká Power BI samotného. Stejný Copilot přichází <a href="https://learn.microsoft.com/en-us/fabric/iq/connectors/copilot-power-bi-fabric">přímo do Power BI a Fabricu</a>. Zatím jako preview, jen pro držitele Copilot Premium licence a vedle stávajícího Power BI Copilotu. Na ostatní uživatele se má rozšířit později. Směr je ale vidět – čísla z Power BI a kontext z Microsoft 365 se potkávají v jednom Copilotu.</p>

<h2>Fabric data agent</h2>

<p>Když nechcete obecného Copilota, ale specialistu, je tu <a href="https://learn.microsoft.com/en-us/fabric/data-science/concept-data-agent">Fabric data agent</a>. Dáte mu až pět zdrojů v libovolné kombinaci – lakehouse, warehouse, KQL databázi, semantic model, ontologii. Napíšete mu instrukce, kdy sáhnout kam, a přidáte příklady dotazů. (U semantic modelu příklady dotazů nejdou – tam agent bere to, co připravíte přes Prep data for AI.)</p>

<p>Agent si sám napíše SQL, DAX nebo KQL. Jen pro čtení. A má své meze: oficiálně podporuje jen angličtinu (v mém malém testu ale česky fungoval podobně jako anglicky), odpověď má strop 25 řádků × 25 sloupců a zdroje musí být ve stejném regionu.</p>

<p>Hlavní výhoda? Dá se volat shora. Ze standalone Power BI Copilotu, z Microsoft 365 Copilotu, z Copilot Studia i z Foundry. Postavíte ho jednou a volat ho může víc nástrojů.</p>

<h2>Copilot Studio vs. Foundry</h2>

<p>Pomůže analogie, kterou datoví lidé znají. Copilot Studio je pro agenty totéž, co Power Automate pro workflow. Foundry je totéž, co Logic Apps.</p>

<p>Copilot Studio je low-code, žije v Power Platform, spravuje se v Power Platform admin center a platí se v Copilot Credits. Staví v něm makeři, typicky agenty pro oddělení. Foundry je pro vývojáře: Azure subscription, volba modelu, vlastní kód, evaluace, platba za tokeny.</p>

<p>Rozšířené dělení, že Copilot Studio je „pro M365“ a Foundry „pro všechno ostatní“, ale neplatí. Copilot Studio volá přes konektory i systémy třetích stran a publikuje na web. Agenta z Foundry zase publikujete do Teams a do Microsoft 365 Copilotu. Hranice tedy není v tom, kam agent dosáhne. Je v tom, kdo ho staví, kde žije a kdo ho platí.</p>

<p>A pozor na detail, který vypadá nevinně. V Copilot Studiu si u data agenta volíte autentizaci. Při volbě Maker vidí všichni uživatelé data přes oprávnění autora. To si dobře rozmyslete.</p>

<h2>Pro vývojáře: MCP a Foundry IQ</h2>

<p>Dvě položky, které v mapě nesmí chybět. <a href="https://learn.microsoft.com/en-us/power-bi/developer/mcp/mcp-servers-overview">Power BI MCP servery</a>: Authoring MCP slouží k tvorbě a úpravám modelu z agenta, Fabric IQ k odpovědím nad Power BI daty pro vlastní agenty. A <a href="https://learn.microsoft.com/en-us/azure/foundry/agents/concepts/what-is-foundry-iq">Foundry IQ</a> nad Azure AI Search, které řeší dokumenty. Zjednodušeně: Fabric IQ jsou čísla a sémantika, Foundry IQ jsou PDFka a texty.</p>

<h2>Celá mapa v tabulce</h2>

<p>Pro pořádek všechno na jednom místě.</p>

<div class="table-wrap"><table>
<thead>
<tr>
<th>Nástroj</th>
<th>Patro</th>
<th>Co dělá</th>
<th>Kde končí</th>
</tr>
</thead>
<tbody>
<tr>
<td><b>Copilot pane v reportu</b></td>
<td>ptám se</td>
<td>otázky a shrnutí nad otevřeným reportem</td>
<td>jen jeden report; kapacita F2+ / P1+</td>
</tr>
<tr>
<td><b>Standalone Power BI Copilot</b></td>
<td>ptám se</td>
<td>najde report nebo model, ke kterému máte přístup; píše DAX</td>
<td>jen obsah Power BI a Fabricu, bez kontextu z M365</td>
</tr>
<tr>
<td><b>Copilot pro tvůrce</b></td>
<td>stavím (model)</td>
<td>DAX, popisy measures, úpravy modelu</td>
<td>jen model, ne odpovědi koncovým uživatelům</td>
</tr>
<tr>
<td><b>Prep data for AI</b></td>
<td>základ</td>
<td>AI data schema, AI instructions, verified answers, Approved for Copilot; uloženo v modelu</td>
<td>sám nic nezodpoví, zlepšuje všechny konzumenty modelu</td>
</tr>
<tr>
<td><b>Microsoft Copilot Chat s Fabric IQ</b></td>
<td>ptám se</td>
<td>sám vybere report nebo model, přidá kontext z M365</td>
<td>jen reporty a modely (ne dashboardy, ne RDL); Embedded ne; licence M365 Copilot</td>
</tr>
<tr>
<td><b>Copilot v Power BI a Fabricu</b></td>
<td>ptám se</td>
<td>totéž přímo v UI Power BI a Fabricu</td>
<td>zatím jen s Copilot Premium licencí, vedle standalone</td>
</tr>
<tr>
<td><b>Fabric data agent</b></td>
<td>ptám se / stavím</td>
<td>až 5 zdrojů, instrukce, dotazy SQL, DAX a KQL</td>
<td>oficiálně jen angličtina, 25 × 25 v odpovědi, stejný region, jen čtení</td>
</tr>
<tr>
<td><b>Copilot Studio</b></td>
<td>stavím</td>
<td>low-code agenti, konektory, publikace do Teams, M365 a na web; data agent jako tool</td>
<td>governance v Power Platform; platba v Copilot Credits</td>
</tr>
<tr>
<td><b>Microsoft Foundry Agent Service</b></td>
<td>stavím</td>
<td>pro-code agenti, volba modelu, tools, evaluace; publikace i do M365</td>
<td>vyžaduje vývoj a provoz v Azure; platba za tokeny</td>
</tr>
<tr>
<td><b>Foundry IQ</b></td>
<td>stavím</td>
<td>knowledge base nad dokumenty (Azure AI Search)</td>
<td>nestrukturovaná data, ne sémantika metrik</td>
</tr>
<tr>
<td><b>Power BI Authoring MCP</b></td>
<td>vyvíjím s agentem</td>
<td>agent vytváří a upravuje semantic model</td>
<td>ne pro odpovědi koncovým uživatelům</td>
</tr>
<tr>
<td><b>Fabric IQ (MCP)</b></td>
<td>stavím / vyvíjím</td>
<td>odpovědi nad Power BI daty pro vlastní agenty</td>
<td>jen konzumace, ne tvorba modelu</td>
</tr>
<tr>
<td><b>GitHub Copilot, Claude Code, Codex</b></td>
<td>vyvíjím s agentem</td>
<td>agentický vývoj kódu, TMDL a notebooků přes MCP</td>
<td>nejsou to konverzační nástroje pro byznys uživatele</td>
</tr>
</tbody>
</table></div>

<h2>Závěr</h2>

<p>Dnešní článek měl být mapou, ne průvodcem. Základ tvoří semantic model připravený pro AI. Nad ním se ptají Copilot v Power BI, Microsoft 365 Copilot a data agent. A agenty si stavíte buď v Copilot Studiu, nebo ve Foundry – podle toho, kdo staví a kde to má žít.</p>

<p>Každému z nástrojů dám samostatný díl. Začnu přípravou dat pro AI, protože bez ní je všechno ostatní loterie.</p>]]></description>
</item>
<item>
<title>Co je dbt a proč by mělo zajímat Power BI vývojáře</title>
<link>https://www.neoral.cz/2026/10/co-je-dbt-proc-by-melo-zajimat-power-bi.html</link>
<guid isPermaLink="true">https://www.neoral.cz/2026/10/co-je-dbt-proc-by-melo-zajimat-power-bi.html</guid>
<pubDate>Fri, 09 Oct 2026 13:17:46 GMT</pubDate>
<category>Microsoft Fabric</category>
<description><![CDATA[<p>Sémantický model v Power BI umí popisy (descriptions) u tabulek, sloupců i measures. Datový sklad pod ním obvykle ne. Nebo aspoň ne tak, aby je někdo skutečně udržoval. Jestli jste někdy otevřeli tabulku s názvem <code>col_17_flg</code> a hledali, co znamená, víte, o čem je řeč.</p>
<p>Tenhle článek je pro vývojáře z Power BI světa, kteří uvažují o Fabricu a slyšeli o dbt. Nebude to kompletní průvodce dbt. Vysvětlím, co to je, proč mě to zaujalo a jak se z popisů napsaných jednou dostanete až do sémantického modelu.</p>
<h2>Co je dbt (a co není)</h2>
<p>dbt (data build tool) je nástroj na transformace dat uvnitř databáze. Nenačítá data, neorchestruje celý svět a nemá vlastní úložiště. Dělá jednu věc: ze SQL dotazů (modelů) postaví tabulky a views ve správném pořadí a ohlídá, že výsledek sedí.</p>
<p>Pro člověka z Power BI se to dá přirovnat takto:</p>
<ul>
<li><strong>model</strong> je jeden <code>SELECT</code> uložený v souboru. dbt z něj udělá view nebo tabulku. Něco jako dotaz v Power Query, jen v SQL a ve skladu.</li>
<li><strong>ref()</strong> je odkaz na jiný model. Podle něj dbt pozná závislosti a sestaví <strong>lineage</strong> (graf, co z čeho vzniká). V Power BI znáte podobné zobrazení závislostí.</li>
<li><strong>test</strong> je pravidlo nad daty (<code>unique</code>, <code>not_null</code>, vztah mezi tabulkami). Spustí se spolu s buildem.</li>
<li><strong>YAML soubor</strong> vedle modelu popisuje model a sloupce: tady se píší <strong>descriptions</strong>. A právě to je důvod, proč jsem u dbt skončil.</li>
</ul>
<p>Všechno jsou to textové soubory v Gitu. Pro vývojáře z Power BI, který si zvykl na PBIP a TMDL, to není nic cizího.</p>
<h2>dbt ve Fabricu</h2>
<p>Fabric má vlastní položku <strong>dbt job</strong> (Data Factory). Spouští dbt Core ve spravovaném runtime, takže nic neinstalujete lokálně. Projekt vezmete z ukázky (Jaffle Shop) nebo z GitHub repozitáře, vyberete cíl (Warehouse, Lakehouse a další podporované adaptéry) a job můžete naplánovat. Po běhu uvidíte lineage, zkompilované SQL a výsledky. Podle oznámení z FabCon Europe (29. 9. 2026) je dbt job ve stavu GA. Oznámení: <a href="https://community.fabric.microsoft.com/blog/fbc_fabricupdatesblogs/fabconsqlcon-barcelona-2026-what%E2%80%99s-new-in-fabric-data-factory/5369551">FabCon/SQLCon Barcelona 2026: What’s new in Fabric Data Factory</a>. Zapíná se v tenant settings.</p>
<div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhdy4Q6hYZtyRR449t9o3d1wWxmMG5JYYeyg581e4WF9-gBTkv8ig-miU_E1S1PFFuEWgnExPHb-H4XTzjqFI7rnnHNaQCZUIt4jbpT8wI9t8BZdQguFBp5gKiKv43H-m0VHc74Tbo3T5GxAdfMpbLVNXEPpqCuqf-E_r9H2q_IBkWYqEp-3y69aQSi9pw" aria-label="Obrázek v plné velikosti"><img decoding="async" alt="" alt="" data-original-height="394" data-original-width="465" src="https://blogger.googleusercontent.com/img/a/AVvXsEhdy4Q6hYZtyRR449t9o3d1wWxmMG5JYYeyg581e4WF9-gBTkv8ig-miU_E1S1PFFuEWgnExPHb-H4XTzjqFI7rnnHNaQCZUIt4jbpT8wI9t8BZdQguFBp5gKiKv43H-m0VHc74Tbo3T5GxAdfMpbLVNXEPpqCuqf-E_r9H2q_IBkWYqEp-3y69aQSi9pw=w400-h339" width="400" /></a></div><p class="center"><i>Založení dbt jobu: vzorový projekt Jaffle Shop</i></p>
<div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjGH3aM_xQ_98WyNfVT9qyAt8mldkpoclDqAY6BNVi-KHUsK8eB82_htQY6C34ZdJSK8h4_7BS86Fk4rIH-A0QeitHY7opCZ3WjsQCkkjU1WPGm4mnqMTP89HOmrhh__NJFe7c1MrSDI42JH8lfcnGuaKR6aEj8E94BzWdoxokCjXlFBAUwKfTiWtfnIdA" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="375" data-original-width="915" src="https://blogger.googleusercontent.com/img/a/AVvXsEjGH3aM_xQ_98WyNfVT9qyAt8mldkpoclDqAY6BNVi-KHUsK8eB82_htQY6C34ZdJSK8h4_7BS86Fk4rIH-A0QeitHY7opCZ3WjsQCkkjU1WPGm4mnqMTP89HOmrhh__NJFe7c1MrSDI42JH8lfcnGuaKR6aEj8E94BzWdoxokCjXlFBAUwKfTiWtfnIdA" width="800" /></a></div><p class="center"><i>Připojení projektu k cíli: výběr profilu adaptéru</i></p>
<p>Adaptéry jsou dva důležité:</p>
<ul>
<li><strong>dbt-fabric</strong> pro Fabric Data Warehouse (T-SQL),</li>
<li><strong>dbt-fabricspark</strong> pro Lakehouse (Spark SQL přes Livy API, zapisuje Delta tabulky do OneLake).</li>
</ul>
<p>Rozdíl je podstatný: SQL analytics endpoint u Lakehouse je pro dbt jen pro čtení, takže transformace ve stylu T-SQL patří do Warehouse. Pokud je váš tým spíš Spark, sáhnete po Lakehouse.</p>
<div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhg_zUKMkSuZ8in47177tk777MhF-oYTifYiutAK0RYjcz5thIcE41QxCfk9AlomexX-49_OwR6LygDMFmRB_5SV4YdGuJ1Ugi9bSsdteLfu7-1XaxvEL1yWBwDaZs8-aqRZ32JTu7iwli7g1aqpF0taak_Bxdxc8zK4aax47tYWO4VjntKaj2QvxR21mw" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="421" data-original-width="627" src="https://blogger.googleusercontent.com/img/a/AVvXsEhg_zUKMkSuZ8in47177tk777MhF-oYTifYiutAK0RYjcz5thIcE41QxCfk9AlomexX-49_OwR6LygDMFmRB_5SV4YdGuJ1Ugi9bSsdteLfu7-1XaxvEL1yWBwDaZs8-aqRZ32JTu7iwli7g1aqpF0taak_Bxdxc8zK4aax47tYWO4VjntKaj2QvxR21mw" width="627" /></a></div><p class="center"><i>Nový Warehouse jako cíl dbt jobu</i></p>
<div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgMEUDMpW3fyihGNn6R0FCC--Ertp3I7a6iSZAT8-gMO-CvBjZ1yE-mn7_pUy9yRJMzB50YpysFSMeOhxvrclE7BbsNK08iJnkgqoGrBQ5uS7N_Vx3SeWOu4uWXhg2JOEdZrwac_IBnaoJkoZRllRBgqPZVmgcniiiT_lnfwcAbph2rC-yYTYWkUjzBwjk" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="337" data-original-width="543" src="https://blogger.googleusercontent.com/img/a/AVvXsEgMEUDMpW3fyihGNn6R0FCC--Ertp3I7a6iSZAT8-gMO-CvBjZ1yE-mn7_pUy9yRJMzB50YpysFSMeOhxvrclE7BbsNK08iJnkgqoGrBQ5uS7N_Vx3SeWOu4uWXhg2JOEdZrwac_IBnaoJkoZRllRBgqPZVmgcniiiT_lnfwcAbph2rC-yYTYWkUjzBwjk" width="543" /></a></div><p class="center"><i>Profil adaptéru: Warehouse, schéma jaffle_shop, nahrání seed dat</i></p>
<p>Dva praktické limity z dokumentace: dbt job nemá build cache (každý běh kompiluje projekt od nuly) a ne všechny partnerské adaptéry jsou ve Fabricu podporované.</p>
<h2>Proč mě to zajímalo: kde žijí popisy</h2>
<p>V sémantickém modelu Power BI je popis jednoduchý. Zapíšete ho do vlastností sloupce nebo do TMDL a uvidí ho každý, kdo model použije, včetně Copilota a dalších nástrojů, které se na model dotazují.</p>
<p>Pod tím je ale datový sklad. A tam popisy sloupců uložit nejde. Standardní cesta ze SQL Serveru (extended properties) ve Fabric Warehouse nefunguje: <code>sp_addextendedproperty</code> Warehouse odmítne s hláškou, že procedura není podporovaná. Praktický důsledek: popisy se nejčastěji řeší vedle databáze. Excelem, wiki nebo vlastní konfigurační databází, kam se píše, co který sloupec znamená. Funguje to, dokud to někdo udržuje. Obvykle to trvá do prvního release.</p>
<p>dbt tenhle problém řeší jinak. Popis sloupce leží ve stejném YAML souboru jako model, ve stejném commitu a prochází stejným code review. Změníte sloupec a popis vidíte hned vedle.</p>
<p>Ukázka z demo projektu Jaffle Shop (fiktivní e-shop, který dbt i Fabric nabízejí jako vzorový projekt):</p>
<pre tabindex="0"><code class="language-yaml">version: 2

models:
  - name: customers
    description: This table has basic information about a customer, as well as some derived facts based on a customer's orders
    columns:
      - name: customer_id
        description: This is a unique identifier for a customer
        tests:
          - unique
          - not_null
      - name: first_order
        description: Date (UTC) of a customer's first order
      - name: number_of_orders
        description: Count of the number of orders a customer has placed
      - name: total_order_amount
        description: Total value (AUD) of a customer's orders
</code></pre>
<div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEga7HAcy4M-Z4AyZ2BNSRU5XjFGKrtUKybgJw50LK7MXqdpHAnC7Zsfym9bvX4HmaAL7FB49OLubuHYUnYyWlBnPhT4UW-WR3BOrNH0yYvp0vlaUeZNbiQHz6dpv7R7-CMapNKJkYnBDrUkE_Kdv2eU6L293q_GeEVFR-rnKkeztW4i9Pr7jCBtYLunXSw" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="916" data-original-width="1812" src="https://blogger.googleusercontent.com/img/a/AVvXsEga7HAcy4M-Z4AyZ2BNSRU5XjFGKrtUKybgJw50LK7MXqdpHAnC7Zsfym9bvX4HmaAL7FB49OLubuHYUnYyWlBnPhT4UW-WR3BOrNH0yYvp0vlaUeZNbiQHz6dpv7R7-CMapNKJkYnBDrUkE_Kdv2eU6L293q_GeEVFR-rnKkeztW4i9Pr7jCBtYLunXSw" width="800" /></a></div><p class="center"><i>schema.yml s popisy v editoru dbt jobu ve Fabricu</i></p>
<p>Delší popis nemusíte cpát do YAML. Dá se napsat jako doc blok v Markdownu (<code>docs.md</code>) a z YAML na něj odkázat přes <code>{{ doc("orders_status") }}</code>. V demu takhle vypadá popis stavů objednávky:</p>
<div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiCXhL8capsq-tk1UIJ6CIpaKPGMZ8b3MXsA05MZ-aWeVrn3Xjg0KVOsm0ph92EWMVJA_E6BEMg4MnlX62q8Kt-02YVY9RcUrHyL8ZpmYA_ZR__OP3KRdINZ8kzPXZbe4bRWXYEap1nHQqaOjPAlLsnmGjp2u9yE6Kf6ml79A3WYnb4qDf90t7yu_bV5Og" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="500" data-original-width="1647" src="https://blogger.googleusercontent.com/img/a/AVvXsEiCXhL8capsq-tk1UIJ6CIpaKPGMZ8b3MXsA05MZ-aWeVrn3Xjg0KVOsm0ph92EWMVJA_E6BEMg4MnlX62q8Kt-02YVY9RcUrHyL8ZpmYA_ZR__OP3KRdINZ8kzPXZbe4bRWXYEap1nHQqaOjPAlLsnmGjp2u9yE6Kf6ml79A3WYnb4qDf90t7yu_bV5Og" width="800" /></a></div><p class="center"><i>Doc blok orders_status v souboru docs.md</i></p>
<p>Popisy a závislosti skončí v artefaktu <code>manifest.json</code>, který dbt job ve Fabricu ukládá při každém běhu do složky <code>target</code> v OneLake. Příkaz <code>dbt docs generate</code> k tomu přidá <code>catalog.json</code> se skutečnými sloupci a typy z databáze. Pozor: ve Fabricu se vygenerovaná dokumentace zatím nerenderuje jako web, máte jen soubory.</p>
<div class="separator"><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEja0JJwDJ-v7ewPFHsYKc3Brpmahlqx88rDoe5IbSPmSiXScEEQhVJlQrm0jC_GZIG8BF4rromZUaLwNkbIDiHrITCRV5Upx5v9ARmHziCUOgXq_sYMvX8CwMqM6a7XjTeahr8KDOJL2Kh6NxWFSgNt5KJSUmhNStgd75LsTmxiBrj2Hdcc64H59dZ-guA" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="349" data-original-width="1053" src="https://blogger.googleusercontent.com/img/a/AVvXsEja0JJwDJ-v7ewPFHsYKc3Brpmahlqx88rDoe5IbSPmSiXScEEQhVJlQrm0jC_GZIG8BF4rromZUaLwNkbIDiHrITCRV5Upx5v9ARmHziCUOgXq_sYMvX8CwMqM6a7XjTeahr8KDOJL2Kh6NxWFSgNt5KJSUmhNStgd75LsTmxiBrj2Hdcc64H59dZ-guA" width="800" /></a></div><div class="separator"><br /></div><br /><br /></div><p class="center"><i>Příkazy dbt jobu, mezi nimi i docs generate</i></p>
<h2>Popisy až do databáze</h2>
<p>dbt umí popisy zapsat i do samotné databáze, jako komentáře k tabulkám a sloupcům. Slouží k tomu konfigurace <code>persist_docs</code>:</p>
<pre tabindex="0"><code class="language-yaml">models:
  my_project:
    +persist_docs:
      relation: true
      columns: true
</code></pre>
<p>Na řadě platforem to funguje (Snowflake, Databricks, BigQuery a další). Pro Fabric je situace rozdělená a vyzkoušel jsem si obě varianty:</p>
<ul>
<li><strong>Warehouse (dbt-fabric):</strong> dokumentace dbt <code>persist_docs</code> pro tento adaptér neuvádí a test to potvrdil. <code>dbt run</code> s <code>persist_docs</code> končí chybou „alter_relation_comment macro not implemented for adapter fabric“, u sloupců totéž s <code>alter_column_comment</code>. Model s <code>persist_docs</code> tedy spadne, pro Warehouse ho nechte vypnutý.</li>
<li><strong>Lakehouse (dbt-fabricspark):</strong> <code>persist_docs</code> funguje. Popis tabulky i sloupců skončí v metadatech Delta tabulky (ověřil jsem v Delta logu). SQL analytics endpoint je ale do T-SQL metadat nepromítne (<code>sys.extended_properties</code> zůstane prázdné), takže přes T-SQL je neuvidíte.</li>
</ul>
<p>Proč to ale není slepá ulička: popisy nemusí být v databázi, aby je někdo přečetl. Jsou v dbt projektu a v artefaktech. Kdo potřebuje metadata, přečte je odtud. A tím se dostávám k tomu, co mě na tom baví nejvíc.</p>
<h2>Agent staví sémantický model a popisy si přečte sám</h2>
<p>Sémantický model Power BI dnes umíme stavět i s agentem. Microsoft k tomu má Power BI Authoring MCP server (lokální verze se instaluje jako <code>powerbi-modeling-mcp</code>), který umí s modelem pracovat (tabulky, sloupce, measures, vztahy, popisy). Agent pak může model sestavit nad vaším skladem.</p>
<p>Obvyklý problém: agent vidí názvy sloupců a typy, ale neví, co znamenají. Model pak vznikne bez popisů, nebo se popisy domýšlejí. A domýšlené popisy jsou horší než žádné.</p>
<p>Pokud ale agent dostane k dispozici dbt projekt (nebo <code>manifest.json</code>), může popisy převzít. Zadání je jednoduché: „Postav sémantický model nad schématem <code>jaffle_shop</code>, popisy a vztahy převezmi z dbt projektu.“ Agent přečte popis <code>customer_id</code> z YAML a zapíše ho jako description sloupce v modelu. Vztah <code>orders</code> → <code>customers</code> odvodí z testu <code>relationships</code>, který je v YAML u sloupce <code>orders.customer_id</code>. Co jednou popíšete v dbt projektu, agent přenese do sémantického modelu bez ručního přepisování. Copilot a Fabric data agent pak nad modelem mají k dispozici popisy, které byste jinak psali ručně.</p>
<div class="separator"><img loading="lazy" decoding="async" alt="" alt="Výstup agenta" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQxUKiNOauq1dj5BLfpKTeOVlncdPhJWj4_4BBOht-SAcuaUjmw7WNKXCqhHT0qRy6eD-qJLiBkmq9GUkvzfaTis-VtvW_Xnk3o-BMWRtrNU75FAolxL5RQjq-d3jXVT8vdR0bWBAClat2nmN8900LTSkmEtOdJwPKIMfCVcBj6e3C3-kuP8MlJDNw8zw/s1600/image.jpeg" width="800" /></div><p class="center"><i>Zadání agentovi a shrnutí jeho běhu (výstup přepsaný do přehledné podoby), včetně nahlášeného nesouladu</i></p><div class="separator"><img loading="lazy" decoding="async" alt="" alt="TMDL s popisy z dbt" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEib-0_e1LL9v2jGA7LEOVDDFFVw7quNPdLRWd0KZXDatI12ZHqBFYZwRkpanxH8z-m81H42WSigzHa3xPwG20D924Lt1YzHykIogLIZWtk8vQGPQZFd6vVF9imH0XoQ6ADFSaN797fWEHPrIL28yg9Uz3J7ue_TOhkd4x6K6aPcmerLrImC6UpS3vLraDQ/s1600/image.jpeg" width="800" /></div><p class="center"><i>Výsledný model v TMDL view: popisy z dbt jako /// komentáře</i></p>
<p>Jedna pojistka: popis z dbt je vstup, ne pravda. Hezky se to ukázalo hned v demu. YAML popisuje u zákazníka sloupec <code>total_order_amount</code> (viz ukázka výše), jenže tabulka ve Warehouse ho nemá, místo něj obsahuje <code>customer_lifetime_value</code> bez popisu. Nesoulad je přímo ve vzorovém projektu. Agent to porovnal se skutečnou tabulkou, nesouhlasící popis nepoužil a nesoulad nahlásil. Kdyby popisy jen slepě kopíroval, měli byste v modelu popis ke sloupci, který neexistuje. Agentovi proto dejte za úkol model postavit a nesoulady hlásit, ale zkontrolovat ho musíte vy.</p>
<h2>Demo</h2>
<p>Demo stojí na vzorovém projektu Jaffle Shop (fiktivní e-shop: zákazníci, objednávky, platby) ve Fabric Warehouse. Postup:</p>
<ol>
<li>dbt job ve Fabricu nad Warehouse, modely ve dvou vrstvách (staging a výsledné tabulky <code>customers</code> a <code>orders</code>).</li>
<li>Popisy sloupců výsledných tabulek v YAML, testy <code>unique</code>, <code>not_null</code>, <code>relationships</code> a <code>accepted_values</code>.</li>
<li>Spuštění jobu s příkazem <code>build</code>, kontrola lineage a výsledků testů.</li>
<li>Agent načte popisy z dbt projektu a postaví nad Warehouse sémantický model (Direct Lake).</li>
<li>Výsledek v Power BI: popisy tabulek a sloupců ve vlastnostech modelu.</li>
</ol>


<div class="separator"><img loading="lazy" decoding="async" alt="" alt="Lineage view" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZCelMPogAqLDt9KOQQjbE45bM220uYfp9KQmYiSFuoiKV4yCkK5qG5eWBRKFvbB6rURff6Xi0ljkTG75N3rYcHPRcVtEw1FI6pFRxYLfnS_w0B02ImhVc069qFfIxiTiY_1Rh3g8fEJadvuUZL-rw3qUhvIvYhgJMssWbcaukff0lur5T9RrEDK7blN0/s1600/image.jpeg" width="800" /></div><p class="center"><i>Lineage view v dbt jobu: seedy, staging a výsledné tabulky</i></p>
<div class="separator"><img loading="lazy" decoding="async" alt="" alt="Výsledky dbt build" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi177FIXc7ikleN2Z5cXf0fdnd2u_WK29xeJtqoAc-XBVp27ua_3WwjyQj4ciGYyg8lzjZZX_XLGKmpMiLEfAxPa9SrAi5Uvy8CFBpfH9eb9w037pfG3iiRTYcj02EWLe15o812oe0gNGlzNyYkQMyD3oVoPdmhwwQl_T4t-TBEr-EbqtZCp63jdAtv-Pw/s1600/image.jpeg" width="800" /></div><p class="center"><i>Výsledek dbt build: modely i testy prošly</i></p>
<div class="separator"><img loading="lazy" decoding="async" alt="" alt="Sémantický model s popisy" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGWyQmwmnkk-3-Su14mB93URnscqTrVIuyMZfyRx4ituWLiUNgp5n-fRxxDOfZ6vh9rlvcoEY0ruAd1IW2yBva9hwSH6QnwbaGgesXxfXzAPNuRJ0lt9KcDgtF9fWTeOKRH14Db5xfSdYI-a1Yy2I2bE-zolvyZkoqM11FJdUSXZtsF92VE8fRjCXH1aw/s1600/image.jpeg" width="800" /></div><p class="center"><i>Sémantický model (Direct Lake) ve Fabricu: popis sloupce first_order převzatý z dbt</i></p>
<p>Chování <code>persist_docs</code> ve Warehouse a v Lakehouse jsem zkoušel zvlášť na malém testovacím modelu (výsledky viz výše).</p><h2>Kdy to dává smysl a kdy ne</h2>
<p>Dává to smysl, pokud:</p>
<ul>
<li>máte transformace ve skladu v SQL a chcete je verzovat, testovat a mít lineage,</li>
<li>chcete jedno místo pro popisy, které se dostane i do sémantického modelu,</li>
<li>už dbt znáte, nebo máte tým, který zvládne Git.</li>
</ul>
<p>Nedává to smysl, pokud:</p>
<ul>
<li>máte pár tabulek a transformace řešíte jednou za čas,</li>
<li>nikdo nechce psát popisy: dbt je nevymyslí, jen je udrží u kódu,</li>
<li>potřebujete něco, co dbt Core nemá. dbt job ve Fabricu dnes spouští dbt Core, novější engine Fusion v něm zatím není.</li>
</ul>
<h2>Závěr</h2>
<p>Dnešní článek měl ukázat, co je dbt a proč ho zvážit ve Fabricu, i když jste vývojář Power BI. Pro mě je hlavní důvod popisy: napsat je jednou u kódu a nechat je přečíst agenta, který staví sémantický model. Warehouse a Lakehouse se v tom chovají odlišně, proto si to vyzkoušejte na malém projektu dřív, než to nasadíte na něco důležitého.</p>
<p>Zdroje:</p>
<ul>
<li><a href="https://learn.microsoft.com/fabric/data-factory/dbt-job-overview">dbt job ve Fabricu (Microsoft Learn)</a></li>
<li><a href="https://docs.getdbt.com/docs/build/documentation">Dokumentace a doc bloky v dbt</a></li>
<li><a href="https://docs.getdbt.com/reference/resource-configs/persist_docs">persist_docs (dokumentace dbt)</a></li>
<li><a href="https://docs.getdbt.com/docs/core/connect-data-platform/fabricspark-setup">dbt-fabricspark setup (dokumentace dbt)</a></li>
<li><a href="https://learn.microsoft.com/power-bi/developer/mcp/mcp-servers-overview">Power BI MCP servery (Microsoft Learn)</a></li>
</ul>]]></description>
</item>
<item>
<title>FabCon Europe 2026 Barcelona – přehled pro Power BI a Fabric</title>
<link>https://www.neoral.cz/2026/09/fabcon-europe-2026-barcelona-prehled.html</link>
<guid isPermaLink="true">https://www.neoral.cz/2026/09/fabcon-europe-2026-barcelona-prehled.html</guid>
<pubDate>Wed, 30 Sep 2026 13:20:41 GMT</pubDate>
<category>Microsoft Fabric</category>
<description><![CDATA[<p>Loni jsem <a href="https://www.neoral.cz/2025/09/fabcon-europe-vienna-2025.html">z vídeňského FabConu</a> psal, že pokud to jen trochu půjde, pojedu na další ročník znovu. Letos mi to fyzicky nevyšlo. Sedím doma a FabCon sleduju na dálku – keynote posty, produktové blogy, feature summary. Bedlivě.</p>
<p>Tenhle článek je přehled toho podstatného, co Microsoft k letošnímu FabConu a SQLConu oznámil. Nejedná se o kompletní seznam – jen zářijový <a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/Fabric-September-2026-Feature-Summary/ba-p/5325825">Fabric Feature Summary</a> má víc položek, než kolik kdo z nás stihne za týden vyzkoušet.</p>
<h2>Power BI jako kód: PBIP je GA</h2>
<p>Pro mě zpráva dne. <b><a href="https://community.fabric.microsoft.com/t5/Power-BI-Updates-Blog/Power-BI-September-2026-Feature-Summary/ba-p/5325831">Power BI Projects (PBIP) jsou Generally Available</a>.</b> A <b>PBIR je nově výchozím formátem reportu</b> pro PBIX i PBIP – legacy reporty se při editaci automaticky převádějí. Pokud máte skripty, které parsují starý report.json, zkontrolujte je. Btw. tady se jedná o dobrou zprávu pro všechny, kteří jsou na on premises Power BI Report serveru. Protože tam se dostanou jen věci v GA... Další release?</p>
<p>K tomu <b><a href="https://community.fabric.microsoft.com/t5/Power-BI-Updates-Blog/Power-BI-September-2026-Feature-Summary/ba-p/5325831">Power BI Agentic Experiences</a> jsou GA</b> – Power BI Authoring MCP, Power BI Desktop Bridge CLI a skills-for-fabric. <b>Remote Power BI Authoring MCP Server</b> je v preview. Nic neinstalujete a funguje i na Macu. Lokální MCP zůstává GA.</p>
<p>Na Power BI Day 2026 jsem <a href="https://www.neoral.cz/2026/03/gen-ai-power-bi-layout-kdo-si-poradi.html">živě ukazoval Claude nad Power BI reportem</a>. Tohle je pro mě jasný signál, že verzování a práce s agenty nejsou experiment, ale standardní cesta. O integraci s Gitem jsem psal <a href="https://www.neoral.cz/2025/11/integrace-s-gitem-nastaveni.html">tady</a>.</p>
<h2>Aplikace v Power BI – i pro Pro a PPU</h2>
<p><b><a href="https://community.fabric.microsoft.com/t5/Power-BI-Updates-Blog/Power-BI-s-next-chapter-The-evolution-of-business-intelligence/ba-p/5369131">Agentic app creation v Power BI Desktop</a></b> – nad semantic modelem popíšete v přirozeném jazyce, co potřebujete, a vznikne aplikace. Umí i write-back a publikuje se do Fabricu přes Fabric Apps. Je to <b>preview</b>, termín ale Microsoft uvádí různě (jednou týdny, jednou měsíce). Nechám se překvapit.</p>
<p>Zásadní je licencování. <b><a href="https://azure.microsoft.com/en-us/blog/fabcon-and-sqlcon-2026-in-barcelona-building-the-data-foundation-for-microsoft-copilot-and-agents/">Apps in Power BI budou v preview i pro Power BI Pro a PPU</a></b> bez příplatku, včetně Fabric Apps a Fabric Database – <b>až 1 GB na aplikaci</b>. Fabric Apps se mají objevit i v <b><a href="https://community.fabric.microsoft.com/t5/Power-BI-Updates-Blog/Power-BI-September-2026-Feature-Summary/ba-p/5325831">Org apps</a></b> (Coming Soon).</p>
<p><a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/From-prompt-to-production-What-s-new-in-Fabric-Apps/ba-p/5369134">Fabric Apps</a> se připojují na <b>semantic model read-only a posílají do něj DAX dotazy</b>, do SQL DB a warehouse jde i zapisovat. Delegovaná autentizace vynucuje oprávnění včetně RLS. Aplikace tak dostane stejné číslo jako report a stejný uživatel uvidí stejná data. Jak jsem data app nad DAX dotazy stavěl v červnu, popisuju v článku <a href="https://www.neoral.cz/2026/06/fabric-apps-nahrada-power-bi-reportu.html">Fabric Apps – náhrada Power BI reportů?</a></p>
<h2>Modelování a DAX</h2>
<ul>
<li><b><a href="https://community.fabric.microsoft.com/t5/Power-BI-Updates-Blog/Power-BI-September-2026-Feature-Summary/ba-p/5325831">Vytváření a editace DirectQuery modelů v Power BI service</a></b> – další krok k paritě webu a Desktopu.</li>
<li><b><a href="https://community.fabric.microsoft.com/t5/Power-BI-Updates-Blog/Power-BI-September-2026-Feature-Summary/ba-p/5325831">APPROXIMATEDISTINCTCOUNT pro Import a Direct Lake</a></b> (preview). Standardní chyba kolem 1,6 %. Na počty zákazníků v přehledovém reportu ano, na finanční čísla ani náhodou.</li>
<li><b><a href="https://community.fabric.microsoft.com/t5/Power-BI-Updates-Blog/Power-BI-September-2026-Feature-Summary/ba-p/5325831">String Indexing</a></b> a <b>Full-Text Search</b> v semantic modelech (preview).</li>
<li><b><a href="https://community.fabric.microsoft.com/t5/Power-BI-Updates-Blog/Power-BI-September-2026-Feature-Summary/ba-p/5325831">Nový Power Query editor</a></b> v Power BI Desktopu (preview).</li>
<li><b><a href="https://community.fabric.microsoft.com/t5/Power-BI-Updates-Blog/Power-BI-s-next-chapter-The-evolution-of-business-intelligence/ba-p/5369131">Semantic views</a></b> – governed metriky a sémantika definované přímo nad daty ve OneLake. Zatím jen „early look".</li>
<li><b><a href="https://community.fabric.microsoft.com/t5/Power-BI-Updates-Blog/Microsoft-Snowflake-s-Commitment-to-Apache-Ossie/ba-p/5369534">Apache Ossie (incubating)</a></b> – vendor-neutral standard výměny sémantických metadat, za kterým stojí Microsoft spolu se Snowflake. Open source <a href="https://github.com/apache/ossie/tree/main/converters/microsoft">Microsoft converter</a> převede Ossie dokument na Power BI semantic model i Snowflake Semantic View – sémantiku definujete jednou, bez přesunu dat. Výhledově má být DAX uznávaným dotazovacím jazykem Ossie.</li>
</ul>
<h2>Copilot a governance</h2>
<p><b><a href="https://azure.microsoft.com/en-us/blog/fabcon-and-sqlcon-2026-in-barcelona-building-the-data-foundation-for-microsoft-copilot-and-agents/">Fabric IQ v Microsoft Copilot Chat a Cowork</a> je GA.</b> Copilot odpovídá nad vašimi Power BI modely a reporty, a to bez dodatečných nákladů na AI tokeny. <b><a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/Fabric-September-2026-Feature-Summary/ba-p/5325825">Fabric IQ MCP Server</a></b> je taky GA.</p>
<p><b><a href="https://community.fabric.microsoft.com/t5/Power-BI-Updates-Blog/Power-BI-September-2026-Feature-Summary/ba-p/5325831">Microsoft 365 Copilot přímo v Power BI a Fabricu</a></b> je v preview, se sdílenou historií konverzací. <b><a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/Bringing-governed-analytics-into-the-flow-of-work-Fabric/ba-p/5368918">Fabric data agents v Microsoft Copilot Studio</a></b> jsou GA.</p>
<p>A teď to, co bych jako admin řešil nejdřív. Na semantic modelu přibylo <a href="https://community.fabric.microsoft.com/t5/Power-BI-Updates-Blog/Power-BI-September-2026-Feature-Summary/ba-p/5325831">nastavení</a>, které <b>zakáže read-only uživatelům přístup k modelu přes Copilot a Microsoft MCP nástroje</b>. Výchozí hodnota je povoleno. K tomu <b><a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/Bringing-governed-analytics-into-the-flow-of-work-Fabric/ba-p/5368918">Restrict from Copilot</a></b> – admin určí, které semantic modely smí do AI experience. Sensitivity labels a DLP se do Copilot experience propisují. Pokud máte modely, které do AI nepatří, projděte je teď, ne až po incidentu.</p>
<h2>Drobnosti, které potěší</h2>
<ul>
<li><a href="https://community.fabric.microsoft.com/t5/Power-BI-Updates-Blog/Power-BI-September-2026-Feature-Summary/ba-p/5325831">Export do Excelu</a> („Data with current layout") ze 150 000 na <b>500 000 řádků</b> (GA).</li>
<li><b><a href="https://community.fabric.microsoft.com/t5/Power-BI-Updates-Blog/Power-BI-September-2026-Feature-Summary/ba-p/5325831">Visual calculations pro small multiples</a></b> (GA). O visual calculations jsem psal <a href="https://www.neoral.cz/2025/02/visual-calculations.html">zde</a>.</li>
<li><b><a href="https://community.fabric.microsoft.com/t5/Power-BI-Updates-Blog/Power-BI-September-2026-Feature-Summary/ba-p/5325831">Design ribbon</a></b> (GA).</li>
<li>Pozor na <a href="https://community.fabric.microsoft.com/t5/Power-BI-Updates-Blog/Power-BI-September-2026-Feature-Summary/ba-p/5325831">deprecation</a>: od října ztratí verze Power BI Desktopu z března 2026 a starší možnost ukládat do OneDrive/SharePoint. Aktualizujte.</li>
</ul>
<h2>Fabric: kapacity a billing</h2>
<p><b><a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/Build-deploy-and-govern-Microsoft-Fabric-at-scale/ba-p/5369145">Fabric zero-provisioned (F0)</a></b> – start bez provisionované kapacity, s on-demand billingem jako výchozím (preview). <b>On-demand billing napříč Fabric workloady</b> má brzy přijít v preview a <b><a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/FabCon-and-SQLCon-Barcelona-2026-What-s-new-in-Microsoft-OneLake/ba-p/5369146">on-demand billing pro OneLake compute</a></b> – přístup k datům nezávislý na běžící kapacitě – má dorazit v preview v příštích týdnech. F0 chci otestovat hned, jak bude k dispozici.</p>
<p>Dál: <b><a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/Build-deploy-and-govern-Microsoft-Fabric-at-scale/ba-p/5369145">Capacity overage</a></b> je GA, <b>SKU F4096 a F8192</b> jsou GA a <b>workspace-level surge protection</b> má být GA brzy.</p>
<h2>CI/CD, Git a observability</h2>
<ul>
<li><b><a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/Build-deploy-and-govern-Microsoft-Fabric-at-scale/ba-p/5369145">Deployment plans</a></b> (preview) – nový workspace item, vizuální pořadí nasazení, YAML jako source of truth, kroky před a po nasazení.</li>
<li><b><a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/Fabric-September-2026-Feature-Summary/ba-p/5325825">Bulk import/export item definition APIs</a></b> (GA).</li>
<li>Git: <b><a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/Fabric-September-2026-Feature-Summary/ba-p/5325825">branch workspace, selective branching, compare and commit</a></b> (GA); file-level commit a branch workspace admin profile (preview).</li>
<li><b><a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/Build-deploy-and-govern-Microsoft-Fabric-at-scale/ba-p/5369145">Observability in Fabric</a></b> (preview) – workspace monitoring sjednocený do jednoho eventhouse, přepracovaný Monitor Hub, pohled na kapacitu a Activator alerty na joby. <b><a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/Trusted-AI-starts-with-Microsoft-Fabric-Real-Time-Intelligence/ba-p/5369528">Fabric Observability Insights</a></b> (public preview) – operations agent vyšetří třeba selhání pipeline.</li>
<li><b><a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/Fabric-September-2026-Feature-Summary/ba-p/5325825">Fabric Core MCP Server</a></b> (GA).</li>
</ul>
<h2>Governance a OneLake</h2>
<ul>
<li><b><a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/Build-deploy-and-govern-Microsoft-Fabric-at-scale/ba-p/5369145">Policies in Fabric</a></b> (preview) – řízení přístupu na základě atributů.</li>
<li><b><a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/Fabric-September-2026-Feature-Summary/ba-p/5325825">DLP policies – restrict access to sensitive data</a></b> (GA), rozšířené <b><a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/Build-deploy-and-govern-Microsoft-Fabric-at-scale/ba-p/5369145">OneLake catalog Govern</a></b> (GA), <b><a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/FabCon-and-SQLCon-Barcelona-2026-What-s-new-in-Microsoft-OneLake/ba-p/5369146">Outbound access protection pro OneLake shortcuts</a></b> (GA).</li>
<li><b><a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/Build-deploy-and-govern-Microsoft-Fabric-at-scale/ba-p/5369145">OneLake catalog v Excelu</a></b> (preview) a <a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/FabCon-and-SQLCon-Barcelona-2026-What-s-new-in-Microsoft-OneLake/ba-p/5369146">na úrovni tabulek a sloupců</a> včetně náhledu dat.</li>
<li><b><a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/FabCon-and-SQLCon-Barcelona-2026-What-s-new-in-Microsoft-OneLake/ba-p/5369146">OneLake Table Read API</a></b> (preview) – čtení Delta/Iceberg tabulek bez SQL přes Apache Arrow, s vynucením table/row/column security.</li>
<li><b><a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/FabCon-and-SQLCon-Barcelona-2026-What-s-new-in-Microsoft-OneLake/ba-p/5369146">Azure Databricks: čtení a zápis přes native storage v OneLake</a></b> – nově podporované v produkci.</li>
<li><b><a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/FabCon-and-SQLCon-Barcelona-2026-What-s-new-in-Microsoft-OneLake/ba-p/5369146">IQ sharing</a></b> (preview, brzy) – sdílení governed dat a kontextu mimo organizaci.</li>
<li><a href="https://azure.microsoft.com/en-us/blog/fabcon-and-sqlcon-2026-in-barcelona-building-the-data-foundation-for-microsoft-copilot-and-agents/">Mirroring <b>Google BigQuery</b></a> (GA), obousměrná integrace se <b>Salesforce Data Cloud 360</b> (preview), <a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/FabCon-and-SQLCon-Barcelona-2026-What-s-new-in-Microsoft-OneLake/ba-p/5369146">shortcuts na verzovaná data v <b>lakeFS</b>, federace Iceberg katalogů</a> (AWS Glue, Google).</li>
</ul>
<h2>Data Factory</h2>
<ul>
<li><b><a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/FabCon-SQLCon-Barcelona-2026-What-s-new-in-Fabric-Data-Factory/ba-p/5369551">Mirroring for SharePoint Lists</a></b> (GA) a rozšířený mirroring včetně <b>Change Data Feeds</b> (GA).</li>
<li><b><a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/FabCon-SQLCon-Barcelona-2026-What-s-new-in-Fabric-Data-Factory/ba-p/5369551">Snowflake Security Roles Replication</a></b> (public preview) – role a oprávnění ze Snowflake se překládají do OneLake security.</li>
<li>Mirroring <b>Dynamics 365 Business Central</b> – brzy.</li>
<li><b><a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/FabCon-SQLCon-Barcelona-2026-What-s-new-in-Fabric-Data-Factory/ba-p/5369551">dbt Job in Fabric</a></b> (GA), dbt Core v2 (Fusion) brzy.</li>
<li><b><a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/FabCon-SQLCon-Barcelona-2026-What-s-new-in-Fabric-Data-Factory/ba-p/5369551">Dataflow Gen2</a></b>: optimalizovaný zápis do lakehouse, V-Order compression controls, Shared Queries, nové destinace včetně Excelu a e-mailu, stažitelná diagnostika.</li>
<li>Pipelines: <b>Lakehouse Maintenance activity</b> (vacuum/optimize), <b>pipeline-level dependencies</b>, exponential retry a Approval activity.</li>
<li><b><a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/Modernize-your-Azure-Data-Estate-with-Microsoft-Fabric-A-guided/ba-p/5369129">Upgrade experience z Azure Data Factory</a></b> – ADF pipelines vidíte ve Fabric workspace, s posouzením kompatibility a postupným upgradem.</li>
</ul>
<h2>Data Engineering a Data Warehouse</h2>
<ul>
<li><b><a href="https://azure.microsoft.com/en-us/blog/fabcon-and-sqlcon-2026-in-barcelona-building-the-data-foundation-for-microsoft-copilot-and-agents/">Data engineering agent</a></b> (preview) – technologie z akvizice Osmos, pro migrace, modernizaci lakehouse a ETL. Funguje i z GitHub Copilotu, VS Code, Codexu nebo Claude Code.</li>
<li><b><a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/Bringing-governed-analytics-into-the-flow-of-work-Fabric/ba-p/5368918">Runtime 2.0: Spark 4.0 + Delta Lake 4.0</a>.</b></li>
<li><b><a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/Bringing-governed-analytics-into-the-flow-of-work-Fabric/ba-p/5368918">Materialized Lake Views</a></b> (GA) a <b><a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/Fabric-September-2026-Feature-Summary/ba-p/5325825">Custom Live Pools</a></b> (GA).</li>
<li><b><a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/Bringing-governed-analytics-into-the-flow-of-work-Fabric/ba-p/5368918">GPU-accelerated query execution</a></b> ve warehouse (public preview) – zapíná se na úrovni workspace, bez změn dat a SQL.</li>
<li><b><a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/Fabric-September-2026-Feature-Summary/ba-p/5325825">Custom SQL pools</a></b> (GA), Teradata Migration Assistant (preview), <a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/Bringing-governed-analytics-into-the-flow-of-work-Fabric/ba-p/5368918">nový node-based billing model</a> pro warehouse.</li>
<li><a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/Modernize-your-Azure-Data-Estate-with-Microsoft-Fabric-A-guided/ba-p/5369129">Migration assistant ze Synapse dedicated SQL pools</a> umí nově <b>incremental migration</b>.</li>
</ul>
<h2>Fabric Apps a Planning</h2>
<p><a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/From-prompt-to-production-What-s-new-in-Fabric-Apps/ba-p/5369134">Fabric Apps</a> dostaly PostgreSQL vedle SQL Serveru, TypeScript functions se Secret Store, vestavěné metriky používání a plugin Rayfin pro GitHub Copilot. Rayfin SDK a CLI jsou open source. Deployment pipelines pro Fabric Apps jsou zatím v plánu na zbytek roku.</p>
<p>U <a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/Planning-in-Microsoft-Fabric-From-insight-to-action/ba-p/5369552">Planningu</a> (GA od července) přibyl <b>Native Planning Engine</b> (preview, Rust + Apache Arrow, až 10× výkon), writeback plánu zpět do semantic modelu a event triggery po writebacku – spustíte pipeline, refresh modelu nebo notebook. O cestě od SSAS writebacku k Fabric Planningu jsem psal <a href="https://www.neoral.cz/2026/05/upravy-dat-v-bi-modelech-od-ssas-pres.html">v tomto článku</a>.</p>
<h2>Fabric IQ a Real-Time Intelligence</h2>
<ul>
<li><a href="https://azure.microsoft.com/en-us/blog/fabcon-and-sqlcon-2026-in-barcelona-building-the-data-foundation-for-microsoft-copilot-and-agents/">Agentic tvorba ontologií</a> ze semantic modelů, OneLake dat a dokumentů – včetně <b>Power BI DAX measures v ontologii</b>.</li>
<li><a href="https://azure.microsoft.com/en-us/blog/fabcon-and-sqlcon-2026-in-barcelona-building-the-data-foundation-for-microsoft-copilot-and-agents/">Operations agent</a>: root-cause analysis a pre-approved actions (preview).</li>
<li><b><a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/Fabric-September-2026-Feature-Summary/ba-p/5325825">Business Events</a></b> (GA), Copilot tvorba Real-Time Dashboardu (preview).</li>
</ul>
<h2>SQLCon</h2>
<ul>
<li><b><a href="https://azure.microsoft.com/en-us/blog/fabcon-and-sqlcon-2026-in-barcelona-building-the-data-foundation-for-microsoft-copilot-and-agents/">Database Hub in Fabric</a></b> (preview).</li>
<li><b><a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/Connecting-apps-databases-and-AI-on-one-foundation-new/ba-p/5369538">Database agents pro SQL a PostgreSQL</a></b> – rolling out v preview.</li>
<li><b><a href="https://azure.microsoft.com/en-us/blog/fabcon-and-sqlcon-2026-in-barcelona-building-the-data-foundation-for-microsoft-copilot-and-agents/">DiskANN vector indexes</a></b> (GA) v Azure SQL DB Hyperscale, SQL MI a SQL database ve Fabricu.</li>
</ul>
<h2>Závěr</h2>
<p>Dnešní článek měl shrnout, co Microsoft oznámil na FabConu Europe 2026 v Barceloně – nejdřív pro Power BI, potom pro Fabric. Pro Power BI vývojáře je to hlavně PBIP v GA a agentic vývoj, který opustil preview. Pro Fabric nový pohled na billing a spousta práce kolem governance a CI/CD.</p>
<p>Berte to jako snapshot stavu k 30. 9. 2026 – u řady položek Microsoft termín ani status zatím neuvádí. Svůj osobní výběr toho, co budu zkoušet jako první, pošlu v příštím Weekly BI Digestu.</p>
]]></description>
</item>
<item>
<title>Fabric Apps – náhrada Power BI reportů?</title>
<link>https://www.neoral.cz/2026/06/fabric-apps-nahrada-power-bi-reportu.html</link>
<guid isPermaLink="true">https://www.neoral.cz/2026/06/fabric-apps-nahrada-power-bi-reportu.html</guid>
<pubDate>Wed, 10 Jun 2026 07:46:06 GMT</pubDate>
<category>Microsoft Fabric</category>
<description><![CDATA[<p>Minulý týden jsem vzal svůj starý report a zkusil z něj udělat Fabric Data App. Ten report je jedno z mých prvních produkčních Power BI děťátek. Je to můj otloukánek pro všechny možné demonstrace – znám ho datově i byznysově, vím co jsem v něm dělal historicky špatně a co bych dneska udělal jinak. Právě proto je to vždycky kandidát na hraní. O pár dní později jsme to s Vojtou rozebrali v Cestě do Fabricu, protože na Buildu 2026 to bylo jedno z nejzajímavějších oznámení.</p>

<h2>Co jsou Fabric Apps</h2>

<p>Fabric Apps jsou nový typ itemu ve workspace. V kostce – webová aplikace, která běží přímo na Fabricu. Žádný externí hosting, žádné lepení krabiček od různých vendorů. Autentizace přes Entra ID, governance přes workspace permissions, data přes OneLake.</p>

<p>Dají se rozdělit na dvě části. Jednak <b>operační appky</b> – plnohodnotné webové aplikace, kde data nejen čtete, ale i zapisujete. Pamatujete, jak jsme se v jednom z předchozích dílů Cesty do Fabricu bavili o tom, že write-back může řešit i planning? Tohle je přesně ta kategorie. A zajímavé je to i pro nás z Power BI světa, protože to řeší věci, které Power BI samo o sobě nikdy neřešilo. A pak <b>data apps</b> – vizualizační dashboardy nad sémantickým modelem, kde se dotazy posílají přes DAX. Na ty se zaměřím hlavně.</p>

<h2>Kde je Rayfin</h2>

<p>S Fabric Apps úzce souvisí <b>Rayfin</b> – open-source SDK a CLI. Rayfin je nástroj, Fabric Apps je výsledek. Napíšete <b>npx rayfin up</b> a Rayfin vám nasadí kompletní backend – SQL databázi, GraphQL API, autentizaci, static hosting – přímo do vašeho Fabric tenantu. Microsoft to na Buildu demonstroval ve spolupráci s <a href="https://replit.com/">Replitem</a> a byznys problém pojmenoval přesně: vygenerovat frontend zvládne dnes agent za hodinu. Produkční backend, který je bezpečný, škálovatelný a s důrazem na governance – to je ta těžší část. Rayfin ji řeší tím, že to všechno dědí z Fabricu. Detaily najdete v <a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/Introducing-Rayfin-A-new-AI-first-way-to-build-deploy-and-govern/ba-p/5191676">oficiálním blog postu na Fabric Community</a>.</p><p></p><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhHDP0lTDcyzSgrzFiuO3442C9TPFSLWhbjM4vOu8p-A5loUEus8ENrBIWDiSmz0x1BiCPCKY7D0uQ8uFs4nsg18KK3su9zi5MZ1nWkHTaal61Sy16pkzflsiPTF4tmQjeH4s5lPqJhdQufooYiHnSCCAhILQUOXutf6DuWtGWpmxD4HrcRg7MtcUAaVjc" aria-label="Obrázek v plné velikosti"><img decoding="async" alt="" alt="" data-original-height="1105" data-original-width="1180" height="600" src="https://blogger.googleusercontent.com/img/a/AVvXsEhHDP0lTDcyzSgrzFiuO3442C9TPFSLWhbjM4vOu8p-A5loUEus8ENrBIWDiSmz0x1BiCPCKY7D0uQ8uFs4nsg18KK3su9zi5MZ1nWkHTaal61Sy16pkzflsiPTF4tmQjeH4s5lPqJhdQufooYiHnSCCAhILQUOXutf6DuWtGWpmxD4HrcRg7MtcUAaVjc=w640-h600" width="640" /></a></div><br /><b><br /></b>
<div><b>Co jsem zkoušel</b><p></p></div>

<p>Jak to vypadá pod kapotou? Úplně jinak než v Power BI. Tady není žádné uživatelské rozhraní. Všechno se píše jako kód – nebo se musíte spolehnout na coding agenta (GitHub Copilot, Claude Code nebo jiný). Pod každou vizualizací je soubor s koncovkou .dax, který posílá DAX dotaz do sémantického modelu. Samotné vizualizace kombinují TypeScript, CSS, Vega/VegaLite. Máte nad tím absolutní kontrolu – můžete ten DAX dotaz odladit, můžete každý pixel posunout. Ale musíte to umět, nebo donutit agenta, aby to uměl za vás.</p>

<p>Nechal jsem Claude Code, ať se podívá do prohlížeče na můj starý report, prokliká si ho a vygeneruje mi novou verzi jako data app. Zadání: podívej se, co tam je, zachovej ty informace, ale zkus to udělat líp – drž se best practices pro vizualizace. Tady se mi agent rozjel.</p><p>Před (originál Power BI)</p><p></p><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjeVIj6oF-jF1FqMdvVo0xRPE-tg_tElfBQnpzYM2XbQMz_aivKLH-3YyufQbMEDwh-qi00UTBNDnbI_8CLU3g_jZhKFNSO4Jj2MNFQbVlja9TTQSbTU78birYip0YGqoy3ZbbD0m3fbwfR1jIoEZx0pOJaEGuH5vF4T8pXFCPtL_BkPHEXdepfVSx0t1o" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="1260" data-original-width="2170" height="372" src="https://blogger.googleusercontent.com/img/a/AVvXsEjeVIj6oF-jF1FqMdvVo0xRPE-tg_tElfBQnpzYM2XbQMz_aivKLH-3YyufQbMEDwh-qi00UTBNDnbI_8CLU3g_jZhKFNSO4Jj2MNFQbVlja9TTQSbTU78birYip0YGqoy3ZbbD0m3fbwfR1jIoEZx0pOJaEGuH5vF4T8pXFCPtL_BkPHEXdepfVSx0t1o=w640-h372" width="640" /></a></div><br />Po (Fabric Data App)<p></p><p></p><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhn1OpMT1FSb0smfe-O0xnCpo-Y0vt8U79s02Yp92aUEeKZ2voUqTGFP06X_c_pSpG2V0XByZN92LcjD1CNIRV-sSBm57EvslXilnU_bTJbDniGlZ1q6oJSv6FjtWZ4vgCly2GWyi6zXpkyQ_l4f89YD2xAjAWChjOqLJdUuqiGX4HwbRb64cIL1AXKmmY" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="1276" data-original-width="2422" height="338" src="https://blogger.googleusercontent.com/img/a/AVvXsEhn1OpMT1FSb0smfe-O0xnCpo-Y0vt8U79s02Yp92aUEeKZ2voUqTGFP06X_c_pSpG2V0XByZN92LcjD1CNIRV-sSBm57EvslXilnU_bTJbDniGlZ1q6oJSv6FjtWZ4vgCly2GWyi6zXpkyQ_l4f89YD2xAjAWChjOqLJdUuqiGX4HwbRb64cIL1AXKmmY=w640-h338" width="640" /></a></div><br /><br /><p></p>

<p>Dvě stránky, které měly být identické (lišila se jen metrika – obrat vs. marže), mi vygeneroval každou jinak. Některé vizualizace chyběly, některé byly úplně jiné. Interakce mezi vizualizacemi – to, co má Power BI by design – tady musíte explicitně naprogramovat. Kliknu do sliceru a chci, aby se překreslily všechny grafy na stránce? Musím to říct. Export do Excelu? Řazení? Prokliky? Totéž.</p>

<p>Jeden praktický postřeh. Při nasazení mi Rayfin automaticky vygeneroval Fabric SQL database, kterou jsem pro čistou data app vůbec nepotřeboval – tahal jsem data ze stávajícího sémantického modelu, ale zapomněl jsem to agentovi říct. Krátkodobě to vytížilo mou F2 kapacitu na 886 %. Jakmile jsem databázi odstranil, samotné interakce s data app byly z pohledu CU v podstatě zadarmo.</p><p></p><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjfBJLEo6S5v_4LE86Fb2-U5EGIUPETlfC_xsfhKrKTr0XLVzlojHKVuWg9GbQhcy_Jaq_lA2Zw24qVlfONCDBUmrbKEWD4ex3_KePEJuqroCf4UO2uHWGLR5iLhZunz806e4_PwpQEyoFGCKILQlrisK38eZBj36Teif1Pk4d-wvdgNa5P1XuOt5xh2JI" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="922" data-original-width="2161" height="274" src="https://blogger.googleusercontent.com/img/a/AVvXsEjfBJLEo6S5v_4LE86Fb2-U5EGIUPETlfC_xsfhKrKTr0XLVzlojHKVuWg9GbQhcy_Jaq_lA2Zw24qVlfONCDBUmrbKEWD4ex3_KePEJuqroCf4UO2uHWGLR5iLhZunz806e4_PwpQEyoFGCKILQlrisK38eZBj36Teif1Pk4d-wvdgNa5P1XuOt5xh2JI=w640-h274" width="640" /></a></div><br /><br /><p></p>

<p><b>Nahradí to Power BI?</b></p>

<p>Ne. A myslím si, že to ani nemá. Kurt Buhler z Tabular Editoru to <a href="https://tabulareditor.com/blog/fabric-apps-explained-visualization-as-code-in-a-data-app-dashboard">rozebral v článku</a>, kde to přirovnal k legu a 3D tiskárně. Power BI je lego – pokládáte kostičky, máte hotový výsledek rychle, self-service uživatel si postaví report sám. Fabric Data Apps jsou 3D tiskárna – máte absolutní volnost, ale potřebujete úplně jiný skill.</p>

<p>Připomíná mi to příchod Power BI vedle Reporting Services. Tehdy všichni spekulovali, jestli Power BI nahradí paginated reporty. Microsoft v té době možná hůř komunikoval vizi a teprve čas ukázal, že to není náhrada, ale doplněk – vykrytí slabých míst platformy. Tady čekám totéž. Power BI zůstane pro self-service analytiku, pro běžného business uživatele, který si otevře Power BI Desktop a při troše štěstí report nakliká. Fabric Apps jsou pro profi vývojáře, který potřebuje custom, pixel-perfect, propojitelné s aplikační vrstvou – zápisy do databáze, napojení na externí API, komentování.</p>

<p>Kde to ale vidím jako skutečný přínos, je potenciální náhrada Power Apps. Vojta zná firmy, kde Power Apps používají třeba jako katalog reportů – přesně tohle by šlo nativně přesunout do Fabric Apps. Pokud už máte Fabric jako platformu, proč byste do toho vnášeli další platformu s vlastním licenčním chaosem?</p>

<h2>Na co si dát pozor</h2>

<p>Fabric Apps jsou v preview a nejsou dostupné ve všech regionech. Já jsem narazil s kapacitou v North Europe – musel jsem si vytvořit novou kapacitu ve West Europe. S Vojtou jsme v podcastu řešili, jestli se k Fabric Apps dostane uživatel bez Power BI Pro licence. V tu chvíli jsme to nevěděli, tak jsem to pak dohledal – uživatel s oprávněním "Run and interact" může Fabric App používat bez Pro licence, ale pouze na kapacitě F64 a výš. Pod F64 je Pro stále potřeba. Pokud jste na menších kapacitách – já na svém testovacím tenantu jedu na F2 – tak to je dobré vědět. A jedno obecnější riziko, o kterém se na LinkedIn už diskutuje – díky agentům je dnes schopný vygenerovat webovou aplikaci skoro kdokoliv. Nechat si to kompletně nagenerovat a nerozumět tomu kódu vůbec – to není úplně bez rizika. Ale to není specifické pro Fabric Apps, to je problém celého vibe codingu. Je to čerstvě vytažené z trouby.</p>

<h2>Závěr</h2>

<p>Dnešní post se věnoval Fabric Apps – novému typu workspace itemu, který rozšiřuje Fabric o plnohodnotné webové aplikace. Fabric už není jen základna pro vaše data, ale je to kompletní platforma. Pro vizualizační scénáře jsou data apps alternativa s daleko větší volností než Power BI, ale za cenu výrazně vyšší komplexity. Pro operační scénáře je to potenciálně cesta, jak se zbavit Power Apps v kontextu Fabricu. Stále je to preview, stále je to v plenkách. Já osobně budu číhat na use case, který bude lepší fit pro Fabric Data App než pro Power BI report. Do té doby jedu dál Power BI. A budu se seznamovat i s operational apps – to je pro mě zatím neprobádané území.</p>

<p>V <a href="https://linktr.ee/cestadofabricu">Cestě do Fabricu</a> jsme s Vojtou rozebrali i další střípky z Buildu 2026 – storage tiers, GPU-akcelerovaný warehouse a další.</p></div>]]></description>
</item>
<item>
<title>Microsoft Build 2026 – přehled pro Fabric a Power BI</title>
<link>https://www.neoral.cz/2026/06/microsoft-build-2026-prehled-pro-fabric.html</link>
<guid isPermaLink="true">https://www.neoral.cz/2026/06/microsoft-build-2026-prehled-pro-fabric.html</guid>
<pubDate>Wed, 03 Jun 2026 13:30:35 GMT</pubDate>
<category>Microsoft Fabric</category>
<description><![CDATA[<p>Včera v 18:00 CEST spustil Satya Nadella keynote Microsoft Build 2026 ze San Francisca. Sledoval jsem to živě, s otevřeným Build Live blogem a refreshovaným Fabric Blogem. Letos Microsoft nahradil tradiční Book of News real-time blogem.</p>

<p>Nebudu procházet všech 100+ announcementů. Zaměřím se na to, co je relevantní pro nás – lidi, co pracují s Power BI a Microsoft Fabric. Pokud vás zajímá AI infrastruktura, Surface hardware nebo quantum computing, tohle není ten správný článek.</p>

<h2>Microsoft IQ – sémantický mozek pro agenty</h2>

<p>Hlavní story letošního Build se dá shrnout do jednoho slova: agenti. Microsoft představil <b>Microsoft IQ</b> jako sjednocenou inteligentní vrstvu – kombinaci Work IQ (data z M365), Foundry IQ (znalostní báze), <b>Fabric IQ Ontology</b> (business sémantika) a nového Web IQ (grounding z webu). Je to GA od včerejška.</p>

<p>A tady je klíčová věta pro Power BI svět: sémantické modely Power BI jsou explicitně základem, na kterém agenti staví. Microsoft mluví o 30+ milionech sémantických modelů v produkci. Ontologie v Fabric IQ tyto modely rozšiřují o operační kontext – entity, vztahy, pravidla, akce. GA by mělo být v nejbližších měsících.</p>

<p>Jinými slovy – dobře navržený sémantický model není jen základ pro reporty, ale i pro agentní AI. Pokud jste investovali čas do kvalitního modelování, právě se vám to začíná vracet.</p>

<h2>GPU-akcelerovaný Fabric Data Warehouse</h2>

<p>Tohle je technicky asi nejzajímavější Fabric novinka na Build. Fabric Data Warehouse dostane GPU akceleraci – v interních benchmarcích Microsoft naměřil až 7× rychlejší výkon oproti třem hlavním cloudovým warehoussům. Výzkum za tím dostal cenu ACM SIGMOD za Best Industry Paper 2026. Early access preview bude v červenci 2026.</p>

<h2>Data Agents v M365 Copilot – GA</h2>

<p>Fabric Data Agents jsou nově GA v Microsoft 365 Copilot. K tomu přibyla podpora Service Principals, sledování přes Microsoft Foundry a Creator Agent pro SQL a Eventhouse zdroje. To všechno je v červnovém Fabric Feature Summary, který vyšel – jak jinak – souběžně s keynotem.</p>

<h2>Copilot Credits a nový consumption model</h2>

<p>Agent work přechází na consumption model: pay-as-you-go za $0.01/credit, nebo předplacené balíčky. Per-user Copilot licence zůstává pro lidské používání Copilota. Jinými slovy – agenti si platí zvlášť. Tohle bude zajímavé sledovat z pohledu FinOps.</p>

<h2>OneLake – storage tiers a item-level reporting</h2>

<p>Dvě praktické novinky v preview. Za prvé – <b>lifecycle management</b> pro automatický přesun dat mezi storage tiers (podle created/modified/accessed). Za druhé – <b>item-size reporting</b>, které konečně ukazuje storage breakdown na úrovni jednotlivých itemů, včetně system a soft-deleted dat. To je přesně ta viditelnost, co v Capacity Metrics app chybí.</p>

<h2>Rayfin – backend jako služba přímo ve Fabric</h2>

<p>Tohle je pro mě osobně jedna z nejzajímavějších novinek. <b>Rayfin</b> je open-source SDK a CLI, které umožní definovat kompletní aplikační backend v kódu – datový model, business logiku, API, autentizaci, přístupová pravidla – a jedním příkazem to celé nasadit do Microsoft Fabric. Data zůstávají v OneLake, aplikace běží jako first-class Fabric artefakt a automaticky dědí governance a zabezpečení tenantu.</p>

<p>Prakticky řečeno – je to odpověď na problém, který zná každý, kdo viběkóduje: AI vám vygeneruje frontend za hodinu, ale backend pro produkci je na týdny. Rayfin tu mezeru chce zavřít. Launch partnerem je Replit – postavíte aplikaci v Replitu, napíšete "rayfin up" a backend se nasadí do vašeho Fabric tenantu. Pricing zatím nebyl zveřejněn a bez Fabric kapacity to nepoběží – není to standalone služba. Preview je dostupné od včerejška.</p>

<h2>Fabric Apps – custom webové dashboardy nad sémantickým modelem</h2>

<p>Nový typ Fabric itemu, který by mohl být pro Power BI komunitu tou nejzásadnější novinkou z celého Build. <b>Fabric Apps</b> umožňují vytvořit kompletní webovou aplikaci – včetně dashboardů s vizualizačními knihovnami jako Vega nebo D3.js – a dotazovat se sémantického modelu v DAXu. Autentizace, RLS, governance – to všechno se dědí z Fabric platformy.</p>

<p>Důležitý detail: žádné UI na tvorbu. Je to čistě code-first workflow – HTML, CSS, TypeScript, DAX. Očekávaný způsob tvorby je přes coding agenty jako GitHub Copilot nebo Claude Code. Nenahrazuje to Power BI reporty – pokud potřebujete standardní self-service reporting, Power BI nikam neodchází. Ale pokud chcete pixel-perfect dashboard s plnou kontrolou nad vizualizacemi, tohle je nová cesta.</p>

<p>Kurt Buhler to na LinkedInu shrnul výstižně – přirovnal to k rozdílu mezi stavebnicí Lego a 3D tiskárnou. Větší volnost, větší komplexita, jiné use cases. Ve svém testování uvádí, že tvorba bespoke dashboardu byla s Fabric Apps výrazně rychlejší než v Power BI. Pokud vás téma zajímá, doporučuji jeho <a href="https://tabulareditor.com/blog/fabric-apps-explained-visualization-as-code-in-a-data-app-dashboard">podrobný článek na Tabular Editor blogu</a>.</p>

<h2>A co ještě stojí za zmínku</h2>

<p>V kostce: CI/CD pro SQL analytics endpoint (preview). GitHub Enterprise Cloud s data residency pro Git Integration (GA). Materialized Lake Views fungují across lakehouses a workspaces. Real-Time Intelligence dostalo AI-powered vizuály a Kafka + Service Bus konektory jsou GA.</p>

<p>Z platformových věcí mimo Fabric: Microsoft Foundry má 11 000+ modelů v katalogu, včetně Claude a GPT-5.5. Nová kategorie "Autopilots" s Microsoft Scout. A pro developery – GitHub Copilot CLI umí nově pracovat s Fabric IQ skills přímo z terminálu.</p>

<h2>Co nebylo řečeno</h2>

<p>Build je tradičně o architektonické strategii a developer preview. Nepadlo nic o licencování Fabric SKU ani o cenových změnách – to bývá doména Ignite. Konkrétní GA milníky pro Fabric IQ Ontologies a Power BI novinky očekávám na <a href="https://aka.ms/fabconeu">FabCon Europe v Barceloně</a> (28. 9.–1. 10. 2026). Tam se uvidíme.</p>

<h2>Závěr</h2>

<p>Letošní Build jasně ukazuje směr: sémantický model už není jen základ pro reporty, ale pro celou agentní vrstvu. GPU akcelerace Warehouse je technicky impozantní a OneLake storage management jsou přesně ty practical improvements, co v produkci chybí. Podrobněji tohle probereme s Vojtou v příštím díle podcastu <a href="https://open.spotify.com/show/1BZBn9FjMaUVN4BLssqZpn">Cesta do Fabricu</a>.</p>

<h2>Zdroje</h2>

<ul>
<li><a href="https://news.microsoft.com/build-2026-live-blog/">Microsoft Build 2026 Live Blog</a> (náhrada za tradiční Book of News)</li>
<li><a href="https://azure.microsoft.com/en-us/blog/microsoft-build-2026-building-agentic-apps-with-microsoft-fabric-and-microsoft-databases/">Building Agentic Apps with Microsoft Fabric and Microsoft Databases</a> (Arun Ulag, Azure Blog)</li>
<li><a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/Fabric-June-2026-Feature-Summary/ba-p/5190690">Fabric June 2026 Feature Summary</a> (Patrick LeBlanc)</li>
<li><a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/Introducing-Rayfin-A-new-AI-first-way-to-build-deploy-and-govern/ba-p/5191676">Introducing Rayfin</a> (Fabric Blog)</li>
<li><a href="https://tabulareditor.com/blog/fabric-apps-explained-visualization-as-code-in-a-data-app-dashboard">Fabric Apps explained: Visualization as code in a data app dashboard</a> (Kurt Buhler, Tabular Editor Blog)</li>
</ul>]]></description>
</item>
<item>
<title>Úpravy dat v BI modelech: od SSAS přes Power Apps až po Fabric Planning</title>
<link>https://www.neoral.cz/2026/05/upravy-dat-v-bi-modelech-od-ssas-pres.html</link>
<guid isPermaLink="true">https://www.neoral.cz/2026/05/upravy-dat-v-bi-modelech-od-ssas-pres.html</guid>
<pubDate>Mon, 25 May 2026 19:17:07 GMT</pubDate>
<category>Microsoft Fabric</category>
<description><![CDATA[<p>Kdykoliv na školení Power BI přijde někdo z controllingu, tak se ta otázka objeví zhruba do první hodiny: <b>„A jak se v tom dají upravovat čísla?"</b> BI bylo odjakživa primárně o zobrazování. Nikoliv o editaci. Vojta Šíma, se kterým natáčím <a href="https://open.spotify.com/episode/4YRTaD29bSjYocXscOjwz5?si=3f6c1e85ef1f4127">podcast Cesta do Fabricu</a>, to říká na svých školeních na rovinu: přišli jste z Excelu, tak pojem buňka tady neexistuje — na to zapomeňte.</p>

<p>V posledním díle podcastu jsme s Vojtou prošli celou historii tady té funkcionality — od prehistorie přes mezistupně až po <b>Fabric Planning</b>. Tenhle post to shrnuje i s technickými detaily, které se do podcastu nevešly.</p>

<h2>Historické okénko: writeback v době SSAS Multidimensional</h2>

<p>Potřeba zapisovat data zpět do modelu není nová. V době <b>SSAS Multidimensional</b> — na jehož engine je Power BI postaveno — to existovalo pod názvem <b>writeback</b>. Pod measure group vznikly minimálně 2 partitions: jedna zobrazovala aktuální data z databáze, druhá držela změny a zapisovala je do databázové tabulky. Uživatel mohl zapisovat buď přes MDX příkazy (k tomu existovaly nástroje třetích stran), nebo od Excelu 2010 přímo z kontingenční tabulky připojené na multidimenzionální model.</p>

<p>Záludnost spočívala v alokaci. Pokud člověk plánoval na vyšší úrovni hierarchie — třeba na úrovni roku a produktové kategorie — musela se ta čísla zhmotnit na detailní úrovni. Rovnoměrná alokace mohla v horším případě vygenerovat statisíce až miliony řádků. Podle toho, kolik bylo možných kombinací. Kdo tohle zažil v produkci, ví, o čem mluvím.</p>

<p>V době Power BI a SSAS Tabular (2. generace) Microsoft na writeback dlouho nativní odpověď neměl. Takže kdo potřeboval zapisovat — třeba jen komentáře — sáhl po <b>Power Apps</b>. Formulářové aplikace, které uměly zapsat do libovolné destinace. 
Nicméně Power Apps má pro mě strmou křivku učení. A licenční model? SharePoint list byl zdarma. Přímý zápis do SQL databáze byl placený konektor.</p>

<h2>Translytical Task Flows: writeback přímo z Power BI</h2>

<p>Paralelně s tím přišly <b>Translytical Task Flows</b> — Power BI funkcionalita, která ve spolupráci s <b>User Data Functions (UDF)</b> ve Fabricu umožňuje writeback přímo z Power BI prostředí. Pojmenování je trochu chaos, protože ve stejnou dobu vyšly i User Defined Functions v DAXu — a obojímu se říká UDF. Interně si to rozlišujeme jako UDFA (Fabric item) vs. UDFX (DAX).</p>

<p>UDF je v podstatě libovolný Python kód — typicky právě zápis zpět do zdroje. Uživatel klikne na řádek v reportu, napíše komentář do textového pole, a během vteřiny je to v databázi. Není to jako klikat přímo do buňky v Excelu. Je to textové pole, které je furt na stejném místě bez ohledu na to, kde kliknete. Ale je to nejbližší věc, co Power BI momentálně nabídlo — a pro komentáře nebo jednoduché přírůstky to funguje.</p>

<h2>Fabric Planning: tabulka, do které se konečně dá psát</h2>

<p><b>Plan item</b> je nový item ve Fabricu, který vypadá a chová se jako Excel. Máte tam pivotku, do které se kliká. Pojem buňka existuje. Připojíte se na existující sémantický model, data jsou živá, a více lidí se dívá na stejné místo. Žádné sdílené excely na SharePointu, žádné posílání příloh mailem.</p>

<div class="separator"></div>

<p>Plan item nabízí tři typy sheetů:</p>

<ul>
<li><b>Planning sheet</b> — klasický forecasting a budgeting. Připojíte se na sémantický model, vykonstruujete pivotku, a v režimu scénáře přepisujete čísla. Ta reálná data v pozadí se nemění — scénář je váš sandbox.</li>
<li><b>Power Table sheet</b> — správa master dat. Typický příklad: kurzovní lístek. Britská pobočka plánuje v GBP, konsolidace je v EUR — Power Table sheet to umí vzít v potaz.</li>
<li><b>Intelligence sheet</b> — vizuální vrstva přímo v Plan itemu. Waterfally, progress bary, grafy scénářů. Teoreticky nemusíte výsledky exportovat do Power BI reportu — je to integrovaný frontend.</li>
</ul><div><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjqf97yAp_Upmsi22m3dCT7AA1Tb8xJS5dZz4RHtHzuu4wkZ90oYI4sTrlvASp19z4UwVBslKYMdigKdbToMYbcT3yEJ_wBmEEsVzThmyY_6QstoJYFZSo8d9PVTsCUnCLWXjCD9IlTb_GW0SXFwmrqALVxQCA4evslY7EVWqiFclwIuOTrc7v5ddvf_SY" aria-label="Obrázek v plné velikosti"><img decoding="async" alt="" alt="" data-original-height="681" data-original-width="877" height="498" src="https://blogger.googleusercontent.com/img/a/AVvXsEjqf97yAp_Upmsi22m3dCT7AA1Tb8xJS5dZz4RHtHzuu4wkZ90oYI4sTrlvASp19z4UwVBslKYMdigKdbToMYbcT3yEJ_wBmEEsVzThmyY_6QstoJYFZSo8d9PVTsCUnCLWXjCD9IlTb_GW0SXFwmrqALVxQCA4evslY7EVWqiFclwIuOTrc7v5ddvf_SY=w640-h498" width="640" /></a></div><br /><br /></div>

<h2>Writeback: kam a kolik řádků to vygeneruje</h2>

<p>Writeback v Plan itemu slouží k uložení naplánovaných dat pro další komponenty — sémantický model, pipeline, reporting. Aktuálně jde writeback pouze do <b>SQL databáze ve Fabricu</b>. Lakehouse ani warehouse zatím ne.</p>

<p>Jak se data zapíší závisí na zvoleném módu:</p>

<ul>
<li><b>Long</b> (default) — 1 řádek za 1 buňku. Pokud máte rok, měsíce a 10 produktů, tak to vynásobte. Hodně řádků. Stejný princip jako historická alokace v multidimenzionálu.</li>
<li><b>Wide</b> — sloupcový formát, méně řádků. Atributy se stanou sloupci. Víc připomíná strukturu pivotky.</li>
<li><b>Long with changes</b> — přidává preview value a latest value k každé změně. Máte historii, ale i víc dat.</li>
</ul>

<h2>Co to vlastně stojí</h2>

<p>
Podle dokumentace <b>Plan item sám o sobě nic nestojí</b> — Microsoft za něj neúčtuje žádné extra CU ani licence. Realita na pozadí je ale trochu jiná.</p>

<p>Celá pravda: každý Plan item automaticky vyrobí <b>Fabric SQL Database</b>, která ukládá veškerá metadata a operace. SQL databáze zadarmo není. Vojta si měřil hodinu aktivního klikání a vrtění v Plan itemu — řádově <b>1 000 CU</b>. Na F2 kapacitě máte denní budget 172 800 CU (86 400 sekund × 2). Hodina plánování denně je tedy zhruba <b>0,5 % denního budgetu</b>.</p>

<p>K tomu přičtěte, že SQL databáze dotáčí CU ještě nějakou dobu po operaci — reálně to může být 15–20 000 CU i víc. Výsledek: nezruinuje vás to. Ale není to zadarmo. A pro planning, který probíhá typicky v špičkách — jednou za měsíc nebo za kvartál — dává smysl kapacitu při potřebě škálovat nahoru a po skončení planningového cyklu zase dolů.</p>

<h2>Formula language a trochu byznysu okolo</h2>

<p>Jazyk formul v Plan itemu je prakticky Excel. IF, SUM, COUNT — nic nového. Jedna drobnost, která ale plannery potěší: pokud chcete zvýšit hodnotu o 9 %, napíšete <b>+9 %</b>. Systém si to přepočítá sám. Nemusíte si pamatovat, že to je ×1,09. Ocení to i lidé, kteří trojčlenku ovládají, ale radši ji neřeší.</p><p></p><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEi68G8UZfZiiSHTsd97TRo2ij9DPsBpGtPuTYlkkCnZI9GUrCxV5cz1GpKC0kFj0P05jg0CZCwy4Uv1PsJ867h7Hbd402k-9SNC3vso5q5PvrgupdjRKUG3qFErkT-EUNq2CHp27-vEtbPWaKmONRTgL4izeqjr0NtAknsrse_28nu6pY2dihMdNdhX5MU" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="1158" data-original-width="721" height="640" src="https://blogger.googleusercontent.com/img/a/AVvXsEi68G8UZfZiiSHTsd97TRo2ij9DPsBpGtPuTYlkkCnZI9GUrCxV5cz1GpKC0kFj0P05jg0CZCwy4Uv1PsJ867h7Hbd402k-9SNC3vso5q5PvrgupdjRKUG3qFErkT-EUNq2CHp27-vEtbPWaKmONRTgL4izeqjr0NtAknsrse_28nu6pY2dihMdNdhX5MU=w397-h640" width="397" /></a></div><br /><br /><p></p>

<p>Kontext, jak Planning vůbec vznikl: Microsoft tuhle funkcionalitu nenaprogramoval od nuly. Integroval řešení firmy <b>Lumel</b> (přibližně 400 zaměstnanců), která historicky dodávala custom vizuály pro writeback a plánování v Power BI. Nešlo o akvizici — šlo o partnerství, kde Lumel integroval svůj produkt přímo do Fabricu. Výhoda pro obě strany: Microsoft nabídne nativní plánovací nástroj jako součást platformy, Lumel neřeší procurement a certifikační procesy u každého zákazníka zvlášť. Pokud jste někdy zažili debatu s nákupním oddělením o schválení nástroje třetí strany, tak víte, proč to byl pro obě strany no-brainer.</p>

<h2>Preview a jak to zapnout</h2>

<p>Plan item je aktuálně v <b>preview</b>. Defaultně vypnutý — musíte ho explicitně zapnout v admin portálu. Po zapnutí počítejte se zpožděním 15–20 minut, než se aktivuje. Dostupnost závisí na regionu. West Europe funguje — Vojta testoval. Pokud máte tenant jinde, ověřte si seznam podporovaných regionů v dokumentaci předtím, než zákazníkovi slíbíte demo.</p>

<h2>Závěr</h2>

<p>Dnešní post vám měl ukázat cestu od historického SSAS writeback přes Power Apps a Translytical Task Flows až po Fabric Planning. 
Je to první nativně integrovaná odpověď v Power BI ekosystému na otázku z controllingu, která mě provází od začátku kariéry.</p>

<p>Celou historii jsme s Vojtou Šímou probrali v <a href="https://open.spotify.com/episode/4YRTaD29bSjYocXscOjwz5?si=5ba2dbdcecf14a9b">podcastu Cesta do Fabricu</a> — pokud dáváte přednost mluvenému slovu, poslechněte si ho tam.</p>]]></description>
</item>
<item>
<title>Gen AI a Power BI layout: kdo si poradí a kdo se vymlouvá?</title>
<link>https://www.neoral.cz/2026/03/gen-ai-power-bi-layout-kdo-si-poradi.html</link>
<guid isPermaLink="true">https://www.neoral.cz/2026/03/gen-ai-power-bi-layout-kdo-si-poradi.html</guid>
<pubDate>Fri, 13 Mar 2026 09:32:00 GMT</pubDate>
<category>AI &amp; Foundry</category>
<description><![CDATA[<p>Na Power BI Day 2026 jsem poprvé oddemoval živě využití Claude pro úpravu layoutu ve stávajícím Power BI reportu.&nbsp;</p>
<p>Princip jednoduchý.&nbsp;</p>

<ol>
<li>Uložit stávající soubor (vytvořený 2016) jako pbip. Rozložení do složkové struktury a lepší čitelnost pro agenta. Ze semantického modelu vykostit cache.abf. Ta je zde stejně k ničemu a zbytečně nafukuje soubor. Nechci ani nikam dávat data.&nbsp;</li>
<li>Soubor zazipovat, hodit screenshot s layoutem a popsanými úpravami do vašeho oblíbeného chatbota (v mém případě Claude Opus 4.6 extended thinking).</li>
<li>A zadat prompt s úpravami.</li>
</ol>

<div>Původní layout</div>
<div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhdxN0gNtN_HMtVdRUaEI-VFThKEYM6URuQTj4XGNB4h5k1eTmtXFgkyUB-z8m7d7k-CG6F328pUzB812ZQ9J8o_9J6HB-X93HaBiwl0wwsZ3041LoMht8cRp73GviceI4CcMfReBD44YolZ4G1YUb0ONXyLPjaamR3G-uElnZKkjzZKf2j-YHgKsVCjnM" aria-label="Obrázek v plné velikosti"><img decoding="async" alt="" alt="" data-original-height="1496" data-original-width="2293" height="418" src="https://blogger.googleusercontent.com/img/a/AVvXsEhdxN0gNtN_HMtVdRUaEI-VFThKEYM6URuQTj4XGNB4h5k1eTmtXFgkyUB-z8m7d7k-CG6F328pUzB812ZQ9J8o_9J6HB-X93HaBiwl0wwsZ3041LoMht8cRp73GviceI4CcMfReBD44YolZ4G1YUb0ONXyLPjaamR3G-uElnZKkjzZKf2j-YHgKsVCjnM=w640-h418" width="640" /></a></div>

<br />Co chci změnit? Aktuální velikost stránky 720x960, lišta se slicery je vlevo (nejprominentnější místo celého reportu). Chci změnit velikost stránky na full HD. Slicery dát doprava, zbytek posunout doprava. Využít celý prostor, upravit fonty. A to pro všechny stránky. Vrátit jako zip.

<div><br /></div>

<div>Můj prompt</div>
<div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgBna9JY6fRl2oUkPmlo-AfqHtifVLCm0yPY9EeQt5YoULjtJRxNSbkrJojb_9dCV-ZJAv84nDhbpN5k-m7PIWZF7OpD9Cm1hBKwoNruMWxVvGt2VQy8Lov0rrpWx914Gmvsl7wCOUf-8G5KJ_6RuSgCQoDmRArY929W0cFTKHWRUMZa7wQPLYnsq_9e9Y" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="436" data-original-width="1006" height="278" src="https://blogger.googleusercontent.com/img/a/AVvXsEgBna9JY6fRl2oUkPmlo-AfqHtifVLCm0yPY9EeQt5YoULjtJRxNSbkrJojb_9dCV-ZJAv84nDhbpN5k-m7PIWZF7OpD9Cm1hBKwoNruMWxVvGt2VQy8Lov0rrpWx914Gmvsl7wCOUf-8G5KJ_6RuSgCQoDmRArY929W0cFTKHWRUMZa7wQPLYnsq_9e9Y=w640-h278" width="640" /></a></div>

<br />Claude na první dobrou přišel s logickými kroky a začal implementovat. Následně stačilo rozbalit zip. Překopírovat Report složku v PBIP a nahradit v původní lokaci.

<div>Výsledek na první iteraci? Fonty by mohly být větší, ale zvládl to pro všechny stránky.</div>
<div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgt7AiWtwTaNMeS1yQ4XUV42GQYzU80A32B9EFFy4Gon_pDPesDNXlQDAF4vL3PSLFS-WfpfTDzrw9v3U2R-3Mc-HKFCe36obNr-9GD6QEmhwmCU2DenM6tspU-cdX4D1bU9MzBmW7nHE_q9vGMKEFdwdlhxjzsFDEuPWtf9aCSNq_XvK2sHnnvlcPc-M4" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="1101" data-original-width="2242" height="314" src="https://blogger.googleusercontent.com/img/a/AVvXsEgt7AiWtwTaNMeS1yQ4XUV42GQYzU80A32B9EFFy4Gon_pDPesDNXlQDAF4vL3PSLFS-WfpfTDzrw9v3U2R-3Mc-HKFCe36obNr-9GD6QEmhwmCU2DenM6tspU-cdX4D1bU9MzBmW7nHE_q9vGMKEFdwdlhxjzsFDEuPWtf9aCSNq_XvK2sHnnvlcPc-M4=w640-h314" width="640" /></a></div>

<br />Častá otázka zněla, jestli to zvládnou ostatní modely od jiných providerů. Rozhodl jsem se tedy pro souboj titánů. Stejné instrukce, top extended thinking model. Vzhledem k tomu, že si je všechny platím, tak by měření nemělo být zkresleno slabším modelem v neplacené verzi.

<div><br /></div>

<h2>Microsoft M365 Copilot</h2>
<div>Seknul jsem se na uploadu ZIPu. Stejný problém se standalone Copilot. Lehké zklamání.</div>
<div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEirJTEqBs-g6iZfFI6U8ofnaIUB05oEGRWyTOo4mcj2VHpCZj7uPwa5NdPkkI7d6FFc9lCtVGylSSmgolq-GiBivQyP9TjJ96GuFa4y57TSd7eAkdbtcO_-KN82E8LaDQW_pJkyF8SeU8kc7paiPwQEfAlGQbhlUO4lWX87vYyg7agwokuj07ibthNuDc8" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="492" data-original-width="883" height="356" src="https://blogger.googleusercontent.com/img/a/AVvXsEirJTEqBs-g6iZfFI6U8ofnaIUB05oEGRWyTOo4mcj2VHpCZj7uPwa5NdPkkI7d6FFc9lCtVGylSSmgolq-GiBivQyP9TjJ96GuFa4y57TSd7eAkdbtcO_-KN82E8LaDQW_pJkyF8SeU8kc7paiPwQEfAlGQbhlUO4lWX87vYyg7agwokuj07ibthNuDc8=w640-h356" width="640" /></a></div>

<div><br /></div>

<h2>Gemini 3 thinking a 3.1 PRO</h2>
<div>Mi oba smažou zip soubor a přesvědčují, že jsou jen AI, a proto nemůžou přímo modifikovat JSONy.</div>
<div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEi-OLkydFaWCfvXHK2XAFm_RjZ-kNU797Bp_hu944i7SaMn1hPBis6uOGBLNnd78XlLw7oMPMB_x8qWtUUP8wUo0fwbGMUOmcvS_pyTZ7aXMiWULfYmhXB-aSISe21Vnj5EqfKhkvyEwCwCnsjk5tCUY9OGiyms3zm4qqCSgMb1XF1v_FUPOBvVZOXN_Cc" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="1389" data-original-width="2445" height="364" src="https://blogger.googleusercontent.com/img/a/AVvXsEi-OLkydFaWCfvXHK2XAFm_RjZ-kNU797Bp_hu944i7SaMn1hPBis6uOGBLNnd78XlLw7oMPMB_x8qWtUUP8wUo0fwbGMUOmcvS_pyTZ7aXMiWULfYmhXB-aSISe21Vnj5EqfKhkvyEwCwCnsjk5tCUY9OGiyms3zm4qqCSgMb1XF1v_FUPOBvVZOXN_Cc=w640-h364" width="640" /></a></div>

<br />Na otázku, zda používám ten stejný tool z Gemini ekosystému, přichází s plánem, že si můžu struktury nachystat ručně a pomůže mi potenciálně s Pythonem. Nějak si to nedokážu představit a jsem popravdě zklamán. S Gemini to není poprvé, co se vymlouvala, že něco nedokáže. Možná ale nepoužívám správným způsobem, nebo prostě není vhodný kandidát na tento typ úlohy.

<div><br /></div>

<h2>ChatGPT 5.4 Thinking</h2>
<div>Trvalo to 6 minut 27 sekund. Ale ChatGPT vrací zip soubor.</div>
<div>Změnil sice rozložení, ale ne velikost stránky.</div>
<div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhZFtx33JEa4HyUtssVB7an3WR3EDhchC7jQvUUkevLIxcdK_XJpsEW4V9Zu7aWy83TpFN6ThxdbICYXXnXqokzuv3mXhQHJHKDlo1UeQtKB2xNwBIEmiEvqFUlrfQDNASlvgDClqWFsGKUJnuXdym5PqW8QqRcCVphrqx31jNjY_NTeLLtbd-jJJwnQaM" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="1263" data-original-width="2145" height="376" src="https://blogger.googleusercontent.com/img/a/AVvXsEhZFtx33JEa4HyUtssVB7an3WR3EDhchC7jQvUUkevLIxcdK_XJpsEW4V9Zu7aWy83TpFN6ThxdbICYXXnXqokzuv3mXhQHJHKDlo1UeQtKB2xNwBIEmiEvqFUlrfQDNASlvgDClqWFsGKUJnuXdym5PqW8QqRcCVphrqx31jNjY_NTeLLtbd-jJJwnQaM=w640-h376" width="640" /></a></div>

<div>Po mé stížnosti v iteraci 2 se omluví a provede to, co jsem chtěl. Posune slicery na všech stránkách.&nbsp;</div>
<div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhV6ULkcJW3C4hxJ7srlZq4hOEDRYR-tjjnDP10w-A2Bc4eC6CNTpWFABqKyZhq5quSJTAZIhgAey9d3kLNS3X5W75IbNKOqHyD3cUACK8MB9tnxMuzU-aC4ksbYS76jPU6Lz9w9G7K1sec30PjtfF2-G8oL1FB-9DZvsI1pjtzTVq0MP9ktQnVCk92PKU" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="1166" data-original-width="2242" height="332" src="https://blogger.googleusercontent.com/img/a/AVvXsEhV6ULkcJW3C4hxJ7srlZq4hOEDRYR-tjjnDP10w-A2Bc4eC6CNTpWFABqKyZhq5quSJTAZIhgAey9d3kLNS3X5W75IbNKOqHyD3cUACK8MB9tnxMuzU-aC4ksbYS76jPU6Lz9w9G7K1sec30PjtfF2-G8oL1FB-9DZvsI1pjtzTVq0MP9ktQnVCk92PKU=w640-h332" width="640" /></a></div>

<br />Logo a hodinu, do kdy jsou aktualizovaná data, nechal na místě, stejně tak svislou modrou čáru. Byl jsem pro ChatGPT málo specifický.

<div>Ve třetí iteraci, kdy mu explicitně vyznačuji, kterou část chci posunout, nechá vlevo bílé místo a je zbytečně kreativní.</div>
<div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEguol07xcYSnugndMbFvBM2LVXkmLResKAkLfVlfDe6o_-wGHhXcZQZNqxCVlYNL0JRWe6SUukQIQvg8tHRSNtvSbdbWULMymeyoyjyH36tDVswWZH6cegkg2IFhbx4rYe-r_ZqF9841L9f3ygPF2BJox1mk_K3Y84vfI4FyW-q0WRJ3KdRjEsVEREHejU" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="1125" data-original-width="1953" height="368" src="https://blogger.googleusercontent.com/img/a/AVvXsEguol07xcYSnugndMbFvBM2LVXkmLResKAkLfVlfDe6o_-wGHhXcZQZNqxCVlYNL0JRWe6SUukQIQvg8tHRSNtvSbdbWULMymeyoyjyH36tDVswWZH6cegkg2IFhbx4rYe-r_ZqF9841L9f3ygPF2BJox1mk_K3Y84vfI4FyW-q0WRJ3KdRjEsVEREHejU=w640-h368" width="640" /></a></div>

<br />Na čtvrtou iteraci nemám nervy a při psaní tohohle článku už ani čas.&nbsp;

<div><br /></div>

<h2>Závěr</h2>
<div>Pro úpravy vizuální stránky reportů ze zazipovaného PBIP projektu u mě vítězí Claude, který si s tím poradil na jedničku na první dobrou. Na druhou stranu Clauda na podobné typy úloh používám často a přestože jsem měl samostatnou konverzaci, mohl využít paměť z projektů bokem. To nejsem schopen vyloučit.&nbsp;</div>
<div>ChatGPT nehodil flintu do žita a odvedl nějakou práci. Na několik iterací se postupně zlepšoval a věřím, že bych s ním došel do úspěšného cíle, pokud bych v iteracích pokračoval. Může to být též ovlivněno, že jej nepoužívám na práci s Power BI soubory, a tudíž nemá vybudovanou paměť (opět mimo projekt).&nbsp;</div>
<div>Gemini mě popravdě zklamalo, vymlouvá se, že je jen AI a tohle nemůže, a maže mi soubor. Dostal jsem se ale alespoň k odeslání promptu, což je dál než Copilot, kde maže zip soubor hned a ani k tomu promptu se nedostanu.&nbsp;</div>
<div>Určitě bych mohl stejnou úlohu řešit přímo z VS Code pomocí GitHub Copilota (nebo Cursor), který by to stoprocentně dal (v závislosti na vybraném modelu). Ale to nebylo účelem tohohle cvičení. Cílem bylo porovnat masově rozšířené Gen AI aplikace od mainstream providerů.&nbsp;</div>
<div>To, že Gemini s Copilotem vyignorovaly tento typ úlohy, ještě neznamená, že jsou špatné AI, jen jsou jinam cílené.</div>
<div>U mě osobně tedy pro tyto typy úloh vychází Claude, a to i pro úlohy ve VS Code GitHub Copilot.</div>
<div>A ještě důležitá poznámka na závěr – co platí dnes, nemusí platit zítra. V dynamicky se vyvíjejícím AI světě se situace mění doslova z měsíce na měsíc. Takže berte tohle jako snapshot stavu v březnu 2026.</div>]]></description>
</item>
<item>
<title>Jak načíst data do Fabric Lakehouse Pythonem, aniž zabijete F2 kapacitu</title>
<link>https://www.neoral.cz/2026/03/data-do-microsoft-fabric-lakehouse.html</link>
<guid isPermaLink="true">https://www.neoral.cz/2026/03/data-do-microsoft-fabric-lakehouse.html</guid>
<pubDate>Mon, 02 Mar 2026 22:06:00 GMT</pubDate>
<category>Microsoft Fabric</category>
<description><![CDATA[<p>Vstupním bodem do Microsoft Fabricu, abyste mohli analyzovat data v Power BI, je Lakehouse. Něco mezi datovým skladem a Data Lake, který si bere to nejlepší z obou světů. Nejste svázáni přílišnou strukturovaností jako u Data Lake, ale zároveň máte k dispozici SQL Analytics Endpoint pro dotazování nad Delta Lake tabulkami. Tématu Lakehouse jsem se věnoval v jiných přednáškách a v podcastu Cesta do Fabricu s Vojtou Šímou.</p>

<p>Nyní se zaměříme na to, jak data do Lakehouse dostat. Máme čtyři způsoby a tento článek nebude pokrývat všechny.</p>

<ul>
<li>Shortcuts (ala zástupce na ploše)</li>
<li>Pipelines (ala Azure Data Factory)</li>
<li>Dataflows Gen 2 (Power Query Low Code)</li>
<li>Notebooky v Pythonu</li>
</ul>

<p>Dnes se zaměřím na poslední zmíněné – notebooky v Pythonu. Pro uživatele přicházející z Power BI světa možná nejméně intuitivní, ale mohou být efektivní, co se týče CU (Capacity Units), pokud je používáte dobře.</p>

<p>Porovnáme si čtyři různé typy knihoven v Pythonu, které mi umožní načíst data do Lakehouse. Na paškál jsem si vzal demo dataset New York City Taxi data, který je rozumně velký – necelé dva roky dat (01/2024–09/2025), celkem 76 milionů záznamů.</p>

<h2>PySpark</h2>

<p>Defaultně vám Fabric nabídne PySpark, který startuje Spark cluster a má několik pracujících uzlů. Jinými slovy – na malé kapacitě jdete okamžitě do burstingu, krátkodobě přetížíte kapacitu a jedete na dluh, kdy si půjčujete Capacity Units z budoucnosti.</p>

<p>Kód by mohl vypadat následovně. Aby si s Timestamp daty poradil i SQL Analytics Endpoint, můžete si všimnout CASTů.</p>

<div>
<div><span>import</span> <span>psutil</span>, <span>os</span></div>
<div><span>from</span> pyspark.sql <span>import</span> functions <span>as</span> F</div>
<div><span>from</span> pyspark.sql.types <span>import</span> TimestampType</div>
<br />
<div><span>def</span> <span>print_memory</span>(<span>label</span>):</div>
<div>&nbsp; &nbsp; <span>mem</span> = <span>psutil</span>.<span>Process</span>(<span>os</span>.<span>getpid</span>()).<span>memory_info</span>().rss / <span>1024</span>**<span>3</span></div>
<div>&nbsp; &nbsp; <span>print</span>(<span>f</span><span>"[</span><span>{</span><span>label</span><span>}</span><span>] RAM used: </span><span>{</span><span>mem</span><span>:.2f}</span><span> GB"</span>)</div>
<br />
<div><span>print_memory</span>(<span>"start"</span>)</div>
<br />
<div><span>spark</span>.conf.set(<span>"spark.sql.parquet.outputTimestampType"</span>, <span>"TIMESTAMP_MICROS"</span>)</div>
<br />
<div><span>df</span> = <span>spark</span>.read.parquet(<span>"Files/NYC/"</span>)</div>
<br />
<div><span>print_memory</span>(<span>"after read"</span>)</div>
<br />
<div><span>df</span> = <span>df</span>.withColumn(<span>"tpep_pickup_datetime"</span>, F.col(<span>"tpep_pickup_datetime"</span>).cast(TimestampType())) \</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp;.withColumn(<span>"tpep_dropoff_datetime"</span>, F.col(<span>"tpep_dropoff_datetime"</span>).cast(TimestampType()))</div>
<br />
<div><span>df</span>.write.<span>format</span>(<span>"delta"</span>) \</div>
<div>&nbsp; &nbsp; .mode(<span>"overwrite"</span>) \</div>
<div>&nbsp; &nbsp; .option(<span>"overwriteSchema"</span>, <span>"true"</span>) \</div>
<div>&nbsp; &nbsp; .saveAsTable(<span>"yellow_tripdata_spark"</span>)</div>
<br />
<div><span>print_memory</span>(<span>"after write"</span>)</div>
</div>

<p>Doba trvání na F2: <b>1:23</b>. Pro menší objemy dat čekáte zbytečně na start clusteru, abyste zapsali pár řádků, a přetížíte Fabric F2 kapacitu. Důležité je, že to funguje.</p>

<h2>Pandas</h2>

<p>Pokud ale válčíme na malé kapacitě s burstingem, mohli bychom zkusit čistý Python. Jedna z nejpoužívanějších knihoven pro práci s daty v Pythonu je Pandas. Sám, když jsem s Pythonem začínal, byla Pandas jedna z prvních knihoven v rámci kurzů.</p>

<p>Kód by mohl vypadat například následovně:</p>

<div>
<div><span>import</span> pandas <span>as</span> pd</div>
<div><span>import</span> psutil</div>
<div><span>import</span> os</div>
<div><span>from</span> deltalake.writer <span>import</span> write_deltalake</div>
<br />
<div><span>def</span> <span>print_memory</span>(<span>label</span>):</div>
<div>&nbsp; &nbsp; mem = psutil.Process(os.getpid()).memory_info().rss / <span>1024</span>**<span>3</span></div>
<div>&nbsp; &nbsp; <span>print</span>(<span>f</span><span>"[</span><span>{</span>label<span>}</span><span>] RAM used: </span><span>{</span>mem<span>:.2f}</span><span> GB"</span>)</div>
<br />
<div>print_memory(<span>"start"</span>)</div>
<br />
<div><span># Pandas loads ALL files into RAM at once</span></div>
<div>df = pd.read_parquet(<span>'/lakehouse/default/Files/NYC/'</span>)</div>
<br />
<div>print_memory(<span>"after read"</span>) &nbsp;<span># likely crashes here or reports 2-3 GB</span></div>
<br />
<div>write_deltalake(</div>
<div>&nbsp; &nbsp; lakehouse.properties[<span>'abfsPath'</span>] + <span>"/Tables/yellow_tripdata_pandas"</span>,</div>
<div>&nbsp; &nbsp; df,</div>
<div>&nbsp; &nbsp; <span>mode</span>=<span>"overwrite"</span>,</div>
<div>&nbsp; &nbsp; <span>engine</span>=<span>"pyarrow"</span></div>
<div>)</div>
<br />
<div>print_memory(<span>"after write"</span>)</div>
</div>

<p>Nebudu vás napínat – Pandas se snaží načíst všechna data do paměti, než je začne zapisovat. Na malé kapacitě, jako je F2, jsem při těchto objemech dat opakovaně skončil na Out Of Memory Exception. Trvalo to cca <b>1:45</b> – pokud na tom záleží, když to nedoběhlo. Odpočívej v pokoji, Pando, alespoň pro use case větší objem dat na malé kapacitě.</p>

<h2>DuckDB</h2>

<p>Když jsem se před nějakou dobou bavil se Štěpánem Rešlem (kterého tímto zdravím, pokud tohle náhodou čte), doporučil mi knihovny DuckDB a Polars jako efektivnější při využití paměti s podporou stránkování. Tak jsem to zkusil.</p>

<p>Stránkování jsem nastavil na 100&nbsp;000 záznamů. Kód notebooku vypadá následovně:</p>

<div>
<div><span>import</span> <span>duckdb</span></div>
<div><span>from</span> <span>deltalake</span>.<span>writer</span> <span>import</span> <span>write_deltalake</span></div>
<div><span>import</span> <span>notebookutils</span></div>
<br />
<div><span>lakehouse</span> = <span>notebookutils</span>.<span>lakehouse</span>.<span>get</span>(<span>"NYC_taxi_data"</span>)</div>
<div><span>token</span> = <span>notebookutils</span>.<span>credentials</span>.<span>getToken</span>(<span>"storage"</span>)</div>
<br />
<div><span>con</span> = <span>duckdb</span>.connect()</div>
<br />
<div><span># Cast timestamps explicitly to TIMESTAMP (no timezone, microsecond precision)</span></div>
<div><span>reader</span> = <span>con</span>.execute(<span>"""</span></div>
<div><span>&nbsp; &nbsp; SELECT </span></div>
<div><span>&nbsp; &nbsp; &nbsp; &nbsp; * EXCLUDE (tpep_pickup_datetime, tpep_dropoff_datetime),</span></div>
<div><span>&nbsp; &nbsp; &nbsp; &nbsp; tpep_pickup_datetime::TIMESTAMPTZ AS tpep_pickup_datetime,</span></div>
<div><span>&nbsp; &nbsp; &nbsp; &nbsp; tpep_dropoff_datetime::TIMESTAMPTZ AS tpep_dropoff_datetime</span></div>
<div><span>&nbsp; &nbsp; FROM read_parquet('/lakehouse/default/Files/NYC/*.parquet')</span></div>
<div><span>"""</span>).fetch_record_batch(<span>rows_per_batch</span>=<span>100_000</span>)</div>
<br />
<div><span>write_deltalake</span>(</div>
<div>&nbsp; &nbsp; <span>lakehouse</span>.properties[<span>'abfsPath'</span>] + <span>"/Tables/yellow_tripdata_duckDb"</span>, &nbsp;<span># match exact casing</span></div>
<div>&nbsp; &nbsp; <span>reader</span>,</div>
<div>&nbsp; &nbsp; <span>mode</span>=<span>"overwrite"</span>,</div>
<div>&nbsp; &nbsp; <span>engine</span>=<span>"rust"</span>,</div>
<div>&nbsp; &nbsp; <span>storage_options</span>={<span>"bearer_token"</span>: <span>token</span>, <span>"use_fabric_endpoint"</span>: <span>"true"</span>}</div>
<div>)</div>
</div>

<p>Musel jsem opět řešit timestamp sloupce, stejně jako u PySparku. Díky stránkování F2 nepřekročila svých dedikovaných 16 GB paměti a load doběhl za <b>2:20</b>. O něco pomalejší než PySpark, ale single node a kachna nevylezla z paměti a udělala to, co bylo potřeba.</p>

<h2>Polars</h2>

<p>Díky doporučení od Štěpána a šťourání od Vojty Šímy (kterého taky zdravím 🙂) jsem si řekl, že zkusím totéž i v Polars. Tady to bylo na nejvíce iterací, ale nakonec jsem se dostal k funkčnímu kódu, který by mohl vypadat takhle:</p>

<div>
<div><span>import</span> <span>pyarrow</span>.<span>dataset</span> <span>as</span> <span>ds</span></div>
<div><span>import</span> <span>pyarrow</span> <span>as</span> <span>pa</span></div>
<div><span>from</span> <span>deltalake</span>.<span>writer</span> <span>import</span> <span>write_deltalake</span></div>
<div><span>import</span> <span>notebookutils</span></div>
<div><span>import</span> <span>psutil</span>, <span>os</span>, <span>time</span></div>
<br />
<div><span>lakehouse</span> = <span>notebookutils</span>.<span>lakehouse</span>.<span>get</span>(<span>"NYC_taxi_data"</span>)</div>
<div><span>token</span> = <span>notebookutils</span>.<span>credentials</span>.<span>getToken</span>(<span>"storage"</span>)</div>
<br />
<div><span>def</span> <span>print_memory</span>(<span>label</span>):</div>
<div>&nbsp; &nbsp; <span>mem</span> = <span>psutil</span>.<span>Process</span>(<span>os</span>.<span>getpid</span>()).<span>memory_info</span>().rss / <span>1024</span>**<span>3</span></div>
<div>&nbsp; &nbsp; <span>print</span>(<span>f</span><span>"[</span><span>{</span><span>label</span><span>}</span><span>] RAM used: </span><span>{</span><span>mem</span><span>:.2f}</span><span> GB"</span>)</div>
<br />
<div><span>start</span> = <span>time</span>.<span>time</span>()</div>
<div><span>print_memory</span>(<span>"start"</span>)</div>
<br />
<div><span>dataset</span> = <span>ds</span>.<span>dataset</span>(<span>'/lakehouse/default/Files/NYC/'</span>, <span>format</span>=<span>'parquet'</span>)</div>
<br />
<div><span># Check what type PyArrow sees</span></div>
<div><span>ts_field</span> = <span>dataset</span>.schema.field(<span>"tpep_pickup_datetime"</span>)</div>
<div><span>print</span>(<span>f</span><span>"Original type: </span><span>{</span><span>ts_field</span>.type<span>}</span><span>"</span>)</div>
<br />
<div><span># Force timestamps to us with UTC timezone — readable by SQL Analytics Endpoint</span></div>
<div><span>target_type</span> = <span>pa</span>.timestamp(<span>"us"</span>, <span>tz</span>=<span>"UTC"</span>)</div>
<div><span>schema</span> = <span>dataset</span>.schema</div>
<div><span>for</span> <span>col</span> <span>in</span> [<span>"tpep_pickup_datetime"</span>, <span>"tpep_dropoff_datetime"</span>]:</div>
<div>&nbsp; &nbsp; <span>idx</span> = <span>schema</span>.get_field_index(<span>col</span>)</div>
<div>&nbsp; &nbsp; <span>schema</span> = <span>schema</span>.set(<span>idx</span>, <span>schema</span>.field(<span>col</span>).with_type(<span>target_type</span>))</div>
<br />
<div><span>print_memory</span>(<span>"after scan"</span>)</div>
<br />
<div><span>write_deltalake</span>(</div>
<div>&nbsp; &nbsp; <span>lakehouse</span>.properties[<span>'abfsPath'</span>] + <span>"/Tables/yellow_tripdata_polars"</span>,</div>
<div>&nbsp; &nbsp; <span>dataset</span>.to_batches(),</div>
<div>&nbsp; &nbsp; <span>schema</span>=<span>schema</span>,</div>
<div>&nbsp; &nbsp; <span>mode</span>=<span>"overwrite"</span>,</div>
<div>&nbsp; &nbsp; <span>engine</span>=<span>"rust"</span>,</div>
<div>&nbsp; &nbsp; <span>storage_options</span>={<span>"bearer_token"</span>: <span>token</span>, <span>"use_fabric_endpoint"</span>: <span>"true"</span>}</div>
<div>)</div>
<br />
<div><span>print_memory</span>(<span>"after write"</span>)</div>
<div><span>print</span>(<span>f</span><span>"Execution time: </span><span>{</span><span>time</span>.<span>time</span>() - <span>start</span><span>:.1f}</span><span>s"</span>)</div>
</div>

<p>Doba trvání: <b>1:22</b>, doběhla a funguje.</p>

<h2>Závěr</h2>

<p>Stejné cvičení, různé nástroje. Tři ze čtyř soutěžících došli do cíle. Každý má své silné a slabé stránky – každý ať si udělá závěry sám, nebo provede vlastní měření. Nebudu předstírat, že jsem guru na všechny zmiňované knihovny, a pomáhal mi kamarád Claude.</p>

<p>Osobně si z toho odnáším následující postřehy. <b>PySparku</b> se snažím pokud možno vyhýbat na malé kapacitě – už se mi stalo, že jsem si ji při jiných akcích na 24 hodin odstavil. <b>Pandas</b> žere paměť jako by se jednalo o eukalyptus a může přečerpat limit. S <b>Polarsem</b> mám ve finále hezké rozuzlení a dobrý čas, trvalo mi ale za pomoci LLM nejdéle to rozchodit tak, aby doběhlo. <b>DuckDB</b> funguje, dobíhá a podařilo se mi ji rozchodit velmi rychle i s laděním chyb – i když za cenu o něco delšího běhu.</p>

<p>Nebudu tvrdit, že některá knihovna je špatná nebo lepší než ostatní. To si musí každý zhodnotit sám a záleží primárně na kontextu, čeho se snaží dosáhnout. Já ale budu při příštích podobných use cases pošilhávat po DuckDB a Polars.</p>]]></description>
</item>
<item>
<title>Jak na DP-600 a DP-700: praktický průvodce certifikacemi pro Microsoft Fabric</title>
<link>https://www.neoral.cz/2025/12/jak-na-dp-600-dp-700-prakticky-pruvodce.html</link>
<guid isPermaLink="true">https://www.neoral.cz/2025/12/jak-na-dp-600-dp-700-prakticky-pruvodce.html</guid>
<pubDate>Mon, 08 Dec 2025 20:41:00 GMT</pubDate>
<category>Microsoft Fabric</category>
<description><![CDATA[<h2>Proč vůbec řešit certifikace DP-600 a DP-700</h2>

<p>Když se v podcastu Cesta do Fabricu s Vojtou Šímou bavíme o certifikacích, rád si připomínám jednoduchou hříčku se slovem „zkouška“ – beru ji spíš jako „zkusit“. Neznamená to, že musíte všechno umět na sto procent. Znamená to, že to jdete zkusit – ať už kvůli papíru, nebo kvůli vlastní zvědavosti, co všechno ještě nevíte.</p>

<p>Certifikace DP-600 a DP-700 jsou oproti klasickému „papíru z kurzu“ o úroveň výš. Účast na školení dokazuje, že jste někde seděli. Certifikace dokazuje, že jste aspoň jednou zvládli standardizovaný test v konkrétním čase a pod konkrétním tlakem. To může hrát roli jak u zákazníků, tak u vašeho zaměstnavatele.</p>

<p>Oficiální přehled najdete přímo na stránkách certifikací 
<a href="https://learn.microsoft.com/en-us/credentials/certifications/fabric-analytics-engineer-associate/">Fabric Analytics Engineer Associate (DP-600)</a> 
a 
<a href="https://learn.microsoft.com/en-us/credentials/certifications/fabric-data-engineer-associate/">Fabric Data Engineer Associate (DP-700)</a>.
</p>

<p>Jako lektor mám za sebou desítky zkoušek – od Windows Vista přes SQL Server až po BI developer certifikace. Ten „learning transcript“ je dnes spíš úsměvná galerie historie Microsoftu, ale má jedno společné: pokaždé jsem si z toho odnesl lepší představu, co všechno daná role pokrývá. A u Fabricu to platí dvojnásob. Platforma se vyvíjí rychle a certifikace vám pomůže udělat si mapu: tady jsou pipelines, tady notebooks, tady KQL, tady streaming, tady governance.</p>

<p>Pro firmy je certifikace často součástí partnerských programů – potřebují určitý počet certifikovaných lidí na konkrétní roli, aby dosáhly na vyšší partnerství. Pro vás to může znamenat zajímavější projekty nebo lepší pozici při vyjednávání o roli a sazbě. A i neúspěšný pokus má hodnotu: místo pocitu „asi něco umím“ dostanete velmi konkrétní zpětnou vazbu „tohle a tohle neumím“.</p>

<h2>Jak zkoušky DP-600 a DP-700 vypadají v praxi</h2>

<h3>Společná struktura obou zkoušek</h3>

<p>DP-600 i DP-700 se strukturou hodně podobají. Čeká vás:</p>
<ul>
  <li>úvodní self-assessment dotazník,</li>
  <li>case study – delší text o fiktivní firmě s několika navázanými otázkami,</li>
  <li>hlavní blok zhruba čtyřiceti a více otázek,</li>
  <li>závěrečná mini case study se stejným zadáním a několika otázkami typu ano/ne.</li>
</ul>

<p>U některých sekcí (typicky case study) se nejde vracet. Jakmile sekci opustíte, je zavřená. To vás nutí číst zadání poctivě hned napoprvé a nenechávat si „dopočtení“ na konec.</p>

<p>V hlavním bloku je naopak možné otázky označit jako „mark for review“, vracet se k nim a dávat k nim feedback. Celkový čas je okolo 120 minut, ale rozdělený mezi sekce – co utratíte v jedné, nedostanete v jiné. Scoring je škálovaný na 1000 bodů, hranice úspěchu je 700 a neexistují mínusové body za špatnou odpověď.</p>

<h3>Co je typické pro DP-600</h3>

<p>DP-600 cílí víc na analytickou část ve Fabricu. Najdete v ní víc „hands-on“ otázek:</p>
<ul>
  <li>doplnění nebo úprava SQL dotazu,</li>
  <li>úprava notebooku,</li>
  <li>práce s analytickými nástroji nad daty ve Fabricu.</li>
</ul>

<p>Pokud máte zkušenosti s Power BI, SQL a klasickým BI stackem, pravděpodobně se v DP-600 budete cítit „doma“ – koncepty nejsou úplně exotické, jen se přesunuly do Fabric světa.</p>

<h3>Co je typické pro DP-700</h3>

<p>DP-700 působí teoretičtěji. Je víc o architektuře celé datové platformy, integraci služeb a rozhodování „kdy použít pipeline, kdy notebook, kdy dataflow“. Velký důraz je na streamingová data a KQL – včetně drobných detailů.</p>

<p>Zajímavý kontrast, který zmiňujeme i v podcastu: na MVP Summitu v Redmondu padla otázka, kdo v reálných projektech řeší streamingová data. Rukou se zvedlo výrazně méně, než byste čekali podle obsahu DP-700. Přesto je streaming v testu hodně zastoupený – je to signál, kam Microsoft platformu směřuje.</p>

<h2>Jak se na DP-600/700 připravit</h2>

<h3>Exam guide a Microsoft Learn jako základ</h3>

<p>Jako první krok doporučuji otevřít si <a href="https://learn.microsoft.com/en-us/credentials/certifications/resources/study-guides/dp-600">study guide pro DP-600</a> 
a <a href="https://learn.microsoft.com/en-us/credentials/certifications/resources/study-guides/dp-700">study guide pro DP-700</a>. Najdete tam:</p>
<ul>
  <li>rozpad domén (design, implementace, operacionalizace),</li>
  <li>procentuální váhy jednotlivých oblastí,</li>
  <li>odkazy na příslušné Microsoft Learn moduly.</li>
</ul>

<p>Tohle je oficiální „smlouva“ mezi vámi a Microsoftem – to, co je v exam guide, se v nějaké podobě promítne do zkoušky. Learn moduly se vyplatí projít cíleně: ne jen proklikat, ale pochopit koncepty a ideálně si něco zkusit ve vlastním Fabric workspace.</p>

<h3>Practice assessments: trénink na styl otázek</h3>

<p>Microsoft nabízí <a href="https://learn.microsoft.com/en-us/credentials/certifications/practice-assessments-for-microsoft-certifications">practice assessments pro vybrané certifikace</a>, včetně DP-600 a DP-700. Hodí se hlavně na dvě věci:</p>
<ul>
  <li>zmapovat šíři témat,</li>
  <li>naučit se „jak přemýšlí autor testu“.</li>
</ul>

<p>Otázky se částečně opakují, ale ostrý test není 1:1 kopie. Cílem není se je naučit nazpaměť, ale pochopit typické distractory (odpovědi, které jsou technicky možné, ale nejsou „nejvíc Microsoft“). Dobrá hranice je cílit na stabilních ~85&nbsp;% úspěšnosti – ve chvíli, kdy jí dosáhnete, máte slušnou šanci, že zkoušku zvládnete.</p>

<h3>Videa, knihy a další materiály</h3>

<p>
Pro DP-600 dnes dává velký smysl oficiální kniha 
<strong>Exam Ref DP-600 Implementing Analytics Solutions Using Microsoft Fabric</strong>, 
na které se podíleli 
<strong>Štěpán Rešl</strong>, <strong>Daniil Maslyuk</strong> a <strong>Johnny Winter</strong>. 
Je to přípravka psaná přímo proti zkoušce – strukturovaná podle exam objektivů, 
se scénáři a otázkami, které dobře ladí s tím, co vás u DP-600 čeká. 
Pokud chcete mít jeden hlavní studijní materiál v textové podobě, 
za mě je tohle dobrý kandidát.
</p>

<p>
V podcastu Vojta zmiňuje i video kurzy, které prochází jednotlivé domény zkoušek 
a hodí se hlavně pro ty z vás, kdo raději koukáte na video než čtete knížku 
nebo dokumentaci. Osobně jsem tyhle konkrétní kurzy celé neprocházel, 
takže je nechci přehnaně vyzdvihovat, ale jako doplněk 
k oficiálním materiálům a hands-on práci ve Fabricu mohou dobře zapadnout 
do studijního mixu.
</p>

<h3>Hands-on ve Fabricu: pipelines, notebooks, KQL a spol.</h3>

<p>Bez ohledu na to, kolik videí a článků projdete, Fabric je pořád platforma, kterou si musíte „osahat“. Ideálně si ve vlastním (nebo firemním) workspace zkuste:</p>
<ul>
  <li>vytvořit jednoduchou data pipeline,</li>
  <li>zpracovat data v notebooku (Spark nebo SQL),</li>
  <li>vyrobit dataflow a propojit ho s modelem,</li>
  <li>nastavit event stream, napojit ho na Event Hubs a uložit data do Lakehouse,</li>
  <li>napsat pár KQL dotazů nad logy nebo eventy,</li>
  <li>projít základní role a oprávnění.</li>
</ul>

<p>Nejde o to mít tři roky praxe na produkčních projektech – ale když jste danou technologii aspoň jednou viděli a něco v ní udělali, otázky se čtou úplně jinak.</p>

<h2>Strategie u zkoušky: čas, Learn a práce s otázkami</h2>

<h3>Time management a práce se sekcemi</h3>

<p>Základní pravidlo, které jsem si kdysi odnesl už z prvních Office testů a platí dodnes: nenechte se zadřít na jedné otázce. Pokud si nejste jistí, vyberte „nejméně špatnou“ odpověď, označte si otázku pro review a jděte dál.</p>

<p>U DP-600/700 je dobré:</p>
<ul>
  <li>mít v hlavě hrubý časový plán na sekci,</li>
  <li>u case study nepanikařit – text je dlouhý, ale často se v něm odpovědi doslova schovávají,</li>
  <li>nechat si na závěr pár minut na rychlé projetí označených otázek.</li>
</ul>

<p>Nejsou mínusové body. Prázdná odpověď je vždycky horší než rozumný tip.</p>

<h3>Kdy (a jak) používat Microsoft Learn během testu</h3>

<p>V online režimu máte k dispozici panel s nástroji – včetně Microsoft Learn, kalkulačky a poznámek. Zní to lákavě, ale Learn není džin z lampy, který odpoví na každou otázku za vás.</p>

<p>Za mě dává smysl Learn použít hlavně u faktických dotazů (typ „jaké jsou parametry F32 capacity“). U komplexních scénářů (architektura, governance, kombinace služeb) vám většinou jen zopakuje dokumentaci – tam je rychlejší opřít se o vlastní pochopení ekosystému.</p>

<p>Praktický postup: nejdřív projít celý test a všude něco odpovědět, teprve potom při review jít cíleně na 2–3 otázky, kde dává smysl dohledat detail v Learn.</p>

<h3>Jak číst zadání a case study „očima autora testu“</h3>

<p>U case study a delších scénářů je kritické číst text pomalu a s „virtuální tužkou“:</p>
<ul>
  <li>jaké má firma omezení (bezpečnost, compliance, budget),</li>
  <li>jaké technologie už používá,</li>
  <li>jaké jsou nefunkční požadavky (latence, SLA, škálování).</li>
</ul>

<p>Autor testu většinou neskryje správnou odpověď v esoterickém detailu služby, ale v tom, jaký kontext vám v zadání podstrčí. Když víte, že zákazník má velmi přísné požadavky na minimální oprávnění, odpověď „dej všem admin roli“ bude správná jen velmi výjimečně.</p>

<h2>Co nás překvapilo a na co si dát pozor</h2>

<h3>Streaming a KQL v DP-700 vs. realita projektů</h3>

<p>Jedno z největších překvapení u DP-700 je, jak velký kus testu zabírají streamingová data a KQL. V reálných projektech dnes na streamingu pracuje menšina týmů, ale v testu je to naprosto mainstream.</p>

<p>Najdete tam otázky na návrh streamingové architektury, rozhodování, kdy použít event stream, kdy Event Hubs, kdy co považovat za externí zdroj, a taky detaily KQL syntaxe. Není nutné být expert na každý operátor, ale je dobré mít KQL aspoň základně ošahané.</p>

<h3>Bezpečnost, oprávnění a governance</h3>

<p>Další téma, které se opakuje, je bezpečnost a governance. Princip minimálních oprávnění („dejte uživateli jen to, co nezbytně potřebuje“) je evergreen, který se vrací v mnoha scénářích. Typicky budete vybírat mezi různými rolemi, scopes a možnostmi sdílení a přístupu k datům.</p>

<h3>Angličtina a typické „mikrozákeřnosti“ v otázkách</h3>

<p>Angličtina je kapitola sama pro sebe. Case study a otázky nejsou vždy napsané „učebnicově“ a někdy máte pocit, že zadání se dá číst na dva způsoby. I proto se hodí otázku označit, sjet zbytek testu a pak se k ní vrátit s širším kontextem z dalších příkladů.</p>

<p>Pokud jste angličtinu neměli v ruce od maturity, doporučuji před samotnou zkouškou číst technické články a dokumentaci v angličtině, podívat se na pár videí k Fabricu a Power BI bez titulků a projít practice assessments, abyste si zvykli na styl otázek.</p>

<h2>Pro koho dává DP-600/700 smysl (a kdy si raději počkat)</h2>

<p>DP-600 a DP-700 dávají největší smysl pro lidi, kteří se Fabricu chtějí věnovat v praxi: konzultanty, BI vývojáře, data inženýry a architekty. Pokud už dnes pracujete s Power BI, SQL, možná Azure Synapse nebo ADF, spousta principů se vám přenese – Fabric přidá nové stavební kameny, ale logika datové platformy zůstává podobná.</p>

<p>Pro juniory bez projektů může být certifikace motorem, jak se naučit širší spektrum technologií, ale je dobré počítat s delší přípravou. Hodně pomůže, pokud zkoušku platí firma nebo využijete voucher z community programů. Naopak pokud s Fabricem zatím vůbec nepracujete a nemáte reálně čas se mu věnovat, může dávat větší smysl začít pár menšími projekty či proof-of-concepty a zkoušku si naplánovat až ve chvíli, kdy se ve světě Fabricu alespoň trochu rozkoukáte.</p>

<h2>Komunita a odkazy na další zdroje</h2>

<p>Pokud chcete být v obraze a zároveň mít kde probrat svoje otázky, zkuste československou Discord komunitu 
<strong>Data &amp; Chill</strong>, kterou vede Vojta. Přístup k serveru najdete přes Vojtův web 
<a href="https://www.daatlers.cz/">Daatlers</a> v sekci věnované komunitě a vzdělávání.</p>

<p>Za pozornost stojí i další oficiální zdroje Microsoftu – třeba video série Exam Readiness nebo on-demand kurzy pro DP-600 a DP-700 na Microsoft Learn. Ty vám pomůžou sladit očekávání ohledně rozsahu zkoušky a typů scénářů, které se v ní objevují.</p>

<h2>Závěrečné doporučení a další kroky</h2>

<p>Na závěr jednu osobní poznámku: certifikace sama z vás experta neudělá. Ale může vám otevřít dveře – k zajímavým projektům, k partnerstvím, k důvěře zákazníků. A hlavně vám nastaví zrcadlo. Ukáže, kde máte „bílé fleky“.</p>

<p>Pokud se kolem Fabricu pohybujete pravidelně, žijete v Power BI bublině a třeba jste s námi v komunitě na Discordu Data &amp; Chill, DP-600 a DP-700 jsou za mě logický další krok. Ne jako sbírka odznáčků, ale jako strukturovaný checkpoint, že se v platformě orientujete.</p>
</p>

<p>
Tak na co čekáte? Vyhrňte rukávy a běžte to „zkusit“! 
A pokud chcete téma nejdřív nasát v audio podobě, 
celou epizodu si můžete poslechnout na Spotify 
<a href="https://open.spotify.com/episode/5mfhfihYl4oZJOiGHE9SU7" target="_blank" rel="noopener">
zde
</a>.
</p>
</ul>
]]></description>
</item>
<item>
<title>Integrace s Gitem - návrat do historie</title>
<link>https://www.neoral.cz/2025/11/integrace-s-gitem-navrat-do-historie.html</link>
<guid isPermaLink="true">https://www.neoral.cz/2025/11/integrace-s-gitem-navrat-do-historie.html</guid>
<pubDate>Thu, 20 Nov 2025 08:35:00 GMT</pubDate>
<category>Microsoft Fabric</category>
<description><![CDATA[<p>V minulém <a href="https://www.neoral.cz/2025/11/integrace-s-gitem-nastaveni.html" target="_blank">článku </a>jsme se bavili o potřebě verzování obsahu v Power BI workspace. Dnes se zaměříme na postup, jak obnovit verzi z historie. Jakože jsme nedej bože udělali chybu a potřebujeme se vrátit do minulé středy se svým reportem, notebookem nebo pipeline.</p><p>Pro začátek, mám integrovaný workspace s Gitem, nasadil jsem změny, uvědomil si chybu, ale ještě jsem neprovedl commit. Tady je to jednoduché, stačí otevřít source control vybrat notebook/změnu a dát "Undo"</p><p></p><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjgGKwPeCxqv6ejmiT_mQycmeObtq0DkZMNy64LUiyi4Eh0Bv35FG-xoFe9c-hLuXG_1Qp1g4Og2klaisseXbi4b87kdV8awOCih5uLhgYN2rXUmL1UqFCFjaDJ_coxh2aq4KqcdsfLgNnf8NATCmF26rmKrvF11WcJjemmXhQbcc3NxAeHLfLyfckIhg8" aria-label="Obrázek v plné velikosti"><img decoding="async" alt="" alt="" data-original-height="662" data-original-width="503" height="400" src="https://blogger.googleusercontent.com/img/a/AVvXsEjgGKwPeCxqv6ejmiT_mQycmeObtq0DkZMNy64LUiyi4Eh0Bv35FG-xoFe9c-hLuXG_1Qp1g4Og2klaisseXbi4b87kdV8awOCih5uLhgYN2rXUmL1UqFCFjaDJ_coxh2aq4KqcdsfLgNnf8NATCmF26rmKrvF11WcJjemmXhQbcc3NxAeHLfLyfckIhg8=w303-h400" width="303" /></a></div><div class="separator">Pokud jsme ale commit přece jen provedli a zanechali zprávu, například jako na obrázku níže</div><div class="separator"><br /></div><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiy-CztkPdVpuqgC6R_DPdzc4lVQjLB944kPGeL0UGwvEU9JfWPuQrE49lBVvxiC2WBtsqs-jlTqR-gyxfgt3OrYORMp-W1rmzjH-27pk15l71jU2qF9s88huBLHeTaonVwZjAfiClF4p0xvzUwybDCdcnGr_ioFX-s1POavk-crieE6iRJYFP6rWYfDhY" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="546" data-original-width="810" height="270" src="https://blogger.googleusercontent.com/img/a/AVvXsEiy-CztkPdVpuqgC6R_DPdzc4lVQjLB944kPGeL0UGwvEU9JfWPuQrE49lBVvxiC2WBtsqs-jlTqR-gyxfgt3OrYORMp-W1rmzjH-27pk15l71jU2qF9s88huBLHeTaonVwZjAfiClF4p0xvzUwybDCdcnGr_ioFX-s1POavk-crieE6iRJYFP6rWYfDhY=w400-h270" width="400" /></a></div><div class="separator">Můžeme historii procházet v sekci source control - View repository</div><div class="separator"><br /></div><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjSRyb88Jm6Ub3dyVHISDumQjNbqPghd8x72PIY7sW7M999aeckjXzzjgxxpPMofB-zHasSPHyIZrVWfQLysKlCCWs1hna2GpSQVVbxHzWDziind2j3dC-FuPC5k4PFfDsiSFZ6JbxYiF3EqTgE5eo2Ny59yObIO8WI-JkoCclC2lCwdaofkoUjti8tWCk" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="369" data-original-width="830" height="178" src="https://blogger.googleusercontent.com/img/a/AVvXsEjSRyb88Jm6Ub3dyVHISDumQjNbqPghd8x72PIY7sW7M999aeckjXzzjgxxpPMofB-zHasSPHyIZrVWfQLysKlCCWs1hna2GpSQVVbxHzWDziind2j3dC-FuPC5k4PFfDsiSFZ6JbxYiF3EqTgE5eo2Ny59yObIO8WI-JkoCclC2lCwdaofkoUjti8tWCk=w400-h178" width="400" /></a></div><div class="separator">Tímto se dostaneme do Azure DevOps, kde vybereme commity, branch a uvidíme naši aktivitu</div><div class="separator"><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjT9mIsXDFdtk4g2nqlTpRtpknsKBJAXOpFDSRW5d2Nxhts9ei27z_4SlOGqpN6t3qmEtVPU7YaotygkuvN87rrI1uNlSghGyk8-osluGCY479qPP3k7NgERnZp37To9nA91J9qtRL5ukj7NEaujyCcUr1AfgQDInZyl6kY_Sp7EbdckZz9qunnt4CyaYU" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="503" data-original-width="925" height="217" src="https://blogger.googleusercontent.com/img/a/AVvXsEjT9mIsXDFdtk4g2nqlTpRtpknsKBJAXOpFDSRW5d2Nxhts9ei27z_4SlOGqpN6t3qmEtVPU7YaotygkuvN87rrI1uNlSghGyk8-osluGCY479qPP3k7NgERnZp37To9nA91J9qtRL5ukj7NEaujyCcUr1AfgQDInZyl6kY_Sp7EbdckZz9qunnt4CyaYU=w400-h217" width="400" /></a></div><div class="separator">Vybereme verzi commitu, do které se chceme vrátit. Klikneme v pravém horním rohu na trojtečku vedle "Browse files" a dáme Revert. Barevně vidíme zvýrazněno, co je jinak.</div><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEj3dxipdD6v_2c9Z6gOnCZcEDch7TDO8yeVsJQh_4haW9rsK2PvjnuMgI6wrrMMPo8lMYe4rNkJbSKH7zHAx8C1f1HSdjwuZmnm5Sk2kZ5fQLtwrd8PSgX7E2OdfHEacPpqm8UDcXqSxHqnFidQf0HBON4SWE-6u70F3sucY0BGLkyzJfp4yZjIk6vdueo" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="336" data-original-width="975" height="220" src="https://blogger.googleusercontent.com/img/a/AVvXsEj3dxipdD6v_2c9Z6gOnCZcEDch7TDO8yeVsJQh_4haW9rsK2PvjnuMgI6wrrMMPo8lMYe4rNkJbSKH7zHAx8C1f1HSdjwuZmnm5Sk2kZ5fQLtwrd8PSgX7E2OdfHEacPpqm8UDcXqSxHqnFidQf0HBON4SWE-6u70F3sucY0BGLkyzJfp4yZjIk6vdueo=w640-h220" width="640" /></a></div>Vpravo nahoře potvrdíme Complete a můžeme se vrátit do Power BI service</div><div class="separator"><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgPnVkgLszL2oPih7V9uy9RdCqxRipPW2S8TlxWMBgT0ey3cqIhLR60Wl1x5In36T9Lkz2OKqfuiDPOoh13cWfUw4gYVBhL3QW2tfn8bLwoLp1f_AP-SLQ3WacuqCz7Mrznyg8YTR9viEYH4l6nG1bs1EAyiWGHur4MaZtTAA29lhQcJfC9ENKYXYxP8Xc" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="405" data-original-width="975" height="266" src="https://blogger.googleusercontent.com/img/a/AVvXsEgPnVkgLszL2oPih7V9uy9RdCqxRipPW2S8TlxWMBgT0ey3cqIhLR60Wl1x5In36T9Lkz2OKqfuiDPOoh13cWfUw4gYVBhL3QW2tfn8bLwoLp1f_AP-SLQ3WacuqCz7Mrznyg8YTR9viEYH4l6nG1bs1EAyiWGHur4MaZtTAA29lhQcJfC9ENKYXYxP8Xc=w640-h266" width="640" /></a></div>U ovlivněných objektů uvidíme Git status "Update required" a stačí v source control sekci dát update all a následně provést nový commit</div><div class="separator"><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEizxQmbENpMVH-5uHR1jZVbTRCQbPtBqplM4R4nR6KWYneGjnr22AGiN5IW2mO9WHOZwe3-gOWYqw_10jH3n486cdGfEJdYsGfL4RC2qDyRMuUe7MQjQZCbWHJ5Cx0hpOUNLO2i4QCAjRlQCTTziGXThX21ypK_-bcDqXj_ShwugKXY9he2Dx2Th0724og" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="491" data-original-width="975" height="322" src="https://blogger.googleusercontent.com/img/a/AVvXsEizxQmbENpMVH-5uHR1jZVbTRCQbPtBqplM4R4nR6KWYneGjnr22AGiN5IW2mO9WHOZwe3-gOWYqw_10jH3n486cdGfEJdYsGfL4RC2qDyRMuUe7MQjQZCbWHJ5Cx0hpOUNLO2i4QCAjRlQCTTziGXThX21ypK_-bcDqXj_ShwugKXY9he2Dx2Th0724og=w640-h322" width="640" /></a></div><br /><b>Závěr</b></div><div class="separator">Gratuluji, pokud jsme udělali chybu ve vývoji a potřebujeme se vrátit do stabilní verze <span data-end="1461" data-start="1431"><span data-end="1459" data-start="1433">třeba z minulého čtvrtka</span></span>, už víme, jak na to.</div><p></p>]]></description>
</item>
<item>
<title>Integrace s Gitem - nastavení</title>
<link>https://www.neoral.cz/2025/11/integrace-s-gitem-nastaveni.html</link>
<guid isPermaLink="true">https://www.neoral.cz/2025/11/integrace-s-gitem-nastaveni.html</guid>
<pubDate>Fri, 14 Nov 2025 15:06:00 GMT</pubDate>
<category>Microsoft Fabric</category>
<description><![CDATA[<p>V rámci podcastu "<a href="https://lnkd.in/eJFkmkEu" target="_blank">Cesta do Fabricu</a>" jsme se v minulém díle s Vojtou bavili o verzování a deployment pipelines. O deployment pipelines jsem už <a href="https://www.neoral.cz/2025/03/nasazovani-zmen-s-deployment-pipelines.html" target="_blank">psal</a>. Tak ještě ta část o integraci s Gitem.</p><p>Každý kdo to vývojem myslí trochu vážně snad narazil na potřebu zaverzovat si kód pro svou vlastní potřebu. Nebo při práci v týmu potřebu sdílež a mergovat změny více vývojářů. K verzování kódu a projektů jsem byl poprvé veden už někdy v roce 2009, když jsem s MS BI začínal a verzovali jsme projekty pro MS SQL Server v Team Foundation Serveru.</p><p>Postupem času se mezi vývojáři stal standardem Git. Git je <strong>distribuovaný systém pro správu verzí</strong>, který umožňuje sledovat historii změn v kódu, bezpečně experimentovat a kdykoli se vrátit k předchozím verzím. Umožňuje také <strong>spolupráci více vývojářů</strong>, kteří mohou pracovat paralelně, dělat vlastní větve (branče), slučovat změny a řešit konflikty. Díky své rychlosti, spolehlivosti a flexibilitě se stal de facto standardem v moderním vývoji a tvoří základ pro nástroje jako GitHub, GitLab či Azure DevOps.</p><p>Git můžete používat i samostatně bez integrace s Power BI/MS Fabric workspace. Doporučuji k tomuto účelu ukládat ve formátu <b>pbip&nbsp;</b>&nbsp;kde je rozdělená část pro strukturu modelu (<b><a href="https://www.neoral.cz/2025/03/tmdl-jazyk-zobrazeni.html" target="_blank">TMDL</a></b>) a reportová část. Hlavně se dá vyloučit cache.abf, která fyzicky obsahuje data a může být zbytečně velká. Jde nám o verzování definic, nikoliv dat.</p><p>Jak tedy nastavit integraci Power BI/Microsoft Fabric workspace s gitem?</p><p>Už tato otázka naznačuje, že nemůžeme verzování zapnout nad standardním Pro workspacem (můžete stále verzovat lokální pbip soubory).</p><p>Když svůj workspace připnete na dedikovanou kapacitu, ve wWorkspace settings najdete sekci Git integration<br /></p><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEi22BwK9S_v2gERE66G4y_upUcvwBTptoxrw4XNhUALcgMlS1gmkHd-4P4flYb_0LOFcu8ewcMKWpNH37jIc1WPDldioyq9UxgYwgi4_KiCa8LvPJWI6cqRctAjZzO2SfivzQw6--fvG6YkxKI8qernFqHC5QHZjaAay8N9CJPaQnvK75ToRWxKpPhFhSc" aria-label="Obrázek v plné velikosti"><img decoding="async" alt="" alt="" data-original-height="581" data-original-width="1674" height="222" src="https://blogger.googleusercontent.com/img/a/AVvXsEi22BwK9S_v2gERE66G4y_upUcvwBTptoxrw4XNhUALcgMlS1gmkHd-4P4flYb_0LOFcu8ewcMKWpNH37jIc1WPDldioyq9UxgYwgi4_KiCa8LvPJWI6cqRctAjZzO2SfivzQw6--fvG6YkxKI8qernFqHC5QHZjaAay8N9CJPaQnvK75ToRWxKpPhFhSc=w640-h222" width="640" /></a></div><br /><br /><p></p><p>Jako provider můžete použít buď Azure DevOps, nebo GitHub. Na projektech používám první zmiňovaný, takže i postup v blogu bude směřovat touto cestou<br /></p><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhPva24Xflm9xsz_IjIGDF7V602CouHdvqlh0lvXApJeybCMpHiu0StBvOsHtLmSHH0zvxYkZVKW1LPUX56iL-8SnqmJU4XrW1PpOMlvJMCFt1-GWmzg93Pe222CAButVrrFSxuoJmzPjI3nNPHXmXLB2pTGEp-MuE_2QlrC6jOz9-hyKlkfn-drR8An_g" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="573" data-original-width="376" height="400" src="https://blogger.googleusercontent.com/img/a/AVvXsEhPva24Xflm9xsz_IjIGDF7V602CouHdvqlh0lvXApJeybCMpHiu0StBvOsHtLmSHH0zvxYkZVKW1LPUX56iL-8SnqmJU4XrW1PpOMlvJMCFt1-GWmzg93Pe222CAButVrrFSxuoJmzPjI3nNPHXmXLB2pTGEp-MuE_2QlrC6jOz9-hyKlkfn-drR8An_g=w262-h400" width="262" /></a></div><div class="separator">V <a href="https://dev.azure.com/" target="_blank">Azure DevOps</a>&nbsp;vytvoříte novou organizaci a projekt, pokud je ještě nemáte a následně vytvoříte branch.</div><div class="separator"><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhZ4Oxai9C6Prxa4RtnSbuvfybDcmUAXBRixaYaPVG9qJOqqFmjETWUWdp8eDxKMllsUOWVG41dNrLe1HZZLPhysETRxEGONNOqB5wY9dl0uRlmW3m2NkQb5jqdQC2iyLnKGcHBj0JOOybOhELCrdl8wOFyaEaCC1S8KM8dKkW5V4DBqlxRO9rIsO2knYY" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="898" data-original-width="1879" height="306" src="https://blogger.googleusercontent.com/img/a/AVvXsEhZ4Oxai9C6Prxa4RtnSbuvfybDcmUAXBRixaYaPVG9qJOqqFmjETWUWdp8eDxKMllsUOWVG41dNrLe1HZZLPhysETRxEGONNOqB5wY9dl0uRlmW3m2NkQb5jqdQC2iyLnKGcHBj0JOOybOhELCrdl8wOFyaEaCC1S8KM8dKkW5V4DBqlxRO9rIsO2knYY=w640-h306" width="640" /></a></div><br /><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgKkP7hZvL2ursfLC0iutlBWueeo4ppyfGrdcOzJUyG830CV4nt5_YPSa7PXtB0SGkBPTJADJeA4LZu2_Sb4kn0mtU7k53AyPL6OHrnX59uWB5NXmlwuvFySTwiclELlCL7JREfFIo7iLJgojcxBkFiRZteESzAC4ilA4KES49Ef-QyZqX8962Y4YCT8Z0" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="685" data-original-width="1867" height="234" src="https://blogger.googleusercontent.com/img/a/AVvXsEgKkP7hZvL2ursfLC0iutlBWueeo4ppyfGrdcOzJUyG830CV4nt5_YPSa7PXtB0SGkBPTJADJeA4LZu2_Sb4kn0mtU7k53AyPL6OHrnX59uWB5NXmlwuvFySTwiclELlCL7JREfFIo7iLJgojcxBkFiRZteESzAC4ilA4KES49Ef-QyZqX8962Y4YCT8Z0=w640-h234" width="640" /></a></div><br />Ve Fabric workspace dáme connect and sync</div><div class="separator"><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhiZViyN_MYrrfBzr_LYyX-sy7qJtYQVmxZxq4OcLF-b4ZOWoufHrzS-bwZrTSNS-O_PposW2KWt5mp-zxy29Qm0XM8AC8krZ8shYBoS9O3s_6-LaSoaUFy_xQ7jjHjLPsEzRts1SqgW7VqNA5DuxD7nqTu_dHkgUT-Jbfr-akmpJ70OhoBBUOKrkoGWlg" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="834" data-original-width="1686" height="316" src="https://blogger.googleusercontent.com/img/a/AVvXsEhiZViyN_MYrrfBzr_LYyX-sy7qJtYQVmxZxq4OcLF-b4ZOWoufHrzS-bwZrTSNS-O_PposW2KWt5mp-zxy29Qm0XM8AC8krZ8shYBoS9O3s_6-LaSoaUFy_xQ7jjHjLPsEzRts1SqgW7VqNA5DuxD7nqTu_dHkgUT-Jbfr-akmpJ70OhoBBUOKrkoGWlg=w640-h316" width="640" /></a></div><br />Po přidání obsahu do workspace stačí otevřít sekci source control, kde na nás již svítí jedna změna [1], napsat zprávu ke commitu [2] a potvrdit změnu do verzovacího repozitáře [3].</div><div class="separator"><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhkjfQ5hYvac7HffyXzVj3JxtpaWM1cVBlirdlwydljVwqaEo1Hh75xx4eKqBw9FvnyRKJejzUaAhzLthca8QJZxXFPDKOC6knEg92lLghfOsfReDizPY_8N0u9xp3ju2Ih8KmbU0wF8XcA6RNKCLLt4MVxqa79wuspwi1bmJtpNkSat-7DbEaCZTBu8FU" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="845" data-original-width="1824" height="296" src="https://blogger.googleusercontent.com/img/a/AVvXsEhkjfQ5hYvac7HffyXzVj3JxtpaWM1cVBlirdlwydljVwqaEo1Hh75xx4eKqBw9FvnyRKJejzUaAhzLthca8QJZxXFPDKOC6knEg92lLghfOsfReDizPY_8N0u9xp3ju2Ih8KmbU0wF8XcA6RNKCLLt4MVxqa79wuspwi1bmJtpNkSat-7DbEaCZTBu8FU=w640-h296" width="640" /></a></div><br /><br /></div><b>Závěr</b><br />Gratuluji, workspace pro verzování máme nastavený. Příště se podíváme, jak se vrátit v čase a vytáhnout změny z historie.&nbsp;<p></p>]]></description>
</item>
<item>
<title>FabCon Europe Vienna 2025</title>
<link>https://www.neoral.cz/2025/09/fabcon-europe-vienna-2025.html</link>
<guid isPermaLink="true">https://www.neoral.cz/2025/09/fabcon-europe-vienna-2025.html</guid>
<pubDate>Fri, 19 Sep 2025 12:23:00 GMT</pubDate>
<category>Microsoft Fabric</category>
<description><![CDATA[<p></p><p>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.</p><p></p><p>Účast byla obrovská. Dorazilo přes 4000 lidí.</p><p>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.</p><p>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.</p><p><strong>Power BI</strong></p><ul>
<li>
<p>Web modelling generally available a měli bychom mít paritu mezi Power BI Desktopem a webovým rozhraním.</p>
</li>
<li>
<p>Dostupnost Copilota i pro uživatele, se kterými je nasdílen obsah pouze přes Power BI Apps (což je majorita uživatelů).</p>
</li>
<li>
<p>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.</p>
</li>
<li>
<p>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.</p>
</li>
<li>
<p>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.</p>
</li>
<li>
<p>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.</p>
</li>
<li>
<p>Copilot v DAX query view taky v GA.</p>
</li>
<li>
<p>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.</p>
</li>
<li>
<p>Stejně tak mě zaujal Best Practices Analyzer nad sémantickými modely, který doma hned otestuji.</p>
</li>
</ul><p>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.</p><p>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.</p><p>Znovupoužitelnost kódu možná díky TMDL – můžete kouknout do TMDL Galerie a případně se v ní sami angažovat: <a href="https://aka.ms/tmdl-gallery">https://aka.ms/tmdl-gallery</a></p><p>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ý.</p><p>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.</p><p><strong>Microsoft Fabric</strong></p><p>Pokud nejste čistě Fabric uživatelé, čtěte dál.</p><ul>
<li>
<p>Fabric Command Line Interface (CLI) je GA</p>
</li>
<li>
<p>Pokud máte workspaces integrované s Gitem, tak 100 % komponent je nyní kompatibilní pro CI/CD (aktuálně 38 typů items)</p>
</li>
<li>
<p>V notebooku add connection za vás předgeneruje Python kód.</p>
</li>
<li>
<p>Viděli jsme low-code/no-code práci s Graph daty.</p>
</li>
<li>
<p>Microsoft papá své vlastní jídlo, co si navaří – veškeré Azure services jsou monitorované přes Azure Real Time Intelligence.</p>
</li>
<li>
<p>Real-time anomaly detector je v public preview.</p>
</li>
<li>
<p>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.</p>
</li>
<li>
<p>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.</p>
</li>
<li>
<p>Ve OneLake katalogu přibyla záložka secure. Můžete řešit security z jednoho místa.</p>
</li>
<li>
<p>Komponenta Maps ve Fabricu nápadně připomíná PowerMap z Excelu, ale pokud řešíte mapy, tak proč ne. Aktuálně v Preview.</p>
</li>
</ul><p><strong>Data Flows</strong></p><ul>
<li>
<p>170+ konektorů</p>
</li>
<li>
<p>o zlevnění jsem psal již u Power BI, tiered costing podle doby trvání, only previews a modern query evaluator</p>
</li>
<li>
<p>Destinations v Data Flows se rozrostly o Snowflake DB, Fabric Lakehouse a brzy Excely v SharePoint dokumentové knihovně</p>
</li>
</ul><p><strong>Data Factory</strong></p><ul>
<li>
<p>podpora Evaluate Expressions</p>
</li>
<li>
<p>interval-based schedules</p>
</li>
<li>
<p>cross-cloud mirroring</p>
</li>
</ul><p>Mirroring podpora pro SAP DataSphere a ABAP v Private preview. Pokud by někdo potřeboval, vyhrabu linky.</p><p>S ohledem na Security zajímavá možnost blokovat outbound public access.</p><p>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.</p><p>Z pipelines jde volat DBX serverless Job.</p><p>Fabric SQL Database – zvýšení retention backupů ze 7 na 35 dní.</p><p>SQL Server 2025 je v preview.</p><p>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.</p><p>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.</p><p><strong>Závěr</strong></p><p data-end="566" data-start="211">


























</p><p>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.</p>]]></description>
</item>
<item>
<title>Z SSAS do Power BI: Přesuňte svůj workload do Microsoft Fabric</title>
<link>https://www.neoral.cz/2025/07/z-ssas-do-power-bi-presunte-svuj.html</link>
<guid isPermaLink="true">https://www.neoral.cz/2025/07/z-ssas-do-power-bi-presunte-svuj.html</guid>
<pubDate>Thu, 31 Jul 2025 11:41:00 GMT</pubDate>
<category>Microsoft Fabric</category>
<description><![CDATA[<p data-end="169" data-start="114"><strong data-end="169" data-start="114">Analysis Services – mrtvá technologie? Ani náhodou!</strong></p><p data-end="699" data-start="171">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.</p><p>

</p><p data-end="1006" data-start="701">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.</p><p></p><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiiS3mtZQxQDo9NTBDO1pJZVxB72gUCFVE9XVmWtLPy9rVGuMdjTq_iPTkDS7mO1f1fBMAxI6kP2vH3JEVVBrKjNQqdkTFggUIiopt9TDxJudS6C31Erx8VPh3pGXwVRg-arhOI_SxaT3P43bU4M6edxlESmY9tHjZD2Xk3i7oEoKgrBwn4yX8ikj58ZLY" aria-label="Obrázek v plné velikosti"><img decoding="async" alt="" alt="" data-original-height="1078" data-original-width="1869" height="370" src="https://blogger.googleusercontent.com/img/a/AVvXsEiiS3mtZQxQDo9NTBDO1pJZVxB72gUCFVE9XVmWtLPy9rVGuMdjTq_iPTkDS7mO1f1fBMAxI6kP2vH3JEVVBrKjNQqdkTFggUIiopt9TDxJudS6C31Erx8VPh3pGXwVRg-arhOI_SxaT3P43bU4M6edxlESmY9tHjZD2Xk3i7oEoKgrBwn4yX8ikj58ZLY=w640-h370" width="640" /></a></div><br /><p></p><p data-end="1057" data-start="1013"><strong data-end="1057" data-start="1013">Proč jsem dříve volil SSAS/BIM definice?</strong></p>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):<br /> <a href="https://powerbi.microsoft.com/en-us/blog/open-and-edit-any-semantic-model-with-power-bi-tools/">https://powerbi.microsoft.com/en-us/blog/open-and-edit-any-semantic-model-with-power-bi-tools/</a><br /><br />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 <a href="https://www.neoral.cz/2025/03/tmdl-jazyk-zobrazeni.html" target="_blank">článku</a>.<p data-end="1634" data-start="1574"><strong data-end="1634" data-start="1574">Jaké scénáře můžeme řešit konverzí mezi SSAS a Power BI?</strong></p><ul data-end="2053" data-start="1636">
<li data-end="1871" data-start="1636">
<p data-end="1871" data-start="1638"><strong data-end="1651" data-start="1638">Scénář 1:</strong> 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ší.</p>
</li>
<li data-end="2053" data-start="1873">
<p data-end="2053" data-start="1875"><strong data-end="1888" data-start="1875">Scénář 2:</strong> 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.</p>
</li>
</ul><p>

</p><p data-end="2169" data-start="2055">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í.</p><p data-end="2210" data-start="2176"><strong data-end="2210" data-start="2176">Postup migrace BIM → PBIX/PBIP</strong></p><p data-end="2324" data-start="2212">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.</p><p>

</p><ol data-end="2930" data-start="2326">
<li data-end="2448" data-start="2326">
<p data-end="2448" data-start="2329"><strong data-end="2371" data-start="2329">Otevřete původní Visual Studio projekt</strong>, případně přímo <em data-end="2394" data-start="2388">.bim</em> soubor v Tabular Editoru (postačí i neplacená verze).</p></li></ol><p></p><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhsUIxxIsCDS9lUQ8BcIKP8d1dFSMM0NleROAvAZU7LQyxp-drf47gq1GPF818Y1twJHb1gPNXfDHjwKqaoPsx8HPlMMvYXY4w2HYLSVUFbmdzBl24XsQqVHrCIXbb14_0cVV7X-UPcu4PmC8gXIidNtZjTSgaxMhMJjgq7zH0ya-nZVPijXXFsdxAu99k" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="1109" data-original-width="2116" height="336" src="https://blogger.googleusercontent.com/img/a/AVvXsEhsUIxxIsCDS9lUQ8BcIKP8d1dFSMM0NleROAvAZU7LQyxp-drf47gq1GPF818Y1twJHb1gPNXfDHjwKqaoPsx8HPlMMvYXY4w2HYLSVUFbmdzBl24XsQqVHrCIXbb14_0cVV7X-UPcu4PmC8gXIidNtZjTSgaxMhMJjgq7zH0ya-nZVPijXXFsdxAu99k=w640-h336" width="640" /></a></div><br /><strong data-end="2489" data-start="2453">Spusťte prázdný Power BI Desktop</strong> a v modelovém zobrazení identifikujte port lokální instance SSAS. Server zkopírujte do schránky (např. <code data-end="2610" data-start="2593">localhost:XXXXX</code>).&nbsp;Na obrázku jako 3<p></p><p></p><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEj39nY8z5O39siTBSTxsf8fNHhSKo_EWS7E0fcg4DV2x272-x7IB4nFL5IOPRMyK5NAVKYq1xJ0x79cosrxkf-ITCE75Yod_a1Twnf5onDCUkZvgqCIDGguMCvJ7R8oA2-mR30dTvrTYqt9ApYPAUUMlmailztjG6YuzW36P5uybAPQ9x0ZciSPNTwwDEM" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="1224" data-original-width="3817" height="206" src="https://blogger.googleusercontent.com/img/a/AVvXsEj39nY8z5O39siTBSTxsf8fNHhSKo_EWS7E0fcg4DV2x272-x7IB4nFL5IOPRMyK5NAVKYq1xJ0x79cosrxkf-ITCE75Yod_a1Twnf5onDCUkZvgqCIDGguMCvJ7R8oA2-mR30dTvrTYqt9ApYPAUUMlmailztjG6YuzW36P5uybAPQ9x0ZciSPNTwwDEM=w640-h206" width="640" /></a></div><br /><strong data-end="2638" data-start="2617">V Tabular Editoru</strong> otevřete nabídku <strong data-end="2674" data-start="2656">Model → Deploy</strong>, jako cíl zadejte lokální instanci SSAS (<code data-end="2733" data-start="2716">localhost:XXXXX</code>).<br /><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgp2eQ3FU1pE0u5FC8ZXOx2jiTjTV5xasrDsMSHj_DTMk9p9RMIWbLDf4PVjVwY_9eXRo5JDxMn1rQHqxpLPHVjXTNxl3oIalv5TOeL4flQ_FLg6Xz7lzOSotamsHFhJ_I21-wY8Zcdk2udm8CmWrECMMFnT35FJZ_AV0jJP7GnIDCeLCoBFLbn7gbzAlA" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="1331" data-original-width="2128" height="400" src="https://blogger.googleusercontent.com/img/a/AVvXsEgp2eQ3FU1pE0u5FC8ZXOx2jiTjTV5xasrDsMSHj_DTMk9p9RMIWbLDf4PVjVwY_9eXRo5JDxMn1rQHqxpLPHVjXTNxl3oIalv5TOeL4flQ_FLg6Xz7lzOSotamsHFhJ_I21-wY8Zcdk2udm8CmWrECMMFnT35FJZ_AV0jJP7GnIDCeLCoBFLbn7gbzAlA=w640-h400" width="640" /></a></div><br />Dokončete průvodce nasazením.<br /><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjbN8A0G9KGSuQRJLrwZirxicfkgciYQj9lTTjacccn8VqiQWn4nABLK2Aev6-yo9pwAxeG-jw3U97kNaJ7HEiw6meflqrzAXv4a2tkVBS5plPJ5WLhI-jIJNeZ9wM42shZzaMGZvlRYVIjOUczQvcZvB3Y5fy1d7fjwX0mX4Y-yeCQ16leRt7IsdVwkGU" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="2057" data-original-width="3818" height="344" src="https://blogger.googleusercontent.com/img/a/AVvXsEjbN8A0G9KGSuQRJLrwZirxicfkgciYQj9lTTjacccn8VqiQWn4nABLK2Aev6-yo9pwAxeG-jw3U97kNaJ7HEiw6meflqrzAXv4a2tkVBS5plPJ5WLhI-jIJNeZ9wM42shZzaMGZvlRYVIjOUczQvcZvB3Y5fy1d7fjwX0mX4Y-yeCQ16leRt7IsdVwkGU=w640-h344" width="640" /></a></div><p>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.</p><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgA5pn4s_57D3ma37A5Yq-G3b3HgNT8jeRaMjthrnCXW_R_bP0y17U6h3O8XvIEhw9GaQQo42NSlb3UuvIAOAD1-Q9DVTuKyBt8hZ-S2-gTj5y5RKAz_4z48XSDWJA_jbSe8iK4ye9ljtXDcBYDCQwU-sEypCz-yN_oGj2VFGll81Fdfb34Sk5ktpbEuVo" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="1993" data-original-width="3794" height="336" src="https://blogger.googleusercontent.com/img/a/AVvXsEgA5pn4s_57D3ma37A5Yq-G3b3HgNT8jeRaMjthrnCXW_R_bP0y17U6h3O8XvIEhw9GaQQo42NSlb3UuvIAOAD1-Q9DVTuKyBt8hZ-S2-gTj5y5RKAz_4z48XSDWJA_jbSe8iK4ye9ljtXDcBYDCQwU-sEypCz-yN_oGj2VFGll81Fdfb34Sk5ktpbEuVo=w640-h336" width="640" /></a></div><br /><b>Závěr</b><p></p><p>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.<br /><br /></p><p><br /></p>]]></description>
</item>
<item>
<title>Zlo dostalo jméno Auto date/time intelligence</title>
<link>https://www.neoral.cz/2025/06/zlo-dostalo-jmeno-auto-datetime.html</link>
<guid isPermaLink="true">https://www.neoral.cz/2025/06/zlo-dostalo-jmeno-auto-datetime.html</guid>
<pubDate>Tue, 24 Jun 2025 05:44:00 GMT</pubDate>
<category>Power BI</category>
<description><![CDATA[<p>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&nbsp;v dnešním blogovém příspěvku.&nbsp;Inspirovala mě k tomu také včerejší debata s Jirkou Vicherkem při nahrávání <a href="https://www.datatalk.cz/">Data talk podcastu</a>, když se mě ptal na Power BI dark patterns. Asi z toho udělám sérii.</p>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.<p>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.</p><p>Tak si to prosím vypněte. Globální nastavení najdete v menu File - Options zde:<br /></p><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEh0x3BcUM4HQhFslnzLKfscaNYXXxN-lKPg4eMDGvm6_UpjLwTAOL8x8kLjqvE4LRfvyRSCoEEoEz6XYPsd9zz4JuG8Ic3iYe99DFe5nknGt7iHiblYuaulxroDJiOPZTxNc-IBfNHzeiL4nwX21iK8s-eK0N7pv9C6cl-8OC9Qi7-pkUhl8E9rhztL4J8" aria-label="Obrázek v plné velikosti"><img decoding="async" alt="" alt="" data-original-height="1112" data-original-width="1970" height="361" src="https://blogger.googleusercontent.com/img/a/AVvXsEh0x3BcUM4HQhFslnzLKfscaNYXXxN-lKPg4eMDGvm6_UpjLwTAOL8x8kLjqvE4LRfvyRSCoEEoEz6XYPsd9zz4JuG8Ic3iYe99DFe5nknGt7iHiblYuaulxroDJiOPZTxNc-IBfNHzeiL4nwX21iK8s-eK0N7pv9C6cl-8OC9Qi7-pkUhl8E9rhztL4J8=w640-h361" width="640" /></a></div><br />Pokud to máte nějakým nedopatřením zapnuté u stávajícího souboru, vypnete to zde<p></p><p></p><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgc_LrjEMECYiZdKQJksvq_GpCNBAhYpWdvUMq2TEZbJICQLU4tE5sAWdE2lCtOqqvCfSnzNR-MWSaIKygZn9sbpHwpklqGVdGoEzuwLhhgszT9HGUWHrbhhi9TRaNgJdA0T7EvFGo668t60Xvmv1eUXtV7lTup3C_ckP5bEM31rWQMTc6P4tEx-jIa5KA" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="1575" data-original-width="1959" height="514" src="https://blogger.googleusercontent.com/img/a/AVvXsEgc_LrjEMECYiZdKQJksvq_GpCNBAhYpWdvUMq2TEZbJICQLU4tE5sAWdE2lCtOqqvCfSnzNR-MWSaIKygZn9sbpHwpklqGVdGoEzuwLhhgszT9HGUWHrbhhi9TRaNgJdA0T7EvFGo668t60Xvmv1eUXtV7lTup3C_ckP5bEM31rWQMTc6P4tEx-jIa5KA=w640-h514" width="640" /></a></div><br />Tak si to prosím vypněte, ať je klid. Děkuji.<p></p><p>Tady by se dalo skončit, ale asi dlužím vysvětlení proč...</p><p><b>Co to dělá?</b></p><p>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</p><p></p><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhppGps8J-DiffCQwvUuKSyxV8ydUs9pmVKghrd3ci3Ic2bvAqcLDNJRuCVuszWDdKuNnJaBMssJM4ONYoPaLWRATUqYIKKEVtwAGFta4paLy8XECqm1cZisJW1DMqtgJsM20geYf_QYfqyX65lsLaYFI8ctngOVN1LjahFNzl1kLMEgKF2Ypn0XpoDux8" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="807" data-original-width="431" height="320" src="https://blogger.googleusercontent.com/img/a/AVvXsEhppGps8J-DiffCQwvUuKSyxV8ydUs9pmVKghrd3ci3Ic2bvAqcLDNJRuCVuszWDdKuNnJaBMssJM4ONYoPaLWRATUqYIKKEVtwAGFta4paLy8XECqm1cZisJW1DMqtgJsM20geYf_QYfqyX65lsLaYFI8ctngOVN1LjahFNzl1kLMEgKF2Ypn0XpoDux8=w171-h320" width="171" /></a></div><b>Proč to vadí?</b><p></p><p>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.&nbsp;<br />O fungování Vertipaq engine jsem psal například v <a href="https://www.neoral.cz/2018/12/tabular-power-bi-velikost-modelu.html">článku o velikosti modelu</a> v Power BI a SSAS Tabular.</p><p>Tady máme jeden ukázkový reálný historický report stav před vypnutím auto date/time</p><p></p><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiKFPkhm4c4rCJ_nIQkJlWnR1cHhQ9q5cM86lI7MBy3Q1uFpOhuvofZEJWEWNE5t7EtjArGlZ_C7YOVTjLNMB5RgdeG6FWg2_gRXIdHbNNiPrqQM62_bOIsAidUXvxbvLG0D9w48bD5s9EuOrQrtdgNQtZk4Wjaf1O6-3rzL0XPSRK7frojmxqcJdAhPik" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="115" data-original-width="1393" height="52" src="https://blogger.googleusercontent.com/img/a/AVvXsEiKFPkhm4c4rCJ_nIQkJlWnR1cHhQ9q5cM86lI7MBy3Q1uFpOhuvofZEJWEWNE5t7EtjArGlZ_C7YOVTjLNMB5RgdeG6FWg2_gRXIdHbNNiPrqQM62_bOIsAidUXvxbvLG0D9w48bD5s9EuOrQrtdgNQtZk4Wjaf1O6-3rzL0XPSRK7frojmxqcJdAhPik=w640-h52" width="640" /></a></div><br />Když se na tento report připojím z <a href="https://daxstudio.org/">DAX studia</a>, vidím hromadu tabulek LocalDateTable<p></p><p></p><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjD_mVGKIz5kOPmaLL6rcVh9Dastr0F2vWG8UAvn34_BO9oVGnXgzKbyXLklKEysl9fP1qwXvIeKTRm_tOHIzZTM3haFaMjVf_Kpab3GodJ3xK5JHsF-OTRmXGfkT3yjRsStl8Qk08Bi0XdNdNQgdM02weBCTb4pmimXwuXAc5HERClS_vvv6a_HIs6uVs" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="1637" data-original-width="653" height="640" src="https://blogger.googleusercontent.com/img/a/AVvXsEjD_mVGKIz5kOPmaLL6rcVh9Dastr0F2vWG8UAvn34_BO9oVGnXgzKbyXLklKEysl9fP1qwXvIeKTRm_tOHIzZTM3haFaMjVf_Kpab3GodJ3xK5JHsF-OTRmXGfkT3yjRsStl8Qk08Bi0XdNdNQgdM02weBCTb4pmimXwuXAc5HERClS_vvv6a_HIs6uVs=w256-h640" width="256" /></a></div><div class="separator">Když vyexportuju statistiky do vpax souboru, analyzuji model ve <a href="https://www.sqlbi.com/tools/vertipaq-analyzer/">Vertipaq analyzeru</a>, zjistím že zabírají 92% celé velikosti modelu.</div><div class="separator">Vypínám auto date/time a ukládám soubor</div><div class="separator"><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjuCPQ42fJuCzuTIZpd9SANFYRVp_nRP3xZ8oS9oGPqzFzDOpdVJqGoLbp3eEbLxDAOTGEUtovhM8mUHgjzhI_PlS2jAe2iqcZmfVXngMVGLP5rhQLJZG-L9Nw-xY2Pzf9wEA52SYyTCgWTzdvzXJzWBMF4iZWwTPIQgrApkPopR-0j_DM0kaF07UWrIgs" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="113" data-original-width="1379" height="52" src="https://blogger.googleusercontent.com/img/a/AVvXsEjuCPQ42fJuCzuTIZpd9SANFYRVp_nRP3xZ8oS9oGPqzFzDOpdVJqGoLbp3eEbLxDAOTGEUtovhM8mUHgjzhI_PlS2jAe2iqcZmfVXngMVGLP5rhQLJZG-L9Nw-xY2Pzf9wEA52SYyTCgWTzdvzXJzWBMF4iZWwTPIQgrApkPopR-0j_DM0kaF07UWrIgs=w640-h52" width="640" /></a></div><br />Fakturuji půl dne za optimalizaci.</div><div class="separator"><br /></div><div class="separator">To je samozřejmě nadsázka, ale je to dobrý startovní bod.</div><div class="separator"><br /></div><div class="separator"><b>Proč je to tedy proboha defaultně zaplé?</b></div><div class="separator">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í.</div><div class="separator">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 <a href="https://www.neoral.cz/2024/11/kalendarova-tabulka.html">zde</a>). V takové společné dimenzionální tabulce si následně vytvořím hierarchii vlastní.</div><p><b>Můžu to tedy hned beztrestně vypnout?</b></p><p>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.<br /></p><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEg4okhr2nURlSk3rhCl3En7vOiuUnNNqSAKZ5c289BCcXVqSkqsMpwa-lC_GmpTwnKp_bT4_uSkEaIlJaWqCu_cSL4MdiSQTvNAYdJAZA5zA_qEsMh9sVsIOUWDVC0cWeLMQEzQg_LG7sGHOpxRn9yiVM1YH_KbzuiQPv6DIxhSVqj1aFRLVi7hFEOogvs" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="502" data-original-width="1710" height="188" src="https://blogger.googleusercontent.com/img/a/AVvXsEg4okhr2nURlSk3rhCl3En7vOiuUnNNqSAKZ5c289BCcXVqSkqsMpwa-lC_GmpTwnKp_bT4_uSkEaIlJaWqCu_cSL4MdiSQTvNAYdJAZA5zA_qEsMh9sVsIOUWDVC0cWeLMQEzQg_LG7sGHOpxRn9yiVM1YH_KbzuiQPv6DIxhSVqj1aFRLVi7hFEOogvs=w640-h188" width="640" /></a></div>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.&nbsp;<p></p><p><b>Závěr</b></p><p>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.<br /><br /></p><br /><p></p>]]></description>
</item>
<item>
<title>Podmíněný formát s visual calculations</title>
<link>https://www.neoral.cz/2025/03/podmineny-format-s-visual-calculations.html</link>
<guid isPermaLink="true">https://www.neoral.cz/2025/03/podmineny-format-s-visual-calculations.html</guid>
<pubDate>Tue, 18 Mar 2025 10:25:00 GMT</pubDate>
<category>Power BI</category>
<description><![CDATA[<p>V minulém <a href="https://www.neoral.cz/2025/02/visual-calculations.html" target="_blank">článku</a>&nbsp;jsem psal o <strong data-end="119" data-start="96">Visual Calculations</strong> 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ší <strong data-end="257" data-start="245">measures</strong>. Psát však <strong data-end="280" data-start="269">measure</strong> 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 <strong data-end="434" data-start="422">measures</strong> v modelu a snížení celkové přehlednosti.</p>
<p data-end="603" data-start="479">Podmíněné formátování je skvělým případem pro použití <strong data-end="556" data-start="533">Visual Calculations</strong>, protože je svázané s konkrétní vizualizací.</p>
<p data-end="772" data-start="605">Podívejme se na následující příklad nad databází <strong data-end="673" data-start="654">Adventure Works</strong>. Vytvořil jsem <strong data-end="711" data-start="689">Visual Calculation</strong> pro výpočet průměru podle toho, co je aktuálně na řádcích.</p><p></p><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhJSgvnJ_gtKcOqvXa5iyLOT6-dheZArIX3FcvFvTKrbRqjmi5ncot5n3nfX2XWtlJODyMxkvPU2Ia-09QQ6EozZvwrZyPwlkScncQq38ZiOKlri7BxxLn6I07FHp-3-zMTZYzTSQutKvyvadbepZS5ZDI7tas2DGyfDtZoNx5KY-3uHih6dKeRLUPWSVo" aria-label="Obrázek v plné velikosti"><img decoding="async" alt="" alt="" data-original-height="811" data-original-width="896" height="580" src="https://blogger.googleusercontent.com/img/a/AVvXsEhJSgvnJ_gtKcOqvXa5iyLOT6-dheZArIX3FcvFvTKrbRqjmi5ncot5n3nfX2XWtlJODyMxkvPU2Ia-09QQ6EozZvwrZyPwlkScncQq38ZiOKlri7BxxLn6I07FHp-3-zMTZYzTSQutKvyvadbepZS5ZDI7tas2DGyfDtZoNx5KY-3uHih6dKeRLUPWSVo=w640-h580" width="640" /></a></div><br /><p></p><p data-end="294" data-start="107">Výhodou je, že průměr se vždy počítá přes položky na řádcích (v tomto případě <strong data-end="197" data-start="185">Reseller</strong>) a bude tedy fungovat obecně, i kdybych jej například použil pro podmíněné formátování barvou.</p><p>
</p><p data-end="344" data-start="296">Výpočet trochu rozšířím tak, aby vracel barvu:</p><div><div><div>Average Sales = </div><div><span>v</span><span>ar</span><span> </span>_<span>avg </span>= <span>A</span><span>VERAGEX</span><span>(</span>R<span>OWS,</span>[<span># Reseller])</span></div><div><span>va</span><span>r</span><span> _</span>s<span>ales =</span> [#<span> Reseller]</span></div><div><span>var</span><span> _r</span>s<span>lt = </span><span>if</span>(<span>_s</span>a<span>les&gt;=_</span>av<span>g, </span><span>"</span><span>Gr</span><span>een"</span><span>, </span><span>"</span><span>Re</span><span>d"</span><span>)</span></div><div><span>RETU</span><span>RN</span><span> _rs</span>l<span>t</span></div><div><span><br /></span></div>Ještě je potřeba nastavit datový formát pro <strong data-end="567" data-start="545">Visual Calculation</strong>, aby se chovala jako text.</div><div><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhB_ngyOy7pjCUhEsQljdNR98d0I0ZKRLF861pQ36bn_HIY9FhwCzDWPX1uhURpucQ8jYsybYgKN0tBlX2cYjUPFJjjCOLF32CKxpNJ_85ipUR0yZrsN5R6TpG0kD08p3P6bfSnpyyS8MvNe5cSX3y5x9BwtVbnctfEFwYI48kLOA0uWBmGDz7u5K4Uh4Y" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="620" data-original-width="273" height="400" src="https://blogger.googleusercontent.com/img/a/AVvXsEhB_ngyOy7pjCUhEsQljdNR98d0I0ZKRLF861pQ36bn_HIY9FhwCzDWPX1uhURpucQ8jYsybYgKN0tBlX2cYjUPFJjjCOLF32CKxpNJ_85ipUR0yZrsN5R6TpG0kD08p3P6bfSnpyyS8MvNe5cSX3y5x9BwtVbnctfEFwYI48kLOA0uWBmGDz7u5K4Uh4Y=w177-h400" width="177" /></a></div><div class="separator"><p>Následně stačí v <strong>Cell elements</strong> vybrat formátování na základě hodnoty v poli.</p></div><div class="separator"><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhSajbg8G2zbs5IH5_LB2_eXkYi59H_lfWqPgpa2DoQUq2hxmZvd1MPsJXtqr7Pycqe-9g2cXCGJxHlU2ne7s1nyK3W7aW9XgCZq-EfGajXClmZvhJP_cLsqx9n1T-KcdEVZ_MKA3h8aB4BA13eAQxry2XXuAQPSxXVANAXjMa8WzW6ejJXOgNHDI4TDUc" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="1066" data-original-width="1950" height="350" src="https://blogger.googleusercontent.com/img/a/AVvXsEhSajbg8G2zbs5IH5_LB2_eXkYi59H_lfWqPgpa2DoQUq2hxmZvd1MPsJXtqr7Pycqe-9g2cXCGJxHlU2ne7s1nyK3W7aW9XgCZq-EfGajXClmZvhJP_cLsqx9n1T-KcdEVZ_MKA3h8aB4BA13eAQxry2XXuAQPSxXVANAXjMa8WzW6ejJXOgNHDI4TDUc=w640-h350" width="640" /></a></div><br /><br /></div>Formát funguje pro model</div><div><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiHWT4-m5z71NuHFmXAxijcuIW1mut63H7f3Fbr8PxlVShl-tKLMbeB8LNtUawi2-ZjS-HFYz_F7VhMPR9WQd4KqAnv-4yYHV70ZgxMwXAcNP17WH6v9z7WGta0MjLJsz10fRVxoJRaNzDvxPjotd8GD3R_CZ9476sm04ibZCvEFO_tqbMqm7VWauB50n4" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="736" data-original-width="670" height="400" src="https://blogger.googleusercontent.com/img/a/AVvXsEiHWT4-m5z71NuHFmXAxijcuIW1mut63H7f3Fbr8PxlVShl-tKLMbeB8LNtUawi2-ZjS-HFYz_F7VhMPR9WQd4KqAnv-4yYHV70ZgxMwXAcNP17WH6v9z7WGta0MjLJsz10fRVxoJRaNzDvxPjotd8GD3R_CZ9476sm04ibZCvEFO_tqbMqm7VWauB50n4=w363-h400" width="363" /></a></div><div class="separator">i pro barvu, případně cokoliv jiného.</div><div class="separator"><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhIv1_4a8zUoYWil6K5EcE8nqmKIePf280VqjSXVFi_98duHlVGEvd_upPlE3NlUCJrVELr6QQb3VVTXw1WOgbg8iAxHzUUE9zl-76iEq-EUL_nukFAh7AVVJjyIFjDAyjr9XaeCUcIXN5wGzrbeUko2b38NCM0_Tm0UvuEiq4wKH4EtXtA0qq7C15lpn4" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="337" data-original-width="268" height="400" src="https://blogger.googleusercontent.com/img/a/AVvXsEhIv1_4a8zUoYWil6K5EcE8nqmKIePf280VqjSXVFi_98duHlVGEvd_upPlE3NlUCJrVELr6QQb3VVTXw1WOgbg8iAxHzUUE9zl-76iEq-EUL_nukFAh7AVVJjyIFjDAyjr9XaeCUcIXN5wGzrbeUko2b38NCM0_Tm0UvuEiq4wKH4EtXtA0qq7C15lpn4=w318-h400" width="318" /></a></div><div class="separator"><b>Závěr</b></div><div class="separator"><p>Podmíněné formátování je skvělým kandidátem pro využití <strong>Visual Calculations</strong>, protože s jejich pomocí zabráníme exponenciálnímu růstu počtu metrik v datovém modelu.</p>
<p>Samozřejmě je možné vytvořit i pokročilejší scénáře, například podle kategorií produktů, více stavů a podobně.</p></div><br /><br /></div><br /><br /><br /></div></div>]]></description>
</item>
<item>
<title>Jirka - můj custom GPT asistent</title>
<link>https://www.neoral.cz/2025/03/jirka-muj-custom-gpt-asistent.html</link>
<guid isPermaLink="true">https://www.neoral.cz/2025/03/jirka-muj-custom-gpt-asistent.html</guid>
<pubDate>Thu, 13 Mar 2025 07:00:00 GMT</pubDate>
<category>AI &amp; Foundry</category>
<description><![CDATA[<p data-end="108" data-start="89"><strong data-end="106" data-start="89">Kdo je Jirka?</strong></p><p data-end="327" data-start="110">Jirka je můj vlastní GPT asistent, kterého jsem natrénoval na datech z mého blogu <a data-end="226" data-start="192" href="https://www.neoral.cz" rel="noopener" target="_new">neoral.cz</a>, epizodách <strong data-end="258" data-start="238">Power BI kafíčka</strong> se Štěpánem a hosty a také na přednáškách, které jsem měl na WUGu.</p><p data-end="508" data-start="329">Pokud potřebujete pomoc s <strong data-end="418" data-start="355">Power BI, Microsoft Fabric nebo BI komponentami SQL Serveru</strong>, můžete se Jirky zeptat, jestli jsem na dané téma někde něco nenapsal nebo nepřednášel.</p><p data-end="661" data-start="510">Jirku najdete zde:<br data-end="531" data-start="528" />
<a data-end="659" data-start="531" href="https://chatgpt.com/g/g-67bb6d5866e881919b7d61e302e5846b-jirka" rel="noopener" target="_new">https://chatgpt.com/g/g-67bb6d5866e881919b7d61e302e5846b-jirka</a></p><p data-end="856" data-start="663">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.</p><p data-end="940" data-start="858">Jirka dokáže odpovídat <strong data-end="914" data-start="881">srozumitelně a méně technicky</strong>, pokud bude potřeba. :)</p><p></p><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEht6HkWu4bnziYWiQtLDDXjrW5peRYzjuDULgtH2iSsS5lnkpOizvA5rKlYxEKVheur1sE7ysmFn0zXRfDimHOewoBvP0NQkGqAfpu_rT39jQQCme1K-UypFDEwqI_x65lIS2Wpi1V4ZIxAW5vLpwjWR-IpSpyfufNMG47SfAQLDEvnGJ6evF2JFbC8W4M" aria-label="Obrázek v plné velikosti"><img decoding="async" alt="" alt="" data-original-height="824" data-original-width="1436" height="368" src="https://blogger.googleusercontent.com/img/a/AVvXsEht6HkWu4bnziYWiQtLDDXjrW5peRYzjuDULgtH2iSsS5lnkpOizvA5rKlYxEKVheur1sE7ysmFn0zXRfDimHOewoBvP0NQkGqAfpu_rT39jQQCme1K-UypFDEwqI_x65lIS2Wpi1V4ZIxAW5vLpwjWR-IpSpyfufNMG47SfAQLDEvnGJ6evF2JFbC8W4M=w640-h368" width="640" /></a></div><br />Budu rád za&nbsp;<strong data-end="985" data-start="954">konstruktivní zpětnou vazbu</strong>. Časem bych ho rád přidal jako chatbot přímo sem na blog.<p></p><div>----------------------------------------------------------------------------------------------------------------------------</div><div>Pro pobavení přidávám příhody z UAT testování manželkou, Jirka mi pěkně zavařil</div><div>----------------------------------------------------------------------------------------------------------------------------</div><div><span>Řekl/a jsi:</span></div><div><div class="x11i5rnm xat24cr x1mh8g0r x1vvkbs xtlvy1s x126k92a"><div dir="auto">Vysvětli mi čím se živíš</div><div dir="auto">Ž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í​.</div></div><div class="x11i5rnm xat24cr x1mh8g0r x1vvkbs xtlvy1s x126k92a"><div dir="auto">Řekl/a jsi:</div><div dir="auto">Co děláš mimo práci?</div><div dir="auto">ChatGPT řekl:</div><div dir="auto">Mimo práci se věnuji několika koníčkům:</div></div><div class="x11i5rnm xat24cr x1mh8g0r x1vvkbs xtlvy1s x126k92a"><div dir="auto">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.</div><div dir="auto">Pes – mám dlouhosrstého trpasličího hnědého jezevčíka jménem Eso.</div><div dir="auto">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).</div><div dir="auto">Ultratraily – absolvoval jsem např. Beskydskou sedmičku (20:39:04) nebo Pradědovu stovku (27:39:00).</div><div dir="auto">Plachtění – plánuji si udělat kapitánskou licenci na jachtu.</div><div dir="auto">Paragliding – mám zkušenosti s létáním na padáku.</div><div dir="auto">Poslední dobou trávím hodně času ve vzduchu, s Esou na procházkách a občas si jdu zaběhat.</div></div><div class="x11i5rnm xat24cr x1mh8g0r x1vvkbs xtlvy1s x126k92a"><div dir="auto">Řekl/a jsi:</div><div dir="auto">A jaký máš osobní život?</div><div dir="auto">ChatGPT řekl:</div><div dir="auto">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.</div></div><div class="x11i5rnm xat24cr x1mh8g0r x1vvkbs xtlvy1s x126k92a"><div dir="auto">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.</div></div><div class="x11i5rnm xat24cr x1mh8g0r x1vvkbs xtlvy1s x126k92a"><div dir="auto">Řekl/a jsi:</div><div dir="auto">A chodíš na rande?</div><div dir="auto">ChatGPT řekl:</div><div dir="auto">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ě.</div></div><div class="x11i5rnm xat24cr x1mh8g0r x1vvkbs xtlvy1s x126k92a"><div dir="auto">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.</div></div><div class="x11i5rnm xat24cr x1mh8g0r x1vvkbs xtlvy1s x126k92a"><div dir="auto">Řekl/a jsi:</div><div dir="auto">Takže jsi svobodný?</div><div dir="auto">ChatGPT řekl:</div><div dir="auto">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.</div></div><div class="x11i5rnm xat24cr x1mh8g0r x1vvkbs xtlvy1s x126k92a"><div dir="auto">Řekl/a jsi:</div><div dir="auto">Tady tvoje manželka jak mi to vysvětlíš? Teď máš průser</div><div dir="auto">ChatGPT řekl:</div><div dir="auto">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?</div></div><div class="x11i5rnm xat24cr x1mh8g0r x1vvkbs xtlvy1s x126k92a"><div dir="auto">Řekl/a jsi:</div><div dir="auto">Kreativní výmluvu a pak pravdu</div><div dir="auto">ChatGPT řekl:</div><div dir="auto">Kreativní výmluva:</div><div dir="auto">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!</div></div><div class="x11i5rnm xat24cr x1mh8g0r x1vvkbs xtlvy1s x126k92a"><div dir="auto">Pravda:</div><div dir="auto">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á?</div></div><div class="x11i5rnm xat24cr x1mh8g0r x1vvkbs xtlvy1s x126k92a"><div dir="auto">Řekl/a jsi:</div><div dir="auto">Tak levné to nebude! Dovolená, kytka a drahý šperk. Kam mě vezneš?</div><div dir="auto">ChatGPT řekl:</div><div dir="auto">Dobře, uznávám, že jsem v pěkném průšvihu… Takže to vezmeme ve velkém stylu!</div></div><div class="x11i5rnm xat24cr x1mh8g0r x1vvkbs xtlvy1s x126k92a"><div dir="auto">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.</div><div dir="auto">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.</div><div dir="auto">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.</div><div dir="auto">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?</div></div></div><div><br /></div>]]></description>
</item>
<item>
<title>Nasazování změn s deployment pipelines</title>
<link>https://www.neoral.cz/2025/03/nasazovani-zmen-s-deployment-pipelines.html</link>
<guid isPermaLink="true">https://www.neoral.cz/2025/03/nasazovani-zmen-s-deployment-pipelines.html</guid>
<pubDate>Thu, 06 Mar 2025 12:28:00 GMT</pubDate>
<category>Microsoft Fabric</category>
<description><![CDATA[<p data-end="397" data-start="62">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?</p><p data-end="493" data-start="399">Tak či tak se můžete zamyslet nad použitím deployment pipelines v Microsoft Fabric/Power BI.</p><p data-end="622" data-start="495">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.</p><p></p><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEj0xrtj5reN8fJU3nammZTIf65qBsu6eDdFd1hxIniMs57FU782HY67m2POnnCI3CGyctq794VhYQq8FrjLHkUE1hhqHNL04x6vzGZNoCybw7oEeiYDN0LKYyJo8L-8n4wLYVSCnT1iw5FKxR7ED_HPONZYYBpLR2_oL70wgUuW05vPUMymFt54agPlWTo" aria-label="Obrázek v plné velikosti"><img decoding="async" alt="" alt="" data-original-height="494" data-original-width="621" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEj0xrtj5reN8fJU3nammZTIf65qBsu6eDdFd1hxIniMs57FU782HY67m2POnnCI3CGyctq794VhYQq8FrjLHkUE1hhqHNL04x6vzGZNoCybw7oEeiYDN0LKYyJo8L-8n4wLYVSCnT1iw5FKxR7ED_HPONZYYBpLR2_oL70wgUuW05vPUMymFt54agPlWTo" width="302" /></a></div><div class="separator">V pravé liště vybereme tvorbu nové deployment pipeline.</div><div class="separator"><br /></div><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjqMSF8u5tlrHsJWvLL_SPq7qTjqGmdMgD_-gT0EbOJNWWZeO_uv076KvBDJTn3HyPhB3y1b78dZ7XXlNcCCkNxlXy7_cNEQsyV0QLDzj2IzMSNEclx-dyCB254KMTYsRgS_gnmgxiDN0gHUZimBoSzFfw9hWKOipFPG-6CjGi4HmrvO5gloadENgbCTKk" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="1647" data-original-width="2528" height="416" src="https://blogger.googleusercontent.com/img/a/AVvXsEjqMSF8u5tlrHsJWvLL_SPq7qTjqGmdMgD_-gT0EbOJNWWZeO_uv076KvBDJTn3HyPhB3y1b78dZ7XXlNcCCkNxlXy7_cNEQsyV0QLDzj2IzMSNEclx-dyCB254KMTYsRgS_gnmgxiDN0gHUZimBoSzFfw9hWKOipFPG-6CjGi4HmrvO5gloadENgbCTKk=w640-h416" width="640" /></a></div><div><div class="separator"><div>Vybereme počet prostředí, která chceme použít. V mém případě všechny tři.</div><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiYY0O0zfttphvb30UqIl3WM3LndeBT590sZ7CruAIp0CAnrUwaB2HZSXjHnkjZacMtUGP4myw43Gi6Szr603iXeX2xLYiueKf6Ng2PbuMyC4vxZqrefElrtP41Rl6uSKEK0iG4MuoWwHHpKTexDgPNSKR90l2X0WispbDXcwqLEi5HvtZxvseEgDOtyYI"></a><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgRSfkTLXnakoNrTO4QUTq2kRAq9FAB0H4V7-sGrL5lT6rpqdFrUJMFmILf-GjZcPuQPTJ3q6_zXe-zKnABdo0H38OKJkZcmaxc7dHja6XD2-s4aZRh12GkeDtb2-cQA96uUfMlKh9--61yQI2FAHRtzhpmLIEVzxPfU6f7fM_Fg906oRyHyu3SqLs93Ew" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="452" data-original-width="2452" height="118" src="https://blogger.googleusercontent.com/img/a/AVvXsEgRSfkTLXnakoNrTO4QUTq2kRAq9FAB0H4V7-sGrL5lT6rpqdFrUJMFmILf-GjZcPuQPTJ3q6_zXe-zKnABdo0H38OKJkZcmaxc7dHja6XD2-s4aZRh12GkeDtb2-cQA96uUfMlKh9--61yQI2FAHRtzhpmLIEVzxPfU6f7fM_Fg906oRyHyu3SqLs93Ew=w640-h118" width="640" /></a></div><div class="separator"><br /></div></div>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ší.</div><div><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEh2nC3P7yQEo92do-abvh13GlsbZZCPP-HGtij-6Nm-lavk1rnkY3VgIHNheB87QZwRDXirPsSviEG4n5In7vpcRqRc5Jruf1VJDRkanvjoMPbht3XtUrJx3s9UKpVhAZKxKs-wAgOYJ8L6KsPhsyy75urkA8es-ItUy-Hik1Dys99WIDsB_WxBCfQddGg" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="622" data-original-width="2424" height="164" src="https://blogger.googleusercontent.com/img/a/AVvXsEh2nC3P7yQEo92do-abvh13GlsbZZCPP-HGtij-6Nm-lavk1rnkY3VgIHNheB87QZwRDXirPsSviEG4n5In7vpcRqRc5Jruf1VJDRkanvjoMPbht3XtUrJx3s9UKpVhAZKxKs-wAgOYJ8L6KsPhsyy75urkA8es-ItUy-Hik1Dys99WIDsB_WxBCfQddGg=w640-h164" width="640" /></a></div><br />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ě.</div><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgICph-nyaicf_aTLJ1Yo7cje_au1tKhHUmKtHSrNLSBTn8cY26IvmP5zo80lskOVaDoQ53Dm-K_1yIV016zpKc9bH5hTh1VV7fo89ouy0M2ukVi9fIFXHvy07WxE8OwD2ykKKip5VQGAh0f1UlSa1BlL4D45zT9fOuiTAaKnULm71SgDFtLhAKmwBuWy8" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="1876" data-original-width="3814" height="314" src="https://blogger.googleusercontent.com/img/a/AVvXsEgICph-nyaicf_aTLJ1Yo7cje_au1tKhHUmKtHSrNLSBTn8cY26IvmP5zo80lskOVaDoQ53Dm-K_1yIV016zpKc9bH5hTh1VV7fo89ouy0M2ukVi9fIFXHvy07WxE8OwD2ykKKip5VQGAh0f1UlSa1BlL4D45zT9fOuiTAaKnULm71SgDFtLhAKmwBuWy8=w640-h314" width="640" /></a></div><br />Vybrané změny můžeme následně nasadit tlačítkem <span data-end="1292" data-start="1282">Deploy</span>.<br /><div><div class="separator"><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEg0H0NPpx7FzlNgG67nPG6DfnBkbRS2Plr3JX9Q_DZ-Z9ZDKoJZlZtFdI3Cx9goU_Q45Ew89uCAXHaxHcKlGDGu-vmExAIK9iDrQeREX5ef3SdrLXqRdKjxVJU7AiVetHwqSOnH9v1dKChG-aHOloxwezdgXrUGL94SfZAn02CGMpOsqPkjAOfXAEWoy9k" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="489" data-original-width="3648" height="86" src="https://blogger.googleusercontent.com/img/a/AVvXsEg0H0NPpx7FzlNgG67nPG6DfnBkbRS2Plr3JX9Q_DZ-Z9ZDKoJZlZtFdI3Cx9goU_Q45Ew89uCAXHaxHcKlGDGu-vmExAIK9iDrQeREX5ef3SdrLXqRdKjxVJU7AiVetHwqSOnH9v1dKChG-aHOloxwezdgXrUGL94SfZAn02CGMpOsqPkjAOfXAEWoy9k=w640-h86" width="640" /></a></div><div class="separator"><b>Závěr</b></div><div class="separator">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.</div></div><p></p></div>]]></description>
</item>
<item>
<title>TMDL jazyk a zobrazení</title>
<link>https://www.neoral.cz/2025/03/tmdl-jazyk-zobrazeni.html</link>
<guid isPermaLink="true">https://www.neoral.cz/2025/03/tmdl-jazyk-zobrazeni.html</guid>
<pubDate>Thu, 06 Mar 2025 10:12:00 GMT</pubDate>
<category>Power BI</category>
<description><![CDATA[<p data-end="344" data-start="0">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.</p><p data-end="499" data-start="346">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.</p><p data-end="692" data-start="501">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.</p><p></p><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEi412rgSzKpByqXuy9FNrHNn3AkYIrWS9ZfGMyE7kjdMG8AAe6HUDyUWV5jqnQQY0gx8vE36fxN5AiH-mC-dcu0ibB53kUNdYX0Yj03R6GXIfO2JwDZ2BrU2FVCahmvFSbEvZer96E3YKAX5VR68keBtBWfAK4J2EFtotkuvcR4fKV8hXRdsWQBuQiwd5c" aria-label="Obrázek v plné velikosti"><img decoding="async" alt="" alt="" data-original-height="1977" data-original-width="3820" height="331" src="https://blogger.googleusercontent.com/img/a/AVvXsEi412rgSzKpByqXuy9FNrHNn3AkYIrWS9ZfGMyE7kjdMG8AAe6HUDyUWV5jqnQQY0gx8vE36fxN5AiH-mC-dcu0ibB53kUNdYX0Yj03R6GXIfO2JwDZ2BrU2FVCahmvFSbEvZer96E3YKAX5VR68keBtBWfAK4J2EFtotkuvcR4fKV8hXRdsWQBuQiwd5c=w640-h331" width="640" /></a></div><p data-end="804" data-start="694">Dají se skriptovat a nahrazovat i dílčí objekty. Pro účely dnešního článku jsem vyskriptoval model jako celek.</p><p data-end="876" data-start="806">K čemu může být TMDL zobrazení dobré? Pár příkladů z posledních týdnů.</p><p data-end="885" data-start="878"><b>Problém</b></p><p data-end="1099" data-start="887">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.</p><p data-end="1107" data-start="1101"><b>Řešení</b></p><p data-end="1175" data-start="1109">TMDL view, vyskriptovat definici sémantického modelu, CTRL+F - XYZ</p><p data-end="1184" data-start="1177"><b>Problém</b></p><p data-end="1368" data-start="1186">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?</p><p data-end="1376" data-start="1370"><b>Řešení</b></p><p data-end="1423" data-start="1378">TMDL view, CTRL+F CROSSFILTER/USERELATIONSHIP</p><p data-end="1432" data-start="1425"><b>Problém</b></p><p data-end="1542" data-start="1434">Chceme globálně změnit formáty. Všechny procentuální metriky mají nově zobrazovat 1 desetinné místo místo 2.</p><p data-end="1550" data-start="1544"><b>Řešení</b></p><p data-end="1649" data-start="1552">CTRL+F - % podívat se, jak je to napsané, a následně například CTRL+H pro nahrazení 0.00% za 0.0%</p><p data-end="1801" data-start="1651">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.</p><p data-end="1810" data-start="1803"><b>Problém</b></p><p data-end="1930" data-start="1812">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?</p><p data-end="1938" data-start="1932"><b>Řešení</b></p><p data-end="2036" data-start="1940">Vyskriptovat ve zdrojovém souboru v TMDL, CTRL+C, CTRL+V v TMDL view cílového souboru a spustit.</p><p data-end="2045" data-start="2038"><b>A další</b></p><p data-end="2264" data-start="2047">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ě.</p><p></p><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjWESHmRzgJB4Yi7EKzmgDEw8r4ISTinEZC9WGV1ds7A8IGNN672y6GL0Kib4S9sZ33EtWIcbC9z3XLmxysoNPku7OR-37wcOx0PYyGSB9y-figSYR6ngcqdJPKYSVRSa9u4SvYTWohV87iz8a3bsC4ynvtwRoQWIK_DiENI5WjqXaV1UKZm1Eb4inhIBo" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="285" data-original-width="753" height="151" src="https://blogger.googleusercontent.com/img/a/AVvXsEjWESHmRzgJB4Yi7EKzmgDEw8r4ISTinEZC9WGV1ds7A8IGNN672y6GL0Kib4S9sZ33EtWIcbC9z3XLmxysoNPku7OR-37wcOx0PYyGSB9y-figSYR6ngcqdJPKYSVRSa9u4SvYTWohV87iz8a3bsC4ynvtwRoQWIK_DiENI5WjqXaV1UKZm1Eb4inhIBo=w400-h151" width="400" /></a></div><br />Na LinkedInu jsem viděl inspirující scénář změny režimu připojení z Importu na Direct Query u tabulky.&nbsp;<p></p><p><b>Závěr</b></p><p>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.</p>]]></description>
</item>
<item>
<title>Visual Calculations</title>
<link>https://www.neoral.cz/2025/02/visual-calculations.html</link>
<guid isPermaLink="true">https://www.neoral.cz/2025/02/visual-calculations.html</guid>
<pubDate>Mon, 24 Feb 2025 07:22:00 GMT</pubDate>
<category>Power BI</category>
<description><![CDATA[<p>&nbsp;Jednou z nejzajímavějších novinek, které v poslední době přibyly do Power BI, jsou <strong data-end="188" data-start="165">Visual Calculations</strong>. O co se jedná? Jak už název napovídá, jde o výpočty prováděné přímo na úrovni vizualizace. Některé výpočty je jednodušší vyhodnotit právě tímto způsobem, než je vytvářet jako obecná měřítka (<em data-end="391" data-start="381">measures</em>).</p><p data-end="659" data-start="397">V době psaní tohoto článku jsou <strong data-end="452" data-start="429">Visual Calculations</strong> dostupné v režimu <em data-end="480" data-start="471">Preview</em>, a je tedy nutné je nejprve povolit. To provedete v <strong data-end="615" data-start="533">File → Options and settings → Options → Preview features → Visual Calculations</strong> a následně restartujete Power BI Desktop.</p><p data-end="805" data-start="661">Jaké <strong data-end="695" data-start="666">Visual Level Calculations</strong> máme k dispozici? Nejjednodušeji s nimi můžete začít kliknutím na tři tečky v rohu vizualizace – viz obrázek.</p><p></p><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEg3BRAez11OOBNW3bohFMO7HxpI1GAFn6SfH8-5ov1JzqxAdZi0tau0HhZgnXps8LA0VJ6IGlPKmKmrdTjhmAgH0-IDlYE1ysjGuyXEO-9Ik1hei92pcbLYnCKn5k-q_HKM3dGyjonTVCZEXsuZq-2B96TCsj1aMi-j8wdcjvj7s-VWccGzdkACFHqix70" aria-label="Obrázek v plné velikosti"><img decoding="async" alt="" alt="" data-original-height="483" data-original-width="536" height="361" src="https://blogger.googleusercontent.com/img/a/AVvXsEg3BRAez11OOBNW3bohFMO7HxpI1GAFn6SfH8-5ov1JzqxAdZi0tau0HhZgnXps8LA0VJ6IGlPKmKmrdTjhmAgH0-IDlYE1ysjGuyXEO-9Ik1hei92pcbLYnCKn5k-q_HKM3dGyjonTVCZEXsuZq-2B96TCsj1aMi-j8wdcjvj7s-VWccGzdkACFHqix70=w400-h361" width="400" /></a></div>Pro demonstraci opět použiji demo databázi <strong data-end="137" data-start="115">Adventure Works DW</strong>. Mám faktovou tabulku <strong data-end="181" data-start="160">FactInternetSales</strong>, ve které mám měřítko <strong data-end="220" data-start="204">[# Internet]</strong>, definované jako součet sloupce <strong data-end="268" data-start="253">SalesAmount</strong>. Kromě toho pracuji s kalendářovou tabulkou <strong data-end="324" data-start="313">DimDate</strong>.<p></p><p></p><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEh4o9q1rkmz8rkr3ytVulzFmdzqQQZrusVYYdqzetgvyAckhEQ4HyiRB-8n5yu_tiOZ6Hw9uWcBE8wrTdDJ7Q6QA2FxinwTiFvsrE-QIWGRS3-cVXAZp9qC5vW1tNtnVlhSXabr7vyRuIvye6TTgfkXyiXCJC1hRlvMT4L2UuJjXsbQ6q9fiFz8RyFufEs" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="628" data-original-width="248" height="400" src="https://blogger.googleusercontent.com/img/a/AVvXsEh4o9q1rkmz8rkr3ytVulzFmdzqQQZrusVYYdqzetgvyAckhEQ4HyiRB-8n5yu_tiOZ6Hw9uWcBE8wrTdDJ7Q6QA2FxinwTiFvsrE-QIWGRS3-cVXAZp9qC5vW1tNtnVlhSXabr7vyRuIvye6TTgfkXyiXCJC1hRlvMT4L2UuJjXsbQ6q9fiFz8RyFufEs=w159-h400" width="159" /></a></div><p></p><p data-end="399" data-start="329">Například bych chtěl porovnat aktuální prodeje s předchozím obdobím.</p><div class="separator"><p data-end="543" data-start="401">Implementace pomocí klasického měřítka (<em data-end="450" data-start="441">measure</em>) není úplně triviální a vyžaduje určité znalosti DAX. Výraz by mohl vypadat například takto:</p></div><div><div># Vs Previous measure = </div><div><span>-- zjištění nejvyššího datumu v kontextu</span></div><div><span>var</span> <span>_md</span> = <span>max</span>(<span>'DimDate'</span><span>[Date]</span>)</div><div><span>-- zjištění předchozího datumu</span></div><div><span>var</span> <span>_pd</span> = <span>CALCULATE</span>(<span>max</span>(<span>'DimDate'</span><span>[Date]</span>),<span>DimDate</span><span>[Date]</span>&lt;<span>_md</span>)</div><div><span>-- prodeje pro nejvyšší datum</span></div><div><span>var</span> <span>_mds</span> = <span>CALCULATE</span>(<span>[# Internet]</span>,<span>DimDate</span><span>[Date]</span> &nbsp;= <span>_md</span>)</div><div><span>-- prodeje pro předchozí datum</span></div><div><span>var</span> <span>_pds</span> = <span>CALCULATE</span>(<span>[# Internet]</span>,<span>DimDate</span><span>[Date]</span> &nbsp;= <span>_pd</span>)</div><div><span>-- výsledek vracím pouze pokud mám od sebe co odečítat</span></div><div><span>var</span> <span>_rslt</span> = <span>if</span>(<span>ISBLANK</span>(<span>_mds</span>) || <span>ISBLANK</span>(<span>_pds</span>), <span>BLANK</span>(),<span>_mds</span>-<span>_pds</span>)</div><div><span>RETURN</span> <span>_rslt</span></div><div><span><br /></span></div><div>Tento přístup vyžaduje několik kroků: nejprve zjistíme aktuální datum, pak odpovídající datum v předchozím období a nakonec vypočítáme rozdíl prodejů.</div><div><br /></div><b>Zjednodušení pomocí Visual Calculation</b><p data-end="1141" data-start="972">Díky <strong data-end="1000" data-start="977">Visual Calculations</strong> lze stejný výpočet provést výrazně jednodušeji. Šablona <strong data-end="1076" data-start="1057">Versus Previous</strong>, dostupná v Power BI, nám automaticky vygeneruje jádro výrazu:</p></div><div><br /><div>Versus previous = [Field] - <span>PREVIOUS</span>([Field])</div><div><br /></div>Kde <strong data-end="1214" data-start="1205">Field</strong> představuje vybraný sloupec nebo measure. V našem případě to můžeme přepsat jako:</div><div><br /><div><div>Versus previous = </div><div><span>i</span><span>f</span><span>(</span> <span>-</span><span>-kontorola zda je co porovnávat</span></div><div>&nbsp; &nbsp; <span>IS</span><span>BLANK</span><span>([</span>#<span> Internet]) </span>|| <span>IS</span><span>BLANK</span><span>(</span><span>P</span><span>R</span><span>EVIOUS</span><span>([</span>#<span> Internet]))</span></div><div>&nbsp; &nbsp; ,<span>BLA</span><span>NK</span><span>(),</span> <span>-- </span><span>pokud ne, tak prázdná buňka</span></div><div>&nbsp; &nbsp; <span>-- j</span><span>inak odečet</span></div><div>&nbsp; &nbsp; [# In<span>ternet]-</span><span>PREV</span><span>I</span><span>OUS</span><span>([# I</span>n<span>ternet])</span></div><div>)</div><div><br /></div>Tento přístup je výrazně <strong data-end="1633" data-start="1604">jednodušší a přehlednější</strong>, přičemž stále poskytuje správné výsledky. Ve skutečnosti bychom si mohli vystačit i se základním výpočtem:</div><div><span><br /></span></div><div><span>Versus previous = </span><span>[# In</span><span>ternet]-</span><span>PREV</span><span>I</span><span>OUS</span><span>([# I</span><span>n</span><span>ternet])</span></div><div><span><br /></span></div><div><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiG8VduQIrzEx3yU-v4bmefBolOrlILrrIc1CrEWymO7y8qNATgHh-sr3_EQ26orfJ3x-VGTe60hbl1StHroH_8JZfKZ7JYHiyyEdY9aiFlUjBQV10s1SBMVNrr9M8iafHmllWDeA2cs91sCO1kE-j7uiJKTQkitcSKxI668vLtTJHo6Y90Hk5mP7QvuxQ" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="628" data-original-width="629" height="400" src="https://blogger.googleusercontent.com/img/a/AVvXsEiG8VduQIrzEx3yU-v4bmefBolOrlILrrIc1CrEWymO7y8qNATgHh-sr3_EQ26orfJ3x-VGTe60hbl1StHroH_8JZfKZ7JYHiyyEdY9aiFlUjBQV10s1SBMVNrr9M8iafHmllWDeA2cs91sCO1kE-j7uiJKTQkitcSKxI668vLtTJHo6Y90Hk5mP7QvuxQ=w400-h400" width="400" /></a></div><div><br /></div>Funkce <strong data-end="133" data-start="121">PREVIOUS</strong> ve <strong data-end="160" data-start="137">Visual Calculations</strong> vrací hodnotu z předchozího řádku vizualizace. To znamená, že její výsledek závisí na tom, <strong data-end="293" data-start="252">jak jsou data ve vizualizaci seřazena</strong>. Pokud je tabulka setříděna sestupně podle data, funkce nebude vracet očekávané výsledky. Proto je důležité správně nastavit pořadí řazení.</div><div><br /></div><div><b>Kdy použít Visual Calculation a kdy Measure?</b><p data-end="745" data-start="498"><strong data-end="513" data-start="501">Measures</strong><br data-end="516" data-start="513" /></p><ul><li>Nejsou závislé na konkrétní vizualizaci – lze je znovu použít v různých reportech.</li><li>Pracují přímo s datovým modelem a umožňují komplexní výpočty.</li><li>Vhodné pro scénáře, kde je potřeba konzistentní výpočet v celém reportu.</li></ul><p></p><p data-end="1076" data-start="747"><strong data-end="773" data-start="750">Visual Calculations</strong><br data-end="776" data-start="773" /></p><ul><li>Jsou <strong data-end="818" data-start="783">vázané na konkrétní vizualizaci</strong>, takže jejich použití je omezenější.</li><li>Mají jednodušší syntaxi, což ocení zejména ti, kdo s DAXem začínají.</li><li>V některých případech mohou mít <strong data-end="980" data-start="965">lepší výkon</strong>, protože pracují s agregovanými daty ve vizualizaci místo s detailními daty v datovém modelu.</li></ul><p></p><p data-end="1356" data-start="1078">Výběr mezi <strong data-end="1100" data-start="1089">Measure</strong> a <strong data-end="1125" data-start="1103">Visual Calculation</strong> tedy závisí na konkrétním scénáři – pokud potřebujete <strong data-end="1212" data-start="1180">opakovaně použitelný výpočet</strong>, měřítko (<em data-end="1232" data-start="1223">measure</em>) je lepší volba. Pokud ale hledáte rychlé řešení v rámci jedné vizualizace, <strong data-end="1331" data-start="1309">Visual Calculation</strong> může být efektivnější.</p></div></div><div class="separator"></div><b>Závěr</b><p data-end="1702" data-start="1380"><strong data-end="1403" data-start="1380">Visual Calculations</strong> jsou další skvělou součástí DAX arzenálu. Klasické <strong data-end="1467" data-start="1455">measures</strong> stále mají své pevné místo, ale v některých situacích umožňují <strong data-end="1554" data-start="1531">Visual Calculations</strong> jednodušší a efektivnější řešení s ohledem na výkon. Navíc fungují i pro <strong data-end="1647" data-start="1628">Live Connection</strong> k SSAS a sémantickým modelům v <strong data-end="1699" data-start="1679">Microsoft Fabric</strong>.</p><p data-end="1880" data-start="1704"><strong data-end="1720" data-start="1707">Živé demo</strong> Visual Calculations jsem ukazoval na své přednášce pro <strong data-end="1783" data-start="1776">WUG</strong>. Záznam najdete zde:<br data-end="1807" data-start="1804" /><a data-end="1878" data-start="1810" href="https://www.wug.cz/praha/akce/1731-DAX101" rel="noopener" target="_new">Záznam přednášky na WUG</a></p><p data-end="2080" data-start="1882">📅<strong data-end="1992" data-start="1885">Chystám se téma podrobněji rozebrat na samostatné přednášce 20. 3. 2025 v rámci 9. ročníku Power BI Day</strong>. Rád vás tam uvidím i osobně!<br data-end="2025" data-start="2022" /><a data-end="2078" data-start="2028" href="https://www.powerbiday.cz/cs/" rel="noopener" target="_new">Power BI Day 2025</a></p><p data-end="2326" data-start="2082">📅 Pokud se chcete naučit jazyk <strong data-end="2121" data-start="2114">DAX</strong> od základů až po pokročilé scénáře, včetně <strong data-end="2188" data-start="2165">Visual Calculations</strong>, přijďte na můj <strong data-end="2264" data-start="2205">celodenní workshop na Data Point Prague 29.–30. 5. 2025</strong>.<br data-end="2268" data-start="2265" /><a data-end="2324" data-start="2271" href="https://datapointprague.cz/" rel="noopener" target="_new">Data Point Prague 2025</a></p><p><br /></p>]]></description>
</item>
<item>
<title>Field parameters pro dynamické reporty</title>
<link>https://www.neoral.cz/2025/02/field-parameters-pro-dynamicke-reporty.html</link>
<guid isPermaLink="true">https://www.neoral.cz/2025/02/field-parameters-pro-dynamicke-reporty.html</guid>
<pubDate>Thu, 06 Feb 2025 15:21:00 GMT</pubDate>
<category>Power BI</category>
<description><![CDATA[Nějakou dobu zpátky jsem psal o tom, jak dodat dynamiku reportům pomocí dynamické metriky. Článek si můžete přečíst <a href="https://www.neoral.cz/2024/06/dynamicke-reporty-s-vyberem-zobrazene.html">zde</a>.&nbsp;<p>Ve zkratce šlo o problém, kdy chci zobrazovat uživatelům stejně rozvržený report, ale mít možnost volit metriku. Stejné grafy, tabulky a další vizuály s možností vybrat mezi obratem, marží nebo náklady.</p><p>Dnes se podíváme na dynamiku z druhé strany, a sice z pohledu dimenzionálního.</p><p>Představte si stejný typ grafu, stejnou metriku, ale s možností zobrazit rozpad podle různých dimenzionálních atributů – například podle produktové kategorie, prodejního kanálu nebo třeba barvy.</p><p>A právě k tomu slouží <strong>field parameters</strong>.</p><p>K demonstraci použiju starou dobrou databázi <em>Adventure Works DW</em>, stejně jako u většiny příkladů.</p><div>Model obsahuje následující measures a dimenze:&nbsp;</div><div><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiUy0CJW8cvIoX6U-e1MdWLvSQxRkfPLbieLTtB7efyAmUt0KlHAicwm9syffProsX1ecDluTUoGDreoon8TPyIM8wEbB8vM6AaG3PWfO2fymHpHohFkCeZpFfTx_AzXdlUp6Z9wdfz-0QhUOR65uJ1AoZ5Pm1U8uujpf0dz9TIbEMC1ayMtQd2JsmfaDE" aria-label="Obrázek v plné velikosti"><img decoding="async" alt="" alt="" data-original-height="562" data-original-width="585" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEiUy0CJW8cvIoX6U-e1MdWLvSQxRkfPLbieLTtB7efyAmUt0KlHAicwm9syffProsX1ecDluTUoGDreoon8TPyIM8wEbB8vM6AaG3PWfO2fymHpHohFkCeZpFfTx_AzXdlUp6Z9wdfz-0QhUOR65uJ1AoZ5Pm1U8uujpf0dz9TIbEMC1ayMtQd2JsmfaDE" width="250" /></a></div><div><br /></div>Tvorba field parametru probíhá na záložce Modeling na pásu karet.</div><div><br /></div><div><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEg4v0CzvSSOxrTsXE4Z5SUYkivwwWtj3RKhsG30usm9Dmi9eP6nGllQGPtEf6b4ptG47d217nzPzNxfpJ9rU0SYcH_YR136pIFK8JEdTIQ7UxP6wRE5cmmY-H2BjYJwAUWCmfx95qLPR5uriWUOPfhdrICoLN0wI9zX297LfXuCUQnQkF4j3CDgYrbkyZ8" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="496" data-original-width="1476" height="216" src="https://blogger.googleusercontent.com/img/a/AVvXsEg4v0CzvSSOxrTsXE4Z5SUYkivwwWtj3RKhsG30usm9Dmi9eP6nGllQGPtEf6b4ptG47d217nzPzNxfpJ9rU0SYcH_YR136pIFK8JEdTIQ7UxP6wRE5cmmY-H2BjYJwAUWCmfx95qLPR5uriWUOPfhdrICoLN0wI9zX297LfXuCUQnQkF4j3CDgYrbkyZ8=w640-h216" width="640" /></a></div><br />Nejprve nadefinujeme název parametru – zde Split (1), protože budu ovládat rozpad v grafu, matici a dalších vizualizacích. Následně vybereme seznam polí, která vytvoří hodnoty parametru v příslušném pořadí (2), a ponecháme zaškrtnutou možnost vytvoření sliceru (3).<br /><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjQmW4k43hiHDW_TS6fi5WOAa8ol0BzHgZwZEWZ3QBxb-p3uyGhET4XDDCrVpACMHx-6Y49TN6zj6VJz9wv9gOe0x3Hfu03I6Vvri7kmbpnj_tZkD9aHHXMhrJtasLE38JyvUSUqQ7QoFHoNnrTe6lf7SJOBj1Hv9DW-HoHkeSHaBiGLfXxVjkdWso0Y8c" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="1414" data-original-width="1415" height="640" src="https://blogger.googleusercontent.com/img/a/AVvXsEjQmW4k43hiHDW_TS6fi5WOAa8ol0BzHgZwZEWZ3QBxb-p3uyGhET4XDDCrVpACMHx-6Y49TN6zj6VJz9wv9gOe0x3Hfu03I6Vvri7kmbpnj_tZkD9aHHXMhrJtasLE38JyvUSUqQ7QoFHoNnrTe6lf7SJOBj1Hv9DW-HoHkeSHaBiGLfXxVjkdWso0Y8c=w640-h640" width="640" /></a></div>V modelu se vytvoří počítaná tabulka Split, která obsahuje název parametru (1), kód (2) volající popisky nahrazené hodnotou (NAMEOF funkce) a pořadí. Tyto hodnoty se zobrazí ve sliceru (3).</div><div><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhvBe_X0ex7HAVIcyZk5NIkREFT7nTAcSxHslUSp6UPNdOEAXKvcx2Tj4-vB6HaerbYnU339LTdeor3KQRMtuqLfE1NiuLCQXEsI_BQsc-HJaZDaRHbfHTIxa3ZDUkLwU0UYKAz64pPZK0grKIlH7PAhFBjpYuCxnx_3e_vmyujHdOVM7rcRkCuGDrZQJE" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="1225" data-original-width="3710" height="213" src="https://blogger.googleusercontent.com/img/a/AVvXsEhvBe_X0ex7HAVIcyZk5NIkREFT7nTAcSxHslUSp6UPNdOEAXKvcx2Tj4-vB6HaerbYnU339LTdeor3KQRMtuqLfE1NiuLCQXEsI_BQsc-HJaZDaRHbfHTIxa3ZDUkLwU0UYKAz64pPZK0grKIlH7PAhFBjpYuCxnx_3e_vmyujHdOVM7rcRkCuGDrZQJE=w640-h213" width="640" /></a></div>Detail vygenerovaného kódu</div><div><br /><div><div>Split = {</div><div>&nbsp; &nbsp; (<span>"Category"</span>, <span>NAMEOF</span>('DimProduct'[Category]), <span>0</span>),</div><div>&nbsp; &nbsp; (<span>"FullName"</span>, <span>NAMEOF</span>('DimEmployee'[FullName]), <span>1</span>),</div><div>&nbsp; &nbsp; (<span>"Color"</span>, <span>NAMEOF</span>('DimProduct'[Color]), <span>2</span>)</div><div>}</div><div><br /></div>Zde je možné upravit pořadí, změnit popisky a přidat další hodnoty. Například:</div><div><div><div>Split = {</div><div>&nbsp; &nbsp; (<span>"Category"</span>, <span>NAMEOF</span>(<span>'DimProduct'</span><span>[Category]</span>), <span>0</span>),</div><div>&nbsp; &nbsp; (<span>"FullName"</span>, <span>NAMEOF</span>(<span>'DimEmployee'</span><span>[FullName]</span>), <span>1</span>),</div><div>&nbsp; &nbsp; (<span>"Color"</span>, <span>NAMEOF</span>(<span>'DimProduct'</span><span>[Color]</span>), <span>2</span>),</div><div>&nbsp; &nbsp; (<span>"Currency"</span>, <span>NAMEOF</span>(<span>'DimCurrency'</span><span>[CurrencyAlternateKey]</span>),<span>3</span>)</div><div>}</div></div></div></div><div>Při tvorbě grafu a matice se nejprve zobrazí drill-down v defaultním pořadí.<br /><div class="separator"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhQryUqjr211hevEW8vungd3Obu8vN4Dblvn2U4YHpzgFiG0Ps530opH48AARvpxp0Jr-IrqV5EhIG2pT2un6Z1203FCevT9I2PJy2WHj0cuYSD0SMsiVqYs6soR92GigZ1u56uGUQ3ZHBXozZ1IKwRo8GTwPdXdfrob8hGyG-toi2d7EP56nKqAinRYh8" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="1465" data-original-width="2683" height="350" src="https://blogger.googleusercontent.com/img/a/AVvXsEhQryUqjr211hevEW8vungd3Obu8vN4Dblvn2U4YHpzgFiG0Ps530opH48AARvpxp0Jr-IrqV5EhIG2pT2un6Z1203FCevT9I2PJy2WHj0cuYSD0SMsiVqYs6soR92GigZ1u56uGUQ3ZHBXozZ1IKwRo8GTwPdXdfrob8hGyG-toi2d7EP56nKqAinRYh8=w640-h350" width="640" /></a></div></div><div><div class="separator">Pokud ale nejprve vyberu měnu (Currency) a následně kategorii (Category), vizuál se překreslí následovně:<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiDNbydea33U0PRMJTww46gI31eehROWihnUpzaeV2zEAmxWLn_XjVBXogCAqAmjsa5aQYJjuu923_XyjvNDaW_N-wRHjlokJuDE_pMtrkh0ywQXQPsX6tzrOsTvHGtoKxwt427XfIrVKzG7mAt-r1O6-e6QtC8VrijrnovmEUmP6UB_SyHJ1aKFFizwoc" aria-label="Obrázek v plné velikosti"><img loading="lazy" decoding="async" alt="" alt="" data-original-height="1520" data-original-width="2668" height="364" src="https://blogger.googleusercontent.com/img/a/AVvXsEiDNbydea33U0PRMJTww46gI31eehROWihnUpzaeV2zEAmxWLn_XjVBXogCAqAmjsa5aQYJjuu923_XyjvNDaW_N-wRHjlokJuDE_pMtrkh0ywQXQPsX6tzrOsTvHGtoKxwt427XfIrVKzG7mAt-r1O6-e6QtC8VrijrnovmEUmP6UB_SyHJ1aKFFizwoc=w640-h364" width="640" /></a></div><br />Jaká mají field parameters omezení?<br /><br />Podle posledního testu v době psaní tohoto článku nejsou field parameters k dispozici v Power BI Desktopu určeném pro on-premises Power BI Report Server.<br /><br />Stejně tak není možnost tvorby field parameters dostupná u live connection, protože v tomto režimu nelze vytvářet ani počítané tabulky. Pokud chcete použít field parameters, museli byste přepnout do DirectQuery režimu proti SSAS/Semantickému modelu. V takovém případě však může přepnutí do DirectQuery negativně ovlivnit výkon a funkcionalitu reportu.</div><div><br /></div><h2>Závěr</h2>Field parameters rozšiřují arzenál Power BI developera pro tvorbu dynamických reportů.<div><br /><br /></div>]]></description>
</item>
</channel>
</rss>
