Režimy připojení a vliv na výkon
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
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)
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
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ů).
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.
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)
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.
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
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
Volba: Import Mode
- Data se nemění (historické)
- Jednodenní refresh stačí
- Komplexní DAX (YTD, % šance, atd.)
- Rychlost kritická
Volba: DirectQuery
- Real-time data kritické
- Data se mění velmi často (minuty)
- Jednoduché metriky (SUM, COUNT, AVG)
- Azure SQL backend je performantní
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