Sdílet prostřednictvím


Příklady výrazů v Power BI Tvůrce sestav

PLATÍ PRO: Power BI Tvůrce sestav Power BI Desktopu

Výrazy se často používají v Power BI Tvůrce sestav stránkovaných sestav k řízení obsahu a vzhledu sestav. Výrazy jsou napsané v jazyce Microsoft Visual Basic a mohou používat předdefinované funkce, vlastní kód, proměnné sestavy a skupiny a uživatelem definované proměnné. Výrazy začínají symbolem rovná se (=).

Tento článek obsahuje příklady výrazů, které lze použít pro běžné úlohy v sestavě.

  • Funkce jazyka Visual Basic: Příklady pro funkce data, řetězce, převodu a podmíněného jazyka Visual Basic.

  • Funkce sestavy: Příklady agregací a dalších předdefinovaných funkcí sestav.

  • Vzhled dat sestavy: Příklady změny vzhledu sestavy

  • Vlastnosti: Příklady nastavení vlastností položky sestavy pro řízení formátu nebo viditelnosti

  • Parametry: Příklady použití parametrů ve výrazu

  • Vlastní kód: Příklady vloženého vlastního kódu

Další informace o jednoduchých a složitých výrazech, kde můžete používat výrazy a typy odkazů, které můžete do výrazu zahrnout, najdete v tématu Výrazy v Power BI Tvůrce sestav.

Funkce

Mnoho výrazů v sestavě obsahuje funkce. Pomocí těchto funkcí můžete formátovat data, používat logiku a přistupovat k metadatům sestavy. Můžete psát výrazy, které používají funkce z knihovny modulu runtime Jazyka Microsoft Visual Basic a z oborů xref:System.Convert názvů a xref:System.Math oborů názvů. Můžete přidat odkazy na funkce ve vlastním kódu. Můžete také použít třídy z rozhraní Microsoft .NET Framework, včetně xref:System.Text.RegularExpressions.

Funkce jazyka Visual Basic

Pomocí funkcí jazyka Visual Basic můžete manipulovat s daty zobrazenými v textových polích nebo pro parametry, vlastnosti nebo jiné oblasti sestavy. Tato část obsahuje příklady demonstrující některé z těchto funkcí. Další informace naleznete v tématu Členové knihovny modulu runtime jazyka Visual Basic na webu MSDN.

Rozhraní .NET Framework poskytuje mnoho možností vlastního formátu, například pro konkrétní formáty kalendářních dat. Další informace naleznete v tématu Typy formátování.

Matematické funkce

  • Funkce Zaokrouhlit je užitečná k zaokrouhlení čísel na nejbližší celé číslo. Následující výraz zaokrouhlí číslo 1,3 na 1:

    =Round(1.3)  
    

    Můžete také napsat výraz, který zaokrouhlí hodnotu na násobek, který zadáte, podobně jako funkce MRound v Excelu. Vynásobte hodnotu faktorem, který vytvoří celé číslo, zaokrouhlí číslo a pak vydělí stejným faktorem. Pokud například chcete zaokrouhlit číslo 1,3 na nejbližší násobek 0,2, což je 1,4, použijte následující výraz:

    =Round(1.3*5)/5  
    

Datové funkce

  • Funkce Today poskytuje aktuální datum. Tento výraz lze použít v textovém poli k zobrazení data v sestavě nebo v parametru k filtrování dat na základě aktuálního data.

    =Today()  
    
  • Pomocí funkce DateInterval vytáhněte určitou část data. Tady jsou některé platné parametry DateInterval :

    • DateInterval.Second
    • DateInterval.Minute
    • DateInterval.Hour
    • DateInterval.Weekday
    • DateInterval.Day
    • DateInterval.DayOfYear
    • DateInterval.WeekOfYear
    • DateInterval.Month
    • DateInterval.Quarter
    • DateInterval.Year

    Tento výraz například zobrazí číslo týdne v aktuálním roce pro dnešní datum:

    =DatePart(DateInterval.WeekOfYear, today()) 
    
  • Funkce DateAdd je užitečná pro poskytování rozsahu kalendářních dat na základě jednoho parametru. Následující výraz poskytuje datum, které je šest měsíců po datu z parametru s názvem StartDate.

    =DateAdd(DateInterval.Month, 6, Parameters!StartDate.Value)  
    
  • Funkce Year zobrazuje rok pro konkrétní datum. Data můžete seskupit dohromady nebo zobrazit jako popisek sady kalendářních dat. Tento výraz poskytuje rok pro danou skupinu kalendářních dat prodejní objednávky. Funkci Měsíc a další funkce lze použít také k manipulaci s kalendářními daty. Další informace najdete v dokumentaci k jazyku Visual Basic.

    =Year(Fields!OrderDate.Value)  
    
  • Pomocí kombinace funkcí ve výrazu můžete přizpůsobit formát. Následující výraz změní formát data ve formuláři měsíc-den-rok na číslo týdne v měsíci. Například změňte "12/18/2022" na "Prosinec Týden 3":

    =Format(Fields!MyDate.Value, "MMMM") & " Week " &   
    (Int(DateDiff("d", DateSerial(Year(Fields!MyDate.Value),   
    Month(Fields!MyDate.Value),1), Fields!FullDateAlternateKey.Value)/7)+1).ToString  
    

    Pokud se v datové sadě používá jako počítané pole, můžete tento výraz v grafu použít k agregaci hodnot podle týdnů v rámci každého měsíce.

  • Následující výraz formátuje hodnotu SellStartDate jako MMM-yy. Pole SellStartDate je datový typ datetime.

    =FORMAT(Fields!SellStartDate.Value, "MMM-yy")  
    
  • Následující výraz naformátuje hodnotu SellStartDate jako dd/MM/yy. Pole SellStartDate je datový typ datetime.

    =FORMAT(Fields!SellStartDate.Value, "dd/MM/yyyy")  
    
  • Funkce CDate převede hodnotu na datum. Funkce Now vrátí hodnotu data obsahující aktuální datum a čas podle vašeho systému. DateDiff vrátí hodnotu Typu Long určující počet časových intervalů mezi dvěma hodnotami data .

    Následující příklad zobrazuje počáteční datum aktuálního roku.

    =DateAdd(DateInterval.Year,DateDiff(DateInterval.Year,CDate("01/01/1900"),Now()),CDate("01/01/1900"))  
    
  • Následující příklad zobrazí počáteční datum předchozího měsíce na základě aktuálního měsíce.

    =DateAdd(DateInterval.Month,DateDiff(DateInterval.Month,CDate("01/01/1900"),Now())-1,CDate("01/01/1900"))  
    
  • Následující výraz vygeneruje roky intervalu mezi SellStartDate a LastReceiptDate. Tato pole jsou ve dvou různých datových sadách, DataSet1 a DataSet2.

    =DATEDIFF("yyyy", First(Fields!SellStartDate.Value, "DataSet1"), First(Fields!LastReceiptDate.Value, "DataSet2"))  
    
  • Funkce DatePart vrátí celočíselnou hodnotu obsahující zadanou komponentu dané hodnoty Date . Následující výraz vrátí rok pro první hodnotu SellStartDate v DataSet1. Obor datové sady je zadaný, protože v sestavě je více datových sad.

    =Datepart("yyyy", First(Fields!SellStartDate.Value, "DataSet1"))  
    
    
  • Funkce DateSerial vrátí hodnotu Date představující zadaný rok, měsíc a den s informacemi o čase nastaveném na půlnoc. Následující příklad zobrazuje koncové datum pro předchozí měsíc na základě aktuálního měsíce.

    =DateSerial(Year(Now()), Month(Now()), "1").AddDays(-1)  
    
  • Následující výrazy zobrazují různá kalendářní data na základě hodnoty parametru data vybrané uživatelem.

Příklad popisu Příklad
Yesterday =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)-1)
Před dvěma dny =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)-2)
Před měsícem =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value)-1,Day(Parameters!TodaysDate.Value))
Před dvěma měsíci =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value)-2,Day(Parameters!TodaysDate.Value))
Před rokem =DateSerial(Year(Parameters!TodaysDate.Value)-1,Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value))
Před dvěma lety =DateSerial(Year(Parameters!TodaysDate.Value)-2,Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value))

Funkce řetězců

  • Zkombinujte více než jedno pole pomocí operátorů zřetězení a konstant jazyka Visual Basic. Následující výraz vrátí dvě pole, z nichž každý je na samostatném řádku ve stejném textovém poli:

    =Fields!FirstName.Value & vbCrLf & Fields!LastName.Value   
    
  • Formátujte kalendářní data a čísla v řetězci pomocí funkce Format . Následující výraz zobrazí hodnoty parametrů StartDate a EndDate v dlouhém formátu data:

    =Format(Parameters!StartDate.Value, "D") & " through " &  Format(Parameters!EndDate.Value, "D")    
    

    Pokud textové pole obsahuje pouze datum nebo číslo, měli byste použít vlastnost Formát textového pole místo funkce Formát v textovém poli.

  • Funkce Right, Len a InStr jsou užitečné pro vrácení podřetězce, například oříznutí uživatelského jména DOMAIN\pouze na uživatelské jméno. Následující výraz vrátí část řetězce napravo od znaku zpětného lomítka (\) z parametru s názvem User:

    =Right(Parameters!User.Value, Len(Parameters!User.Value) - InStr(Parameters!User.Value, "\"))  
    

    Výsledkem následujícího výrazu je stejná hodnota jako předchozí, a to pomocí členů třídy .NET Framework xref:System.String místo funkcí jazyka Visual Basic:

    =Parameters!User.Value.Substring(Parameters!User.Value.IndexOf("\")+1, Parameters!User.Value.Length-Parameters!User.Value.IndexOf("\")-1)  
    
  • Zobrazí vybrané hodnoty z parametru s více hodnotami. Následující příklad používá funkci Join ke zřetězení vybraných hodnot parametru MySelection do jednoho řetězce, který lze nastavit jako výraz pro hodnotu textového pole v položce sestavy:

    = Join(Parameters!MySelection.Value)  
    

    Následující příklad se shoduje s předchozím příkladem a zobrazí textový řetězec před seznamem vybraných hodnot.

    ="Report for " & JOIN(Parameters!MySelection.Value, " & ")  
    
    
  • Funkce Regex z rozhraní .NET Framework xref:System.Text.RegularExpressions jsou užitečné pro změnu formátu existujících řetězců, například formátování telefonního čísla. Následující výraz pomocí funkce Replace změní formát desetimístného telefonního čísla v poli z nnn-nnn-nnnn na "(nnn) nnn-nnnn":

    =System.Text.RegularExpressions.Regex.Replace(Fields!Phone.Value, "(\d{3})[ -.]*(\d{3})[ -.]*(\d{4})", "($1) $2-$3")  
    

    Poznámka:

    Ověřte, že hodnota pole ! Phone.Value nemá žádné nadbytečné mezery a je typu xref:System.String.

Vyhledání

  • Zadáním pole klíče můžete pomocí funkce Lookup načíst hodnotu z datové sady pro relaci 1:1, například pár klíč-hodnota. Následující výraz zobrazí název produktu z datové sady ("Product"), který se má shodovat s identifikátorem produktu:

    =Lookup(Fields!PID.Value, Fields!ProductID.Value, Fields.ProductName.Value, "Product")  
    

LookupSet

  • Zadáním pole klíče můžete pomocí funkce LookupSet načíst sadu hodnot z datové sady pro relaci 1:N. Osoba může mít například více telefonních čísel. V následujícím příkladu předpokládejme, že datový seznam phoneList obsahuje identifikátor osoby a telefonní číslo v každém řádku. Funkce LookupSet vrátí pole hodnot. Následující výraz kombinuje návratové hodnoty do jednoho řetězce a zobrazí seznam telefonních čísel pro osobu určenou ContactID:

    =Join(LookupSet(Fields!ContactID.Value, Fields!PersonID.Value, Fields!PhoneNumber.Value, "PhoneList"),",")  
    

Převodní funkce

Pomocí funkcí jazyka Visual Basic můžete převést pole z jednoho datového typu na jiný datový typ. Převodní funkce lze použít k převodu výchozího datového typu pole na datový typ potřebný pro výpočty nebo kombinování textu.

  • Následující výraz převede konstantu 500 na typ Decimal, aby ho porovnával s datovým typem Transact-SQL v poli Hodnota pro výraz filtru.

    =CDec(500)  
    
  • Následující výraz zobrazí počet hodnot vybraných pro parametr MultiValue MySelection.

    =CStr(Parameters!MySelection.Count)  
    

Rozhodovací funkce

  • Funkce IIF vrátí jednu ze dvou hodnot v závislosti na tom, jestli je výraz pravdivý nebo ne. Následující výraz používá funkci IIF k vrácení logické hodnoty True , pokud hodnota LineTotal překračuje hodnotu 100. V opačném případě vrátí hodnotu False:

    =IIF(Fields!LineTotal.Value > 100, True, False)  
    
  • Pokud chcete vrátit jednu ze tří hodnot v závislosti na hodnotě PctComplete, použijte více funkcí IIF (označovaných také jako "vnořené IIF"). Následující výraz lze umístit do barvy výplně textového pole, aby se změnila barva pozadí v závislosti na hodnotě v textovém poli.

    =IIF(Fields!PctComplete.Value >= 10, "Green", IIF(Fields!PctComplete.Value >= 1, "Blue", "Red"))  
    

    Hodnoty větší než nebo rovny 10 zobrazení se zeleným pozadím, mezi 1 a 9 zobrazení s modrým pozadím a méně než 1 zobrazení s červeným pozadím.

  • Jiný způsob, jak získat stejné funkce, používá funkci Switch . Funkce Switch je užitečná, pokud existují tři nebo více podmínek k otestování. Funkce Switch vrátí hodnotu přidruženou k prvnímu výrazu v řadě, která se vyhodnotí jako true:

    =Switch(Fields!PctComplete.Value >= 10, "Green", Fields!PctComplete.Value >= 1, "Blue", Fields!PctComplete.Value = 1, "Yellow", Fields!PctComplete.Value <= 0, "Red")  
    

    Hodnoty větší než nebo rovny 10 zobrazení se zeleným pozadím, mezi 1 a 9 zobrazením s modrým pozadím, rovnajícím se 1 displeji se žlutým pozadím a 0 nebo méně zobrazení s červeným pozadím.

  • Otestujte hodnotu pole ImportantDate a v opačném případě vrátí hodnotu "Červená", pokud je starší než týden, a "Modrá". Tento výraz lze použít k řízení vlastnosti Barva textového pole v položce sestavy:

    =IIF(DateDiff("d",Fields!ImportantDate.Value, Now())>7,"Red","Blue")  
    
  • Otestujte hodnotu pole Telefonní číslo a vrátí hodnotu Bez hodnoty, pokud má hodnotu null (Nothing v jazyce Visual Basic), v opačném případě vrátí hodnotu telefonního čísla. Tento výraz lze použít k řízení hodnoty textového pole v položce sestavy.

    =IIF(Fields!PhoneNumber.Value Is Nothing,"No Value",Fields!PhoneNumber.Value)  
    
  • Otestujte hodnotu pole Oddělení a vrátí buď název podsestavy, nebo hodnotu null (v jazyce Visual Basic nic ). Tento výraz lze použít pro podsestavy podmíněné podrobné analýzy.

    =IIF(Fields!Department.Value = "Development", "EmployeeReport", Nothing)  
    
  • Otestujte, jestli je hodnota pole null. Tento výraz lze použít k řízení skryté vlastnosti položky sestavy obrázku. V následujícím příkladu se obrázek zadaný polem LargePhoto zobrazí pouze v případě, že hodnota pole není null.

    =IIF(IsNothing(Fields!LargePhoto.Value),True,False)  
    
  • Funkce MonthName vrátí řetězcovou hodnotu obsahující název zadaného měsíce. Následující příklad zobrazí v poli Měsíc NA, pokud pole obsahuje hodnotu 0.

    IIF(Fields!Month.Value=0,"NA",MonthName(IIF(Fields!Month.Value=0,1,Fields!Month.Value)))  
    
    

Funkce sestavy

Ve výrazu můžete přidat odkaz na další funkce sestavy, které manipulují s daty v sestavě. Tato část obsahuje příklady pro dvě z těchto funkcí.

Sum

  • Funkce Sum může sčítat hodnoty ve skupině nebo oblasti dat. Tato funkce může být užitečná v záhlaví nebo zápatí skupiny. Následující výraz zobrazí součet dat ve skupině Objednávky nebo oblasti dat:

    =Sum(Fields!LineTotal.Value, "Order")  
    
  • Funkci Součet můžete také použít pro podmíněné agregační výpočty. Pokud například datová sada obsahuje pole s názvem Stát s možnými hodnotami Nezačnuto, Spuštěno, Dokončeno, následující výraz při umístění do záhlaví skupiny vypočítá agregační součet pouze pro hodnotu Dokončeno:

    =Sum(IIF(Fields!State.Value = "Finished", 1, 0))  
    

Číslo řádku

  • Funkce RowNumber , pokud se používá v textovém poli v oblasti dat, zobrazí číslo řádku pro každou instanci textového pole, ve kterém se výraz zobrazí. Tato funkce může být užitečná pro číslování řádků v tabulce. Může být také užitečné pro složitější úlohy, například poskytování konců stránek na základě počtu řádků. Další informace najdete v části Konce stránek v tomto článku.

    Obor, který zadáte pro ovládací prvky RowNumber při zahájení přečíslování. Klíčové slovo Nothing označuje, že funkce začne počítat na prvním řádku v nejkrajnější oblasti dat. Pokud chcete začít počítat v rámci vnořených oblastí dat, použijte název oblasti dat. Pokud chcete začít počítat v rámci skupiny, použijte název skupiny.

    =RowNumber(Nothing)  
    

Vzhled dat sestavy

Pomocí výrazů můžete manipulovat s tím, jak se data zobrazují v sestavě. Můžete například zobrazit hodnoty dvou polí v jednom textovém poli, zobrazit informace o sestavě nebo ovlivnit způsob vkládání konců stránek do sestavy.

Záhlaví a zápatí stránky

Při návrhu sestavy můžete v zápatí sestavy a čísla stránky zobrazit název sestavy a číslo stránky. K tomu můžete použít následující výrazy:

  • Následující výraz obsahuje název sestavy a čas spuštění. Dá se umístit do textového pole v zápatí sestavy nebo v textu sestavy. Čas je formátován řetězcem formátování rozhraní .NET Framework pro krátké datum:

    =Globals.ReportName & ", dated " & Format(Globals.ExecutionTime, "d")  
    
  • Následující výraz umístěný v textovém poli v zápatí sestavy poskytuje číslo stránky a celkový počet stránek v sestavě:

    =Globals.PageNumber & " of " & Globals.TotalPages  
    

Následující příklady popisují, jak zobrazit první a poslední hodnoty ze stránky v záhlaví stránky, podobně jako v seznamu adresářů. Příklad předpokládá oblast dat, která obsahuje textové pole s názvem LastName.

  • Následující výraz umístěný v textovém poli na levé straně záhlaví stránky poskytuje první hodnotu textového pole Příjmení na stránce:

    =First(ReportItems("LastName").Value)  
    
  • Následující výraz umístěný v textovém poli na pravé straně záhlaví stránky poskytuje poslední hodnotu textového pole LastName na stránce:

    =Last(ReportItems("LastName").Value)  
    

Následující příklad popisuje, jak zobrazit celkový součet stránky. Příklad předpokládá oblast dat, která obsahuje textové pole s názvem Náklady.

  • Následující výraz umístěný v záhlaví nebo zápatí stránky poskytuje součet hodnot v textovém poli Náklady na stránku:

    =Sum(ReportItems("Cost").Value)  
    

Poznámka:

V záhlaví nebo zápatí stránky můžete odkazovat pouze na jednu položku sestavy. Můžete také odkazovat na název textového pole, ale ne na skutečný datový výraz v textovém poli ve výrazech záhlaví a zápatí stránky.

Konce stránek

V některých sestavách můžete umístit konec stránky na konec zadaného počtu řádků místo skupin nebo položek sestavy nebo kromě nich. Vytvořte skupinu obsahující požadované skupiny nebo záznamy podrobností, přidejte do skupiny konec stránky a potom přidejte výraz skupiny, který se seskupí podle zadaného počtu řádků.

  • Následující výraz při umístění do výrazu skupiny přiřadí číslo každé sadě 25 řádků. Pokud je pro skupinu definovaný konec stránky, výsledkem tohoto výrazu je konec stránky každých 25 řádků.

    =Ceiling(RowNumber(Nothing)/25)  
    

    Pokud chcete uživateli umožnit nastavit hodnotu pro počet řádků na stránku, vytvořte parametr s názvem RowsPerPage a založte výraz skupiny na parametru, jak je znázorněno v následujícím výrazu:

    =Ceiling(RowNumber(Nothing)/Parameters!RowsPerPage.Value)  
    

Vlastnosti

Výrazy se nepoužívají jenom k zobrazení dat v textových polích. Lze je také použít ke změně způsobu použití vlastností u položek sestavy. Můžete změnit informace o stylu položky sestavy nebo změnit jeho viditelnost.

Formát

  • Následující výraz při použití ve vlastnosti Barva textového pole změní barvu textu v závislosti na hodnotě pole Zisk :

    =Iif(Fields!Profit.Value < 0, "Red", "Black")  
    

    Můžete také použít proměnnou objektu Jazyka Visual Basic Me. Tato proměnná představuje jiný způsob, jak odkazovat na hodnotu textového pole.

    =Iif(Me.Value < 0, "Red", "Black")

  • Následující výraz, pokud se používá ve vlastnosti BackgroundColor položky sestavy v oblasti dat, nahrazuje barvu pozadí každého řádku mezi bledě zelenou a bílou:

    =Iif(RowNumber(Nothing) Mod 2, "PaleGreen", "White")  
    

    Pokud používáte výraz pro zadaný obor, možná budete muset označit datovou sadu pro agregační funkci:

    =Iif(RowNumber("Employees") Mod 2, "PaleGreen", "White")  
    

Poznámka:

Dostupné barvy pocházejí z výčtu .NET Framework KnownColor.

Barvy grafu

Pokud chcete určit barvy pro obrazec grafu, můžete pomocí vlastního kódu řídit pořadí, ve kterém jsou barvy mapovány na hodnoty datových bodů. To vám pomůže používat konzistentní barvy pro více grafů se stejnými skupinami kategorií.

Viditelnost

Položky v sestavě můžete zobrazit a skrýt pomocí vlastností viditelnosti položky sestavy. V oblasti dat, jako je tabulka, můžete zpočátku skrýt řádky podrobností na základě hodnoty ve výrazu.

  • Následující výraz, při použití pro počáteční viditelnost řádků podrobností ve skupině, zobrazuje řádky podrobností pro všechny prodeje přesahující 90 procent v poli PctQuota :

    =IIF(Fields!PctQuota.Value>.9, False, True)  
    
  • Následující výraz, pokud je nastavena ve skryté vlastnosti tabulky, zobrazí tabulku pouze v případě, že má více než 12 řádků:

    =IIF(CountRows()>12,false,true)  
    
  • Následující výraz, pokud je nastavena ve skryté vlastnosti sloupce, zobrazí sloupec pouze v případě, že pole v datové sadě sestavy po načtení dat ze zdroje dat:

    =IIF(Fields!Column_1.IsMissing, true, false)  
    

Adresy URL můžete přizpůsobit pomocí dat sestavy a také podmíněně řídit, jestli se adresy URL přidají jako akce pro textové pole.

  • Následující výraz, pokud se použije jako akce u textového pole, vygeneruje přizpůsobenou adresu URL, která určuje pole datové sady EmployeeID jako parametr adresy URL.

    ="https://adventure-works/MyInfo?ID=" & Fields!EmployeeID.Value  
    
  • Následující výraz podmíněně určuje, jestli se má přidat adresa URL do textového pole. Tento výraz závisí na parametru s názvem IncludeURLs , který uživateli umožňuje rozhodnout, jestli má do sestavy zahrnout aktivní adresy URL. Tento výraz se nastaví jako akce u textového pole. Nastavením parametru False a následným zobrazením sestavy můžete sestavu exportovat do Microsoft Excelu bez hypertextových odkazů.

    =IIF(Parameters!IncludeURLs.Value,"https://adventure-works.com/productcatalog",Nothing)  
    

Poznámka:

Stránkované sestavy Power BI nepodporují použití JavaScriptu ve výrazu Přejít na adresu URL .

Data sestavy

Výrazy lze použít k manipulaci s daty, která se používají v sestavě. Můžete odkazovat na parametry a další informace o sestavě. Můžete dokonce změnit dotaz, který se používá k načtení dat pro sestavu.

Parametry

Pomocí výrazů v parametru můžete měnit výchozí hodnotu parametru. Pomocí parametru můžete například filtrovat data konkrétnímu uživateli na základě ID uživatele, které se používá ke spuštění sestavy.

  • Následující výraz, pokud se použije jako výchozí hodnota parametru, shromáždí ID uživatele osoby, která sestavu spouští:

    =User!UserID  
    
  • Pokud chcete odkazovat na parametr v parametru dotazu, výrazu filtru, textovém poli nebo jiné oblasti sestavy, použijte globální kolekci Parametry . Tento příklad předpokládá, že parametr má název Oddělení:

    =Parameters!Department.Value  
    
  • Parametry lze vytvořit v sestavě, ale nastavit na skryté. Když se sestava spustí na serveru sestav, parametr se na panelu nástrojů nezobrazí a čtenář sestavy nemůže změnit výchozí hodnotu. Můžete použít skrytý parametr nastavený na výchozí hodnotu vlastní konstanty. Tuto hodnotu můžete použít v libovolném výrazu, včetně výrazu pole. Následující výraz identifikuje pole určené výchozí hodnotou parametru parametru s názvem ParameterField:

    =Fields(Parameters!ParameterField.Value).Value  
    

Vlastní kód

Můžete použít vlastní kód vložený do sestavy.

Použití proměnných skupin pro vlastní agregaci

Hodnotu proměnné skupiny, která je místní pro určitý obor skupiny, můžete inicializovat a pak do výrazů zahrnout odkaz na tuto proměnnou. Jedním ze způsobů, jak můžete použít proměnnou skupiny s vlastním kódem, je implementovat vlastní agregaci.

Potlačení hodnot null nebo nulových hodnot za běhu

Některé hodnoty ve výrazu se můžou vyhodnotit jako null nebo nedefinované v době zpracování sestavy. To může způsobit chyby za běhu, které vedou k zobrazení #Error v textovém poli místo vyhodnoceného výrazu. Funkce IIF je zvlášť citlivá na toto chování, protože na rozdíl od příkazu If-Then-Else se každá část příkazu IIF vyhodnotí (včetně volání funkce) před předáním rutině, která testuje hodnotu true nebo false. =IIF(Fields!Sales.Value is NOTHING, 0, Fields!Sales.Value) Příkaz vygeneruje #Error v vykreslené sestavě if Fields! Sales.Value není NIC.

Pokud se chcete této podmínce vyhnout, použijte jednu z následujících strategií:

  • Nastavte čitatel na hodnotu 0 a jmenovatel na hodnotu 1, pokud je hodnota pole B 0 nebo nedefinovaná; v opačném případě nastavte čitatel na hodnotu pole A a jmenovatel na hodnotu pole B.

    =IIF(Field!B.Value=0, 0, Field!A.Value / IIF(Field!B.Value =0, 1, Field!B.Value))  
    
  • K vrácení hodnoty výrazu použijte funkci vlastního kódu. Následující příklad vrátí procentuální rozdíl mezi aktuální a předchozí hodnotou. To se dá použít k výpočtu rozdílu mezi dvěma po sobě jdoucími hodnotami a zpracovává hraniční případ prvního porovnání (pokud neexistuje žádná předchozí hodnota) a případy, kdy předchozí hodnota nebo aktuální hodnota je null (Nothing v jazyce Visual Basic).

    Public Function GetDeltaPercentage(ByVal PreviousValue, ByVal CurrentValue) As Object  
        If IsNothing(PreviousValue) OR IsNothing(CurrentValue) Then  
            Return Nothing  
        Else if PreviousValue = 0 OR CurrentValue = 0 Then  
            Return Nothing  
        Else   
            Return (CurrentValue - PreviousValue) / CurrentValue  
        End If  
    End Function  
    

    Následující výraz ukazuje, jak volat tento vlastní kód z textového pole pro kontejner ColumnGroupByYear (skupina nebo oblast dat).

    =Code.GetDeltaPercentage(Previous(Sum(Fields!Sales.Value),"ColumnGroupByYear"), Sum(Fields!Sales.Value))  
    

    Tento kód pomáhá vyhnout se výjimkám za běhu. Teď můžete použít výraz jako =IIF(Me.Value < 0, "red", "black") ve vlastnosti Barva textového pole k podmíněnému zobrazení textu na základě toho, jestli jsou hodnoty větší nebo menší než 0.

Další kroky