GOC644 — DAX základy (2 dny)
1. Úvod do Power BI 2. Datový model 3. Úvod do DAX 4. Oblasti použití DAX 5. Kontext výpočtu 6. Časová inteligence 7. Optimalizace DAX 8. Row Level Security 9. Nástroje
GOC6441 — Pokročilý DAX (2 dny)
1. Opakování & přehled 2. Dynamické reporty 3. DAX jako dotazovací jazyk 4. VertiPaq engine 5. Ladění výkonu 6. Composite Models 7. Workshop
Cvičení
1. Datový model 2. DAX základy 3. Kontext výpočtu 4. Časová inteligence
🏠 Rozcestník kurzů
GOC6441 · Kapitola 6

Režimy připojení a vliv na výkon

Import, DirectQuery, Live Connection, Composite Models — architektonické rozhodnutí pro výkon a real-time data
⏱ 70 minut

Cíle kapitoly

  • Znát výhody a nevýhody Import mode versus DirectQuery
  • Pochopit Live Connection a kdy ji používat
  • Stavět Composite Models (hybrid mode)
  • Optimalizovat DirectQuery s agregacemi a fold-down
  • Dělat informovaná architektonická rozhodnutí pro konkrétní Use Case
6.1

Import Mode — data v modelu

Import mode znamená, že data jsou zkopírována do VertiPaq a uložena v Power BI modelu (nebo souboru .pbix).

Výhody Import Mode

  • Výkon: Data jsou lokální (v paměti) → velmi rychlé dotazy (milisekundy)
  • DAX: Plná síla DAXu — všechny funkce jsou dostupné
  • Offline: Report funguje i bez spojení na data source
  • Agregace: Compression (VertiPaq) šetří paměť
  • Refresh: Můžete naplánovat refresh (denní, hodinový, atd.)

Nevýhody Import Mode

  • Stálost dat: Data jsou "snapshot" — pokud se zdroj změní, musíte refresh
  • Latence: Od poslední refresh do aktuálnosti dat je prodleva (hodina, den, apod.)
  • Velikost: Limit 1 GB pro nahrání .pbix na Shared kapacitu; Premium / Fabric umožňuje modely do 400 GB+ (Large Dataset Storage Format); Power BI Desktop nemá pevný limit — závisí na RAM počítače
  • Refresh čas: Velké datasety se refreshují déle (hodiny pro miliardy řádků)

Kdy použít Import Mode?

  • Historická analýza (tržby loňského roku)
  • Velké agregace (quarterly/monthly summaries)
  • Komplexní DAX výpočty (Calculation Groups, measures)
  • Offline reporting (tablet, offline připojení)

Best Practices

  • Refresh v "off-peak" hodiny (mimo business hours)
  • Stránkový refresh (refresh jen poslední 30 dní dat místo vše)
  • Query folding v Power Query (filtrovat na zdroji, ne v importu)
6.2

DirectQuery Mode — live connection na zdroj

DirectQuery znamená, že DAX dotazy se překládají na SQL (nebo native queries) a odesílají přímo na zdroj (SQL Server, Azure SQL, atd.).

Výhody DirectQuery

  • Real-time data: Vždycky vidíte aktuální data (žádná latence refresh)
  • Neomezená velikost: Můžete připojit biliony řádků bez paměťových limitů
  • Bezpečnost: RLS se definuje v Power BI modelu (DAX filtry v rolích); Power BI je přeloží na SQL WHERE predikáty odesílané na zdroj — fyzická filtrace proběhne v SQL, ale správa RLS zůstává v Power BI
  • Žádné duplicate: Data nejsou kopírována do Power BI modelu

Nevýhody DirectQuery

  • Výkon: Závisí na zdroji a síťové latenci (sekundy místo milisekund)
  • Omezené DAX: Ne všechny funkce fungují (CROSSJOIN, řádky historických funkcí, atd.)
  • Interaktivita: Každá interakce s visuálem = nový dotaz → pomalé
  • Refresh: Nepotřebujete refresh (je vždycky live), ale dotazy musí být optimální
  • Náklady na zdroj: Zdroj musí zvládnout mnoho paralelních dotazů

Optimalizace DirectQuery

Agregace v DirectQuery▼

Problém: DirectQuery je pomalý, pokud dotazy čtou miliony řádků ze zdroje.

Řešení: Vytvořte agregační tabulky v SQL (summary tables) a Power BI je automaticky použije, když je to vhodné.

Příklad: Místo čtení 100M řádků z FactInternetSales, Power BI přepne na Summary_Sales_Monthly (1000 řádků).

Query Folding — filter on source▼

Princip: Power Query má schopnost "sklopit" (fold) transformace do SQL WHERE klauzule.

Pokud máte: SELECT * FROM Sales WHERE Region = 'Europe', Power Query je odesílá na SQL přímo (folding). Pokud máte custom column s IF logou, folding se zastaví (Power Query musí čít všechny řádky).

Tip: Vždy se snažte filtrovat v Power Query (WHERE), ne v DAX.

SQL Server — indexy a pohledy▼

Na straně SQL:

  • Vytvořte clustered indexy na klíčových sloupcích (ProductKey, CustomerKey, DateKey)
  • Vytvořte non-clustered indexy na sloupcích, které se filtrují (Region, Category)
  • Agregované pohledy (indexed views) pro common summarizations
  • Statistiky na tabulkách — SQL Query Optimizer je potřebuje

Kdy použít DirectQuery?

  • Real-time data (trading, stock prices, live dashboards)
  • Obrovské datasety (terabytes)
  • Compliance/Audit data (kde je offline snapshot nepřijatelný)
  • Zdroj je performantní a stabilní (Azure SQL, Azure Synapse)
6.3

Live Connection — na existující dataset

Live Connection (taky "Connect live") znamená, že se připojujete na existující Power BI dataset nebo SSAS model, namísto na raw data.

Použití scénáře

  • Centrální model: Organizace má jeden centrální dataset (např. "Sales Model"), všechny reporty se ho připojují
  • Konzistence: Všichni vidí stejné metriky (žádné duplicate measures)
  • Bezpečnost: RLS je na centrálním modelu, ne v každém reportu

Omezení Live Connection

  • Lokální tabulky v čisté Live Connection: Report se jen připojuje k centrálnímu modelu — přidání lokálních tabulek vyžaduje přepnutí do Composite Mode (Power BI nabídne dialog). Po přepnutí lze lokální Import nebo DirectQuery tabulky kombinovat s Live Connection modelem.
  • Measures: Od roku 2020 lze v Live Connection reportu přidávat lokální measures přímo v reportu (nad centrálním modelem). Measures v centrálním modelu samotném měnit nelze.
  • Performance: Stejné jako zdroj dataset

Praktické využití

Live Connection je ideální pro velké organizace, kde máte tým pro data modeling (udržují centrální dataset) a tým pro reporting (tvoří reporty), ale reporty nemodifikují model.

6.4

Composite Models — Import + DirectQuery mix

Composite Models umožňují kombinovat Import a DirectQuery v jednom modelu. Jedna tabulka může být Import, druhá DirectQuery.

Use Case: Hybrid Approach

Historické data (Import) + Live transakcje (DirectQuery)

  • FactSales_Historical: Import (2023 a starší)
  • FactSales_Current: DirectQuery (poslední 30 dní)
  • DimProduct, DimCustomer: Import (lookup tabulky)

Výsledek: Historické data jsou rychlá (in-memory), live data jsou aktuální.

Souhrn (Import) + Podrobnosti (DirectQuery)

  • Summary_Sales_Monthly: Import (agregované tržby po měsících)
  • FactSales_Detail: DirectQuery (raw detail, čtení "drill-down")

Uživatel vidí summary rychle, může si "drill-down" do detailu, který je v DQ.

Hybrid Tables

ADVANCED Power BI Premium umožňuje "Hybrid Tables" — jedna tabulka má více partition s různými režimy. Starší historické partice jsou Import (výkon, in-memory), nejnovější partition (typicky 1–7 dní) je DirectQuery (real-time bez čekání na refresh). Výsledkem je tabulka s rychlou historickou analýzou a zároveň aktuálními daty bez latence.

Praktické doporučení

  • Lookup tabulky: Vždy Import (DimProduct, DimCustomer, DimDate) — malé, statické
  • Fact tabulky — volba:
    • Malé (< 100M řádků) nebo historické → Import
    • Obrovské (> 1B řádků) nebo live → DirectQuery
    • Oboje → Composite/Hybrid
6.5

Architektonická rozhodnutí — when to choose what

Rozhodovací matice

Kritérium Import Mode DirectQuery Live Connection Composite
Velikost dat 1 GB (Shared) / 400 GB+ (Premium) Neomezené Na zdroji Hybrid
Real-time? Ne (refresh lag) Ano (live) Ano Částečně
Výkon Velmi dobrý (ms) Závisí na zdroji (s) Dobrý Hybrid
DAX komplexnost Plná síla Omezené Lokální measures přidatelné (od 2020); centrální model jen ke čtení Hybrid
Refresh čas Potřeba (hodiny) Není potřeba Není potřeba Hybrid

Příklady Use Case

Use Case 1: BI Report historických tržeb▼

Volba: Import Mode

  • Data se nemění (historické)
  • Jednodenní refresh stačí
  • Komplexní DAX (YTD, % šance, atd.)
  • Rychlost kritická
Use Case 2: Live trading dashboard▼

Volba: DirectQuery

  • Real-time data kritické
  • Data se mění velmi často (minuty)
  • Jednoduché metriky (SUM, COUNT, AVG)
  • Azure SQL backend je performantní
Use Case 3: Multi-tenant SaaS reporting▼

Volba: Composite + RLS na DirectQuery

  • Různí tenanti vidí jen svá data (RLS)
  • Lookup tabulky (produkty, dimenze) — Import
  • Fact tabulka — DirectQuery; RLS role definovány v Power BI modelu
  • Power BI přeloží DAX RLS filtry na SQL WHERE predikáty — filtrace proběhne v SQL, definice zůstává v Power BI
✓
Golden Rule: Import = Rychlost, DirectQuery = Aktuálnost. Volte podle priorit vaší organizace.