Návrh škálovatelných výpočtů

Dokončeno

Váš model je strukturovaný. Navrhněte výpočty, které zajistí vysoký výkon a snadnou udržovatelnost i při růstu dat a rozšíření týmu. V malém měřítku model s duplicitními mírami a nekonzistentní pojmenování stále funguje, i když není ideální. V rozsáhlém měřítku selže. Model se stovkami měr potřebuje strukturální rozhodnutí o návrhu, která brání duplikované logice, zkracuje dobu dotazování u velkých datových sad a umožňuje novým členům týmu pochopit a rozšířit model bez zavedení chyb.

Tato lekce se zabývá třemi vzory: skupiny výpočtů pro omezení šíření měr, disciplína čitelnosti jazyka DAX pro zachování týmu a agregace pro výkon dotazů u rozsáhlých tabulek faktů.

Skupiny výpočtů

Skupiny výpočtů jsou objekty modelu, které používají stejný model výpočtu napříč více mírami. Místo vytváření samostatných měr pro každou variantu definujete vzor jednou a použijete ho dynamicky.

Skupiny výpočtů řeší problém.

Představte si organizaci se 50 základními mírami (jako jsou celkové prodeje, celkové náklady, zisk a prodané jednotky). Každý ukazatel potřebuje výpočty od začátku roku, od začátku čtvrtletí a od začátku měsíce. Bez skupin výpočtů je to 50 × 3 = 150 dodatečných měr. Přidejte porovnání předchozích let a díváte se na 250 a více měr, které chcete zachovat.

Pomocí skupin výpočtů můžete vytvořit jednu skupinu s položkami výpočtu pro každý vzor časové inteligence. Tyto položky se vztahují na libovolnou míru v modelu automaticky.

Jak fungují skupiny výpočtů

Skupina výpočtů obsahuje položky výpočtu, z nichž každá definuje výraz DAX, který upraví aktuální míru pomocí SELECTEDMEASURE(). Tady je skupina výpočtů časové inteligence:

// Year-to-Date
CALCULATE(
    SELECTEDMEASURE(),
    DATESYTD('Date'[Date])
)
// Quarter-to-Date
CALCULATE(
    SELECTEDMEASURE(),
    DATESQTD('Date'[Date])
)
// Month-to-Date
CALCULATE(
    SELECTEDMEASURE(),
    DATESMTD('Date'[Date])
)

Když uživatel přidá skupinu výpočtů do vizuálu, může přepínat mezi hodnotami YTD, QTD a MTD pro libovolnou míru (například Celkové prodeje, Zisk nebo Prodané jednotky) bez samostatných měr pro každou kombinaci.

Řetězce dynamického formátu

Řetězce dynamického formátu mění formát zobrazení na základě kontextu položky výpočtu. Například výpočet procent by se měl zobrazit jako procento, zatímco měnové výpočty by se měly zobrazit jako měna, i když se použijí na stejnou základní jednotku.

// In the format string expression for a YoY % calculation item:
"0.0%"

Řetězce dynamického formátu snižují potřebu samostatných formátovaných měr a zachování konzistentního formátování napříč modelem.

Tip

Přečtěte si další informace o tom, jak vytvořit skupiny výpočtů v Power BI.

Kdy použít skupiny výpočtů

Skupiny výpočtů použijte, pokud máte tři nebo více měr, které potřebují stejný vzorec výpočtu. Mezi běžné případy použití patří časová inteligence (YTD, QTD, MTD), převod měn a výpočty odchylek (skutečné hodnoty vs. rozpočet).

Principy čitelnosti DAX

Při velkém měřítku se týmem, který udržuje více než 200 metrik, je čitelnost návrhovým rozhodnutím, nikoli otázkou osobního vkusu. Konzistentní a čitelný jazyk DAX snižuje chyby údržby a usnadňuje novým členům týmu pochopení modelu.

Variables

Proměnné ukládají přechodné výsledky, zlepšují čitelnost a brání modulu v vyhodnocování stejného výrazu vícekrát:

Profit Margin =
VAR TotalRevenue = SUM(Sales[Revenue])
VAR TotalCost = SUM(Sales[Cost])
VAR ProfitAmount = TotalRevenue - TotalCost
RETURN
    DIVIDE(ProfitAmount, TotalRevenue)

Bez proměnných se stejný SUM(Sales[Revenue]) výraz může objevit třikrát v komplexním výpočtu. Proměnné vyhodnocují výraz jednou a znovu používají výsledek.

Tip

Přečtěte si další informace o používání proměnných ke zlepšení vzorců DAX.

Názvoslovné konvence

Konzistentní pojmenování je důležité, když má váš model stovky měr udržovaných více lidmi. Vytváření konvencí pro:

  • Názvy metrik: Používejte jasné, popisné názvy, jako například "Celkový prodej" nebo "Růst tržeb meziročně". Vyhněte se zkratkám, kterým rozumí jenom původní autor.
  • Názvy proměnných: Použijte popisné názvy, které vysvětlují zprostředkující hodnotu (například TotalRevenue ne x nebo temp).
  • Položky skupiny výpočtů: Pojmenujte položky podle jejich funkce, ne podle toho, jak fungují (například "Year-to-Date" místo "DATESYTD Wrapper").

Popisné pojmenování je také důležité pro zpracování AI. Když Copilot nebo datový agent dotazuje váš model, pomocí názvů měr a popisů určí, které výpočty se mají zahrnout. Míra s názvem "YoY Revenue Growth" vytváří lepší výsledky AI než "Calc7_v2".

Tip

Copilot v Power BI vám může pomoct psát a vysvětlit vzorce DAX. Při práci na složitých mírách použijte Copilot k návrhu vylepšení nebo vysvětlení stávající logiky.

Iterátory vs. agregační funkce

Funkce iterátoru (SUMX, AVERAGEX, MAXX) vyhodnocují výraz řádku po řádku v tabulce. Agregační funkce (SUM, AVERAGE, MAX) pracují s jedním sloupcem. Ve velkých objemech dat záleží na výběru:

  • Agregační funkce používejte při sumarizaci jednoho sloupce. Jsou rychlejší, protože modul může používat předem připravené datové struktury.
  • Iterátory použijte, když výpočet vyžaduje výraz na úrovni řádku (například Quantity × UnitPrice na řádek).

Poznámka:

Iterátory zpracovávají každý řádek, což může ovlivnit výkon u velkých tabulek faktů.

Informační funkce pro obranné vzory

Informační funkce, jako ISBLANK, HASONEVALUE a ISINSCOPE vytvářejí obranné vzory pro opatření spotřebovávané více reporty s různými filtračními kontexty:

Sales per Customer =
IF(
    HASONEVALUE(Customer[CustomerID]),
    DIVIDE(SUM(Sales[Amount]), 1),
    DIVIDE(SUM(Sales[Amount]), DISTINCTCOUNT(Sales[CustomerID]))
)

Tyto vzory zabraňují neočekávaným výsledkům, když se míry používají v kontextech, které původní autor neočekával.

Aggregations

Agregace jsou souhrnné tabulky, které ukládají předem vypočtené součty na vyšší úrovni než podrobná data. Dotazy nejprve narazily na tyto tabulky, což zlepšuje výkon u velkých tabulek faktů. Když dotaz odpovídá agregaci, modul vrátí výsledky z menší souhrnné tabulky místo prohledávání milionů řádků podrobností.

Agregace jako rozhodnutí o návrhu

Rozhodování o tom, kdy přidat agregace a s jakou členitostí je rozhodnutí o návrhu. Monitorování výkonu a ladění jsou samostatné provozní aspekty, ale při návrhu modelu zvolíte strukturální volbu.

Zvažte agregace v případech, kdy:

  • Tabulky faktů přesahují milióny řádků a běžně používané dotazy shrnují data na vyšší úrovni podrobnosti (například měsíční součty podle oblastí).
  • Uživatelé zažívají pomalé časy odezvy dotazů u vizuálů na úrovni souhrnu.
  • Většina interakcí sestav nevyžaduje řádkovou úroveň podrobností.

Jak se chování agregace liší podle režimu úložiště

V režimu importu se agregace ukládají jako samostatné skryté tabulky. Modul automaticky směruje odpovídající dotazy do tabulky agregace.

V režimu Direct Lake můžou samotné tabulky Delta sloužit jako zdroje agregace. Vzhledem k tomu, že Direct Lake čte sloupcové soubory Parquet, může modul zpracovávat větší objemy dat bez agregací v mnoha scénářích. Agregace můžete přidat jenom v případě, že vzory dotazů potvrdí potřebu.

Tip

Přečtěte si další informace o agregacích definovaných uživatelem v Power BI.