Vlastní kód ve výrazech ve stránkované sestavě v Power BI Tvůrce sestav
PLATÍ PRO: Power BI Tvůrce sestav
Power BI Desktopu
Do sestavy můžete přidat vlastní kód vložený. Vložený kód použijte pro vlastní konstanty, komplexní funkce nebo funkce, které se v jedné sestavě používají vícekrát. Vlastní kód může obsahovat nové vlastní konstanty, proměnné, funkce nebo podprogramy. Můžete zahrnout odkazy jen pro čtení na předdefinované kolekce, jako je například kolekce Parameters. Nelze však předat sady hodnot dat sestavy vlastním funkcím; konkrétně vlastní agregace nejsou podporovány.
Poznámka:
Vlastní sestavení nejsou ve stránkovaných sestavách v Power BI podporována. Zvažte převod logiky z vlastního sestavení na vložený kód. Příklady alternativ, které je potřeba vzít v úvahu, zkontrolujte alternativy sestavení.
Důležité
U výpočtů citlivých na čas, které se vyhodnocují jednou za běhu a které chcete v průběhu zpracování sestavy zachovat stejnou hodnotu, zvažte, jestli se má použít proměnná sestavy nebo proměnná skupiny. Další informace najdete v tématu Odkazy na kolekce proměnných sestav a skupin (Tvůrce sestav Power BI).
Zahrnout odkazy na běžně používané funkce
Pomocí dialogového okna Výraz zobrazíte seznam společných funkcí integrovaných pro Tvůrce sestav. Když rozbalíte běžné funkce a vyberete kategorii, zobrazí se v podokně Položka seznam funkcí, které do výrazu zahrnete. Mezi běžné funkce patří třídy z rozhraní .NET Framework Math a Convert oborů názvů a funkcí knihovny runtime jazyka Visual Basic. Pro usnadnění můžete zobrazit nejčastěji používané funkce v dialogovém okně Výraz , kde jsou uvedeny podle kategorie: Text, Datum a čas, Matematika, Kontrola, Tok programu, Agregace, Finanční, Převod a Různé. Méně často používané funkce se v seznamu nezobrazují, ale dají se stále použít ve výrazu.
Pokud chcete použít integrovanou funkci, poklikejte na název funkce v podokně Položka. Popis funkce se zobrazí v podokně Popis a v podokně Příklad se zobrazí příklad volání funkce. Když v podokně kódu zadáte název funkce následovaný levou závorkou (nápověda IntelliSense zobrazí každou platnou syntaxi volání funkce. Pokud chcete například vypočítat maximální hodnotu pole pojmenovaného Quantity
v tabulce, přidejte do podokna Kód jednoduchý výraz =Max(
a pomocí inteligentních značek zobrazte všechny možné platné syntaxe volání funkce. Chcete-li dokončit tento příklad, zadejte =Max(Fields!Quantity.Value)
.
Další informace o jednotlivých funkcích naleznete v tématu Math, Converta Visual Basic Runtime Library Členy na MSDN.
Zahrnout odkazy na méně často používané funkce
Chcete-li zahrnout odkaz na jiné méně často používané obory názvů CLR, musíte použít plně kvalifikovaný odkaz, StringBuildernapříklad . IntelliSense není podporován v podokně kódu dialogového okna Výraz pro tyto méně běžně používané funkce.
Další informace naleznete v tématu Visual Basic Runtime Library Members on MSDN.
Zahrnout vložený kód
Pokud chcete do sestavy přidat vložený kód, použijte kartu Kód v dialogovém okně Vlastnosti sestavy. Blok kódu, který vytvoříte, může obsahovat více metod. Metody ve vloženém kódu musí být napsané v jazyce Microsoft Visual Basic a musí být založené na instancích. Procesor sestavy automaticky přidá odkazy na obory názvů System.Convert a System.Math.
Metody ve vloženém kódu jsou k dispozici prostřednictvím globálně definovaného člena kódu . K těmto přístupům se dostanete odkazem na člena kódu a na název metody. Následující příklad volá metodu ToUSD, která převede hodnotu v StandardCost
poli na hodnotu dolaru:
=Code.ToUSD(Fields!StandardCost.Value)
Pokud chcete odkazovat na předdefinované kolekce ve vlastním kódu, uveďte odkaz na předdefinovaný objekt sestavy :
=Report.Parameters!Param1.Value
Následující příklady ukazují, jak definovat některé vlastní konstanty a proměnné.
Public Const MyNote = "Authored by Bob"
Public Const NCopies As Int32 = 2
Public Dim MyVersion As String = "123.456"
Public Dim MyDoubleVersion As Double = 123.456
I když se vlastní konstanty nezobrazují v kategorii Konstanty v dialogovém okně Výraz (který zobrazuje jenom předdefinované konstanty), můžete k nim přidat odkazy z libovolného výrazu, jak je znázorněno v následujících příkladech. Ve výrazu se vlastní konstanta považuje za variantu.
=Code.MyNote
=Code.NCopies
=Code.MyVersion
=Code.MyDoubleVersion
Následující příklad obsahuje odkaz na kód i implementaci kódu funkce FixSpelling, která nahradí text "Bicycle"
pro všechny výskyty textu "Bike" v SubCategory
poli.
=Code.FixSpelling(Fields!SubCategory.Value)
Následující kód, když je vložen do bloku kódu definice sestavy, ukazuje implementaci FixSpelling metody. Tento příklad ukazuje, jak použít plně kvalifikovaný odkaz na třídu Microsoft .NET Framework StringBuilder .
Public Function FixSpelling(ByVal s As String) As String
Dim strBuilder As New System.Text.StringBuilder(s)
If s.Contains("Bike") Then
strBuilder.Replace("Bike", "Bicycle")
Return strBuilder.ToString()
Else : Return s
End If
End Function
Další informace o předdefinovaných kolekcích objektů najdete v tématu Předdefinované globální odkazy a odkazy uživatelů (Tvůrce sestav Power BI).
Zahrnout odkazy na parametry z kódu
Globální kolekci parametrů můžete odkazovat prostřednictvím vlastního kódu v bloku kódu definice sestavy. Kolekce parametrů je jen pro čtení a nemá žádné veřejné iterátory. K procházení kolekce nelze použít konstruktor jazyka Visual Basic for Each . Před odkazem na parametr v kódu potřebujete znát název parametru definovaného v definici sestavy. Můžete ale iterovat všechny hodnoty parametru s více hodnotami.
Následující tabulka obsahuje příklady odkazování na integrovanou kolekci Parameters
z vlastního kódu:
Předání celé globální kolekce parametrů vlastnímu kódu
Tato funkce vrátí hodnotu konkrétního parametru sestavy MyParameter.
Odkaz ve výrazu =Code.DisplayAParameterValue(Parameters)
Definice vlastního kódu
Public Function DisplayAParameterValue(ByVal parameters as Parameters) as Object
Return parameters("MyParameter").Value
End Function
Předání jednotlivého parametru vlastnímu kódu
Odkaz ve výrazu =Code.ShowParametersValues(Parameters!DayOfTheWeek)
Tento příklad vrátí hodnotu předaného parametru. Pokud je parametr vícehodnotovým parametrem, návratový řetězec je zřetězení všech hodnot.
Definice vlastního kódu
Public Function ShowParameterValues(ByVal parameter as Parameter)
as String
Dim s as String
If parameter.IsMultiValue then
s = "Multivalue: "
For i as integer = 0 to parameter.Count-1
s = s + CStr(parameter.Value(i)) + " "
Next
Else
s = "Single value: " + CStr(parameter.Value)
End If
Return s
End Function