Vytváření řetězců dynamického formátu pro míry

PLATÍ PRO: Power BI Desktop služba Power BI

Pomocí řetězců dynamického formátu měr můžete řídit, jak se míry zobrazují ve vizuálech. Podmíněně použijte formátovací řetězec pomocí samostatného vzorce DAX (Data Analysis Expression).

Poznámka:

Řetězce dynamického formátování měr jsou k dispozici v Power BI Desktop a Power BI Report Server (leden 2025 a později). Pokud používáte Power BI Report Server, ujistěte se, že máte nejnovější verzi nainstalovanou. Další informace najdete v tématu Co je nového na Serveru sestav Power BI.

Řetězce dynamického formátu řeší problém s funkcí FORMAT. Funkce FORMAT vrátí všechny výsledky jako řetězce, a to i číselné datové typy. Toto chování může způsobit problémy s vizuály, jako jsou grafy, které potřebují číselné hodnoty.

Pokud používáte řetězce dynamického formátu, míra zachová svůj datový typ a nezmění se na datový typ řetězce. Na míru použijete různé formátovací řetězce v závislosti na kontextu.

Můžete také použít řetězce dynamického formátu se skupinami výpočtů. Stejné vzory DAX, které pracují se skupinami výpočtů, fungují také v řetězcích dynamického formátu pro míry. Rozsah je však omezen na jednotlivé míry namísto všech měr v modelu. Další informace naleznete v tématu Skupiny výpočtů – řetězce dynamického formátu.

Vytváření řetězců dynamického formátu

  1. V podokně Data vyberte míru, pro kterou chcete zadat řetězec dynamického formátu.
  2. Na pásu karet Nástroje měr v části Formátování vyberte v seznamu Formát možnost Dynamic. Nalevo od řádku vzorců DAX se zobrazí nový rozevírací seznam s vybranou možností Formát . V tomto rozevíracím seznamu můžete přepínat mezi výrazem DAX statické míry a výrazem DAX řetězce dynamického formátu. Řetězec statického formátu, který jste použili před přepnutím na Dynamický, je předvyplněn jako řetězec v řádku vzorců DAX.

Použijte hodnotu textového pole

Při práci s textovými poli v sestavách můžete zobrazit hodnoty měr s dynamickým formátováním. Použít hodnotu textového pole:

  1. Vyberte textové pole v sestavě.

  2. V podokně Formát v části Hodnoty vyberte tlačítko pole (ikona fx).

  3. Zvolte metriku, která má použitý řetězec dynamického formátu.

  4. V textovém poli se zobrazí měřená hodnota s použitím dynamického formátovacího řetězce.

    Další informace o textových polích a dynamickém obsahu najdete v tématu Přidání textových polí a obrazců do sestav Power BI.

    Snímek obrazovky s rozevíracím seznamem Formát

  5. Přepište řetězec výrazem DAX, který vypíše správný formátovací řetězec pro vaši míru. Například následující výraz vyhledá řetězec pro formát měny, který chcete, z tabulky Řetězce formátů měn dle země/oblasti:

    Snímek obrazovky výrazu metriky dynamického formátu

  6. Ověřte, že řetězec dynamického formátu funguje ve vizuálu.

    Pokud chcete odstranit řetězec dynamického formátu a vrátit se k použití řetězce statického formátu, vyberte v rozevíracím seznamu Formát oddílu>Formátování jinou možnost formátu. Vzhledem k tomu, že tato akce není vrácena zpět, zobrazí se dialogové okno s dotazem, jestli chcete pokračovat. Pokud se chcete znovu vrátit k použití řetězce dynamického formátu, musíte znovu zadat výraz DAX.

    Snímek obrazovky s upozorněním na změnu formátu

Příklad

Nejlepším způsobem, jak se dozvědět o nové funkci, je vyzkoušet si ji sami. Můžete to udělat jenom pomocí ukázkového souboru Adventure Works 2020 PBIX , který je k dispozici v ukázkovém modelu DAX. Pomocí ukázkového modelu můžete přidat převod měny a zobrazit převedenou částku prodeje po roce. Po stažení otevřete soubor v Power BI Desktopu.

Vytvoření nových tabulek

Ukázkový model neobsahuje všechna data potřebná k vytvoření a použití řetězců dynamického formátu. Abyste mohli začít, musíte přidat dvě tabulky.

  1. Na pásu karet Domů vyberte Zadat data.

  2. V dialogovém okně Vytvořit tabulku zadejte řetězce formátu měny země/oblasti do pole Název a pak zkopírujte a vložte následující tabulku:

    Country/Region Měna Formát
    Austrálie Dolar AU$#,0,00
    Kanada Dolar C$#,0,00
    Dánsko Koruna kr#,0
    Eurozóny Euro € #,0,00
    Japonsko Jen ¶ #,0
    Švédsko Koruna kr#,0
    Švýcarsko Frank CHF#,0,00
    Spojené království Bušit £ #,0
    USA Dolar US$#,0,00
  3. Ověřte, že tabulka vypadá správně, a vyberte Načíst.

    Snímek obrazovky s dialogovým oknem Vytvořit tabulku

  4. Opakujte předchozí kroky pro následující tabulku:

    Název tabulky: Roční průměrné směnné kurzy

    Country/Region Měna Year (Rok) Roční průměrný směnný kurz
    Austrálie Dolar 2022 1.442
    Austrálie Dolar 2021 1.332
    Austrálie Dolar 2020 1.452
    Austrálie Dolar 2019 1.439
    Austrálie Dolar 2018 1.34
    Austrálie Dolar 2017 1.358
    Kanada Dolar 2022 1.301
    Kanada Dolar 2021 1.254
    Kanada Dolar 2020 1.341
    Kanada Dolar 2019 1.327
    Kanada Dolar 2018 1.297
    Kanada Dolar 2017 1.35
    Dánsko Koruna 2022 7.077
    Dánsko Koruna 2021 6.29
    Dánsko Koruna 2020 6.538
    Dánsko Koruna 2019 6.67
    Dánsko Koruna 2018 6.319
    Dánsko Koruna 2017 6.864
    Eurozóny Euro 2022 0.951
    Eurozóny Euro 2021 0.846
    Eurozóny Euro 2020 0.877
    Eurozóny Euro 2019 0.893
    Eurozóny Euro 2018 0.848
    Eurozóny Euro 2017 0.923
    Japonsko Jen 2022 131.454
    Japonsko Jen 2021 109.817
    Japonsko Jen 2020 106.725
    Japonsko Jen 2019 109.008
    Japonsko Jen 2018 110.424
    Japonsko Jen 2017 116.667
    Švédsko Koruna 2022 10.122
    Švédsko Koruna 2021 8.584
    Švédsko Koruna 2020 9.205
    Švédsko Koruna 2019 9.457
    Švédsko Koruna 2018 8.703
    Švédsko Koruna 2017 8.894
    Švýcarsko Frank 2022 0.955
    Švýcarsko Frank 2021 0.914
    Švýcarsko Frank 2020 0.939
    Švýcarsko Frank 2019 0.994
    Švýcarsko Frank 2018 0.979
    Švýcarsko Frank 2017 1.024
    Spojené království Bušit 2022 0.811
    Spojené království Bušit 2021 0.727
    Spojené království Bušit 2020 0.779
    Spojené království Bušit 2019 0.784
    Spojené království Bušit 2018 0.75
    Spojené království Bušit 2017 0.808

Vytvoření sloupce Year

Přidejte nový sloupec Rok do existující tabulky Kalendářní data.

  1. V zobrazení modelu klikněte pravým tlačítkem myši na tabulku Kalendářní datum a vyberte Nový sloupec.

  2. Do řádku vzorců DAX zadejte následující výraz: Year = YEAR([Date])a stiskněte Enter.

    Snímek obrazovky s vzorcem

Vytvoření vztahů

Vytvořte relace mezi novou tabulkou Roční průměrné směnné kurzy a tabulkami Formát měny země/oblasti a mezi tabulkou Roční průměrné směnné kurzy a existující tabulkou Datum.

  1. Pokud pro relace zapnete automatické rozpoznávání (na kartě Nástroje sloupce vyberte Spravovat relace a pak vyberte Automatické rozpoznávání), může se pro vás vytvořit relace mezi řetězci formátu měny země/oblasti a ročním průměrným směnným kurzem ve sloupci Země/oblast . Pokud ne, vytvořte tuto relaci pomocí tlačítka Nová relace v nástrojích> SloupcůSpravovat relace:

    • Tabulka 1: Roční průměrné směnné kurzy
    • Sloupec tabulky 1: Země/oblast
    • Kardinalita: M:1
    • Tabulka 2: Řetězce formátu měny země/oblasti
    • Sloupec Tabulka 2: Země/oblast
    • Nastavit tuto relaci jako aktivní: Ano
    • Směr křížového filtru: Jednoduché

    Relace by měla vypadat takto:

    Snímek obrazovky s vlastnostmi vztahu mezi řetězci formátu měny země/oblasti a ročními průměrnými směnnými kurzy

  2. Pokud pro relace zapnete automatické rozpoznávání, může být vytvořena relace mezi řetězci formátu měny Země/oblast a prodejní oblastí ve sloupci Země/oblast. Odstraňte tuto relaci, protože není správná pro model.

  3. Místo toho vytvořte relaci mezi ročními průměrnými směnnými kurzy a datem ve sloupci Rok .

    • Tabulka 1: Roční průměrné směnné kurzy
    • Sloupec tabulky 1: Rok
    • Kardinalita: M:N
    • Tabulka 2: Datum
    • Sloupec tabulky 2: Rok
    • Nastavit tuto relaci jako aktivní: Ano
    • Směr křížového filtru: Jednosměrný ('Roční průměr směnného kurzu' filtruje 'Datum')

    Relace by měla vypadat takto:

    Snímek vztahu

  4. Uložte model.

Vytvoření tabulky skupin měr

Skupina měr vám pomůže uspořádat různé míry tak, že je budete mít v jedné tabulce.

  1. Na pásu karet Domů vyberte Zadat data.
  2. V dialogovém okně Vytvořit tabulku ponechte hodnoty prázdné. Pojmenujte tabulku Sales metriky a pak vyberte Načíst. Tato tabulka obsahuje vaše nové míry.

Vytvořit míry

  1. V podokně Data rozbalte a klikněte pravým tlačítkem myši na Prodejní míry a pak vyberte Nová míra. Do řádku vzorců DAX zadejte následující výraz DAX a stiskněte Enter:

    Sales Amount = SUM(Sales[Sales Amount])
    

    Měl by vypadat takto:

    Snímek obrazovky vzorce DAX pro míru prodejní částky

  2. V prodejních mírách klikněte pravým tlačítkem na Sloupec1 a vyberte Skrýt v zobrazení sestavy. Díky této změně se míry Sales stanou skupinou měr, která se teď zobrazí v horní části podokna Data s ikonou skupiny měr, jako zde:

    Snímek obrazovky se sloupcem Column1 ve skupině měr Sales

  3. Teď můžete vytvořit míru pro výpočet směnného kurzu. Pravým tlačítkem myši klikněte na Prodejní míry, vyberte Nová míra, do řádku vzorců DAX zadejte následující výraz a stiskněte Enter:

    Exchange Rate (Yearly Avg) = 
    IF (
        ISBLANK ( SELECTEDVALUE ( 'Country/Region Currency Format Strings'[Country/Region] ) )
            || SELECTEDVALUE ( 'Country/Region Currency Format Strings'[Country/Region] ) = "United States",
        1,
        AVERAGE ( 'Yearly Average Exchange Rates'[Yearly Average Exchange Rate] )
    )
    
    

    Měl by vypadat takto: Snímek obrazovky se vzorcem DAX směnného kurzu v editoru DAX.

  4. Teď vytvořte další míru, která převede míru Sales Amount na jiné měny. Pravým tlačítkem myši klikněte na Prodejní míry, vyberte Nová míra, do řádku vzorců DAX zadejte následující výraz a stiskněte Enter:

        Converted Sales Amount = 
        SUMX('Date',
        CALCULATE( [Sales Amount] * [Exchange Rate (Yearly Avg)]))
    
    

    Skupina měr Sales measures by teď měla vypadat takto: Snímek obrazovky vzorce pro míru převedené částky prodeje.

Vytvoření sestavy

  1. Přejděte do zobrazení Sestava. Přidejte do sestavy novou prázdnou stránku.

  2. Přidejte vizuál spojnicového grafu na novou stránku sestavy. Použijte tento vizuál k zobrazení metriky před přidáním dynamického formátovacího řetězce pro metriky.

  3. V podokně > – Míry Prodeje vyberte Converted Sales Amount (Převedená částka prodeje). Aniž byste vybírali kdekoli jinde, vyberte v tabulce Datum také Rok.

    Snímek obrazovky s vizuálem spojnicového grafu v zobrazení sestavy

  4. Zkopírujte a vložte vizuál, abyste měli dva vizuály spojnicového grafu. Změňte vizuál druhého spojnicového grafu na vizuál tabulky a pak ho přesuňte pod spojnicový graf, například takto:

    Snímek obrazovky vizuálu kopírovaného spojnicového grafu

  5. Výběrem řezatele seznamu v podokně Vizualizací přidejte vizuál řezatele seznamu na stránku reportu. V podokně Data vyberte Zemi/Oblast z tabulky Řetězce formátu měny země/oblasti a přidejte ji do průřezu.

    Snímek obrazovky s průřezem země/oblasti

  6. Přeuspořádejte vizuály, dokud nebudou mít lepší rozložení, například takto:

    Snímek obrazovky s uspořádáním vizuálů

  7. I když to není nutné, můžete změnit vlastnosti vizuálu a vytvořit tak přehlednější sestavu. Pomocí tlačítka Formát vizuálu v podokně Vizualizace proveďte následující změny:

    Slicer

    • Vizuál karta >Nastavení sliceru>Jednotlivý výběr>zapnuto
    • Obecná karta >Vlastnosti>Odsazení: 10 px, všechny hrany
    • Obecná karta >Efekty>Vizuální okraj: Zapnuto, světle šedá, zaoblené rohy o 10 pixelech
    • Obecné karta >Název: Vypnuto
    • Vizuál záložka >Tlačítka>Ohraničení: #333333, 6 čar šířka

    tabulka

    • Obecná karta >Vlastnosti>Odsazení: 10 px, všechny hrany
    • Obecná karta >Efekty>Vizuální okraj: Zapnuto, světle šedá, zaoblené rohy o 10 pixelech
    • Karta Vizuál>mřížka> vodorovných mřížek: Zapnuto, Bílá, šířka 2
    • Vizuální karta>>: Zapnuto, Bílé, šířka 2
    • VizuálnízáložkaMřížkaOhraničení: bílý
    • Vizualizace>mřížky>Možnosti: 2 řádky odsazení
    • Vizuál kartě >Hodnoty>Barva pozadí: #F6F4F4
    • Vizuál karta >Hodnoty>Alternativní barva pozadí: #F6F4F4
    • Vizuální> karta Záhlaví sloupců:> Tučný text, Barva textu bílá, Barva pozadí #0D6ABF

    Spojnicový graf

    • Obecná karta >Vlastnosti>Odsazení: 10 px, všechny hrany
    • Obecná karta >Efekty>Vizuální ohraničení: Zapnuto, světle šedá, rohy zaoblené na 10 pixelů
    • Karta obecné>Vlastnosti>Název>Podnázev: Zapnuto
    • Vizuální karta >Osa Y >Název: Vypnuto
    • Vizuál karta >Y-osy>Hodnoty: Vypnuto
    • Vizualizace karet >značky: Zapnuto
    • Vizuál karta >Popisky dat: Zapnuto
    • Vizuální karta >Popisky dat>Hodnota: Tučně, modře

    Plátno (volitelné)

    • Nastavení> plátnaPozadí plátna: světle šedá, 85% průhlednost

    Použitím těchto vlastností vizuálu vytvoříte stránku sestavy, která vypadá takto:

    Snímek obrazovky s pozadím šedého plátna pro vizuál

Vytvoření řetězce dynamického formátu

Když v průřezu vyberete jiné názvy zemí/oblastí, grafy zobrazí výsledek metriky Převedená prodejní částka, ale ne ve správném formátu pro danou zemi/oblast.

  1. V podokně Data v části Míry Prodeje vyberte Převedená částka prodeje.

  2. Na pásu karet Nástroje měr v rozevíracím seznamu Formát vyberte Dynamický.

  3. V rozevíracím seznamu nalevo od řádku vzorců je teď text Formát a vzorec v řádku vzorců má formátovací řetězec. Nahraďte formátovací řetězec následujícím výrazem DAX a stiskněte Enter:

    SELECTEDVALUE ( 'Country/Region Currency Format Strings'[Format], "\$#,0.00;(\$#,0.00);\$#,0.00" )
    

    Měl by vypadat takto:

    Snímek obrazovky s dynamickým vzorcem pro formát měny země/oblasti

  4. V průřezu vyberte jinou zemi nebo oblast. Vizuály tabulkového a spojnicového grafu teď zobrazují převedenou částku měny ve správném formátu pro danou zemi nebo oblast. Zkuste v průřezu vybrat jinou zemi nebo oblast, abyste viděli, jak se vizuály mění.

    Snímek obrazovky s vizuálem Převedená částka prodeje

  5. Uložte model.

Řetězce dynamického formátu pro měření trvání

Pokud máte data doby trvání uložená v milisekundách, zobrazení nezpracovaných hodnot jako 3 600 000 ms není uživatelsky přívětivé. Řetězce dynamického formátu můžete místo toho použít k zobrazení hodnoty "1,0 h", přičemž základní míru ponecháte v milisekundách pro přesné výpočty a porovnání.

Vytvoření testovací tabulky

Pokud chcete tento vzor vyzkoušet, vytvořte počítanou tabulku s ukázkovými hodnotami doby trvání:

Events = 
DATATABLE(
    "Event", STRING,
    "DurationMs", INTEGER,
    {
        {"Quick click", 500},
        {"Page load", 5000},
        {"Report refresh", 120000},
        {"Data export", 7200000}
    }
)

Vytvoření míry doby trvání

Vytvořte míru, která sečte dobu trvání a vrátí nezpracované milisekundy:

Duration (ms) = SUM(Events[DurationMs])

Přidejte dynamický formátovací řetězec

Přidejte řetězec dynamického formátu, který převede a naformátuje hodnotu do příslušné časové jednotky:

VAR ms = SELECTEDMEASURE()
RETURN
    SWITCH(
        TRUE(),
        ms < 1000, FORMAT(ms, "#,0") & " \m\s",
        ms < 60000, "'" & FORMAT(ms / 1000, "#,0.0") & " s'",
        ms < 3600000, "'" & FORMAT(ms / 60000, "#,0.0") & " m'",
        "'" & FORMAT(ms / 3600000, "#,0.0") & " h'"
    )

Jak formátovací řetězec funguje

Následující tabulka ukazuje, jak se nezpracované hodnoty milisekund převádějí na čitelné formáty:

Nezpracovaná hodnota (ms) Konvertováno Display
500 500 500 ms
5 000 5.0 5,0 s
120 000 2.0 2,0 m
7,200,000 2.0 2,0 h

Funkce SELECTEDMEASURE() načte skutečnou hodnotu míry, převede ji na příslušnou jednotku a pak ji zabalí do řetězce literálového formátu pomocí jednoduchých uvozovek.

Výhody tohoto přístupu

  • Výpočty zůstávají přesné: Míra vrací milisekundy, takže součty, průměry a porovnání fungují správně.
  • Zobrazení je čitelné pro člověka: Uživatelé vidí "2,5 s" místo "2 500".
  • Jeden vzor, mnoho měr: Použijte stejný formátovací řetězec u všech měr doby trvání.
  • Grafy fungují správně: Na rozdíl od použití FORMAT() v samotné míře zachová řetězce dynamického formátu číselný datový typ pro vizualizace.

Tipy pro řetězce formátu doby trvání

  • Použijte \m\s k úniku "ms" jako literální text ve formátovacích řetězcích.
  • Jednoduché uvozovky ('...') v příkazu return vynucují, aby Power BI považoval celý formátovaný řetězec za literál.
  • Tento model funguje i se skupinami výpočtů. Použijte ho jednou a naformátujte více měr automaticky.

Návod

Pokud máte více měr doby trvání, které potřebují tento formátovací řetězec, zvažte vytvoření uživatelem definované funkce DAX , která definuje logiku formátování jednou a znovu ji použije ve všech vašich mírách.

Známé problémy a důležité informace

  • Vizuály mají možnosti formátování, které můžou ovlivnit zobrazení řetězce formátu. Pokud se formátování neočekávaně zobrazí ve vizuálu, přejděte do možnosti vizualizace Vizualizace>Formát vizuálu, vyhledejte Jednotky zobrazení a změňte je z Automaticky na Žádné.

    Snímek obrazovky jednotek zobrazení nastavených z automaticky na žádné

    Pokud chcete vypnout jednotky zobrazení pro všechny vizuály v sestavě, můžete použít vlastní motiv sestavy. Vytvořte soubor JSON s následujícím obsahem a naimportujte ho jako motiv:

    {
       "$schema": "https://raw.githubusercontent.com/microsoft/powerbi-desktop-samples/main/Report%20Theme%20JSON%20Schema/reportThemeSchema-2.149.json",
       "name": "DisplayUnitsNone",
       "visualStyles": {
         "*": {
           "*": {
             "*": [
               {
                 "displayUnits": 1,
                 "labelDisplayUnits": 1,
                 "titleDisplayUnits": 1,
                 "detailDisplayUnits": 1,
                 "valueDisplayUnits": 1,
                 "secLabelDisplayUnits": 1,
                 "titleLabelDisplayUnits": 1
               }
             ]
           }
         },
         "cardVisual": {
           "*": {
             "*": [{
                 "$id": "default",
                 "displayUnits": 1,
                 "labelDisplayUnits": 1,
                 "titleDisplayUnits": 1,
                 "detailDisplayUnits": 1,
                 "valueDisplayUnits": 1,
                 "secLabelDisplayUnits": 1,
                 "titleLabelDisplayUnits": 1
               }
             ]
           }
         }
       }
    }
    
  • Na míru samotnou v řetězci dynamického formátu můžete odkazovat přímo pomocí jejího názvu, například [Míra A], nebo nepřímo pomocí SELECTEDMEASURE().

  • Řetězce dynamického formátu pro míry se vztahují pouze na míry modelu. V sestavě aktivního připojení nemůžete přidávat řetězce dynamického formátu pro míry sestavy.

  • Použijete-li DirectQuery pro Analysis Services a v sestavě živého připojení vyberete možnost Provést změny v tomto modelu, připojení se přesune k DirectQuery nad Analysis Services. Obecně můžete provádět změny formátových řetězců měr vzdáleného modelu. Pomocí řetězců dynamického formátu pro metriky:

    • Míry vzdáleného modelu s definovanými řetězci dynamického formátu jsou blokované v provádění změn řetězce formátu na řetězec statického formátu nebo jiného výrazu DAX řetězce dynamického formátu.
    • Míry vzdáleného modelu nelze změnit z řetězce statického formátu na výraz DAX dynamického formátu definovaného v místním modelu.
    • Míry místního modelu jsou pro míry blokované pomocí řetězců dynamického formátu.