Brugerdefineret kode i udtryk i en sideinddelt rapport i Power BI Report Builder
GÆLDER FOR: Power BI Report Builder Power BI Desktop
Du kan tilføje brugerdefineret kode, der er integreret i en rapport. Brug integreret kode til brugerdefinerede konstanter, komplekse funktioner eller funktioner, der bruges flere gange i en enkelt rapport. Brugerdefineret kode kan omfatte nye brugerdefinerede konstanter, variabler, funktioner eller subrutines. Du kan inkludere skrivebeskyttede referencer til indbyggede samlinger, f.eks. samlingen Parametre. Du kan dog ikke overføre sæt af rapportdataværdier til brugerdefinerede funktioner. Brugerdefinerede aggregeringer understøttes ikke.
Bemærk
Brugerdefinerede assemblies understøttes ikke i sideinddelte rapporter i Power BI. Overvej at konvertere logik fra brugerdefineret assembly til integreret kode. Du kan se eksempler på alternativer, du kan overveje, ved at se assemblyalternativer.
Vigtigt
I forbindelse med tidsfølsomme beregninger, der evalueres én gang på kørselstidspunktet, og som du vil bevare den samme værdi i hele rapportbehandlingen, skal du overveje, om du vil bruge en rapportvariabel eller en gruppevariabel. Du kan få flere oplysninger under Samlinger af samlinger af rapport- og gruppevariabler (Power BI Report Builder).
Medtag referencer til ofte anvendte funktioner
Brug dialogboksen Udtryk til at få vist en kategoriseret liste over almindelige funktioner, der er indbygget i Report Builder. Når du udvider Common Functions og vælger en kategori, viser ruden Element listen over funktioner, som du medtager i et udtryk. De almindelige funktioner omfatter klasser fra biblioteksfunktionerne Microsoft .NET Framework Math og Convert navneområder og Visual Basic-kørselsbiblioteker. For nemheds skyld kan du få vist de mest anvendte funktioner i dialogboksen Udtryk , hvor de er angivet efter kategori: Tekst, Dato og klokkeslæt, Matematik, Inspektion, Programflow, Aggregering, Økonomi, Konvertering og Diverse. Mindre almindeligt anvendte funktioner vises ikke på listen, men kan stadig bruges i et udtryk.
Hvis du vil bruge en indbygget funktion, skal du dobbeltklikke på funktionsnavnet i ruden Element. Der vises en beskrivelse af funktionen i ruden Beskrivelse, og der vises et eksempel på funktionskaldet i ruden Eksempel. Når du skriver funktionsnavnet efterfulgt af en venstreparentes i koderuden (vises hver gyldig syntaks for funktionskaldet i IntelliSense Hjælp. Hvis du f.eks. vil beregne den maksimale værdi for et felt, der er navngivet Quantity
i en tabel, skal du føje det enkle udtryk =Max(
til ruden Kode og derefter bruge i-mærkerne til at få vist alle mulige gyldige syntakser for funktionskaldet. Skriv for at fuldføre dette eksempel =Max(Fields!Quantity.Value)
.
Du kan få flere oplysninger om hver funktion under Math, Convertog Medlemmer af Visual Basic Runtime Library på MSDN.
Medtag referencer til mindre almindeligt anvendte funktioner
Hvis du vil inkludere en reference til andre mindre almindeligt anvendte CLR-navneområder, skal du bruge en fuldt kvalificeret reference, StringBuilderf.eks. . IntelliSense understøttes ikke i koderuden i dialogboksen Udtryk for disse mindre anvendte funktioner.
Du kan få flere oplysninger under Medlemmer af Visual Basic Runtime Library på MSDN.
Medtag integreret kode
Hvis du vil føje integreret kode til en rapport, skal du bruge fanen Kode i dialogboksen Rapportegenskaber . Den kodeblok, du opretter, kan indeholde flere metoder. Metoder i integreret kode skal skrives i Microsoft Visual Basic og skal være forekomstbaserede. Rapportbehandleren tilføjer automatisk referencer til navneområderne System.Convert og System.Math.
Metoder i integreret kode er tilgængelige via et globalt defineret kodemedlem . Du kan få adgang til disse ved at referere til kodemedlemmet og metodenavnet. I følgende eksempel kaldes metoden ToUSD, som konverterer værdien i feltet StandardCost
til en dollarværdi:
=Code.ToUSD(Fields!StandardCost.Value)
Hvis du vil referere til indbyggede samlinger i din brugerdefinerede kode, skal du inkludere en reference til det indbyggede rapportobjekt :
=Report.Parameters!Param1.Value
I følgende eksempler kan du se, hvordan du definerer nogle brugerdefinerede konstanter og variabler.
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
Selvom brugerdefinerede konstanter ikke vises i kategorien Konstanter i dialogboksen Udtryk (som kun viser indbyggede konstanter), kan du føje referencer til dem fra et hvilket som helst udtryk, som vist i følgende eksempler. I et udtryk behandles en brugerdefineret konstant som en variant.
=Code.MyNote
=Code.NCopies
=Code.MyVersion
=Code.MyDoubleVersion
Følgende eksempel indeholder både kodereferencen og kodeimplementeringen af funktionen FixSpelling, som erstatter teksten "Bicycle"
for alle forekomster af teksten "Bike" i feltet SubCategory
.
=Code.FixSpelling(Fields!SubCategory.Value)
Når følgende kode er integreret i en kodeblok til rapportdefinition, vises en implementering af fixSpelling-metoden . I dette eksempel kan du se, hvordan du bruger en fuldt kvalificeret reference til Klassen Microsoft 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
Du kan få flere oplysninger om indbyggede objektsamlinger under Indbyggede globale og brugerreferencer (Power BI Report Builder).
Medtag referencer til parametre fra kode
Du kan referere til samlingen af globale parametre via brugerdefineret kode i en kodeblok i rapportdefinitionen. Parametersamlingen er skrivebeskyttet og har ingen offentlige iteratorer. Du kan ikke bruge en Visual Basic for Each-konstruktion til at gennemgå samlingen. Du skal kende navnet på den parameter, der er defineret i rapportdefinitionen, før du kan referere til den i din kode. Du kan dog gentage alle værdierne i en parameter med flere værdier.
Følgende tabel indeholder eksempler på, hvordan du refererer til den indbyggede samling Parameters
fra brugerdefineret kode:
Overførsel af en hel global parametersamling til brugerdefineret kode.
Denne funktion returnerer værdien af en bestemt rapportparameter MyParameter.
Reference i udtryk =Code.DisplayAParameterValue(Parameters)
Brugerdefineret kodedefinition
Public Function DisplayAParameterValue(ByVal parameters as Parameters) as Object
Return parameters("MyParameter").Value
End Function
Overførsel af en individuel parameter til brugerdefineret kode.
Reference i udtryk =Code.ShowParametersValues(Parameters!DayOfTheWeek)
I dette eksempel returneres værdien af den parameter, der er overført. Hvis parameteren er en parameter med flere værdier, er returstrengen en sammenkædning af alle værdierne.
Brugerdefineret kodedefinition
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