Del via


Egendefinert kode i uttrykk i en paginert rapport i Power BI Report Builder

GJELDER FOR: Power BI Report Builder Power BI Desktop

Du kan legge til egendefinert kode som er innebygd i en rapport. Bruk innebygd kode for egendefinerte konstanter, komplekse funksjoner eller funksjoner som brukes flere ganger i én enkelt rapport. Egendefinert kode kan inneholde nye egendefinerte konstanter, variabler, funksjoner eller underroutiner. Du kan inkludere skrivebeskyttede referanser til innebygde samlinger, for eksempel Parametere-samlingen. Du kan imidlertid ikke sende sett med rapportdataverdier til egendefinerte funksjoner. egendefinerte aggregater støttes ikke.

Notat

Egendefinerte samlinger støttes ikke i paginerte rapporter i Power BI. Vurder å konvertere logikk fra egendefinert samling til innebygd kode. Hvis du vil se eksempler på alternativer du bør vurdere, kan du kontrollere samlingsalternativer.

Viktig

Vurder om du vil bruke en rapportvariabel eller gruppevariabel for tidssensitive beregninger som evalueres én gang ved kjøring, og at du vil forbli den samme verdien gjennom hele rapportbehandlingen. Hvis du vil ha mer informasjon, kan du se Referanser for samlinger for rapport- og gruppevariabler (Power BI Report Builder).

Inkluder referanser til vanlige funksjoner

Bruk dialogboksen Uttrykk til å vise en kategorisert liste over vanlige funksjoner som er innebygd i Report Builder. Når du utvider Common Functions og velger en kategori, viser Element-ruten listen over funksjoner som du inkluderer i et uttrykk. De vanlige funksjonene omfatter klasser fra .NET Framework Math og Convert navneområder og Visual Basic kjøretidsbibliotekfunksjoner. For enkelhets skyld kan du vise de mest brukte funksjonene i dialogboksen Uttrykk , der de er oppført etter kategori: Tekst, Dato og klokkeslett, Matematikk, Inspeksjon, Programflyt, Aggreger, Økonomi, Konvertering og Diverse. Mindre vanlige funksjoner vises ikke i listen, men kan fortsatt brukes i et uttrykk.

Hvis du vil bruke en innebygd funksjon, dobbeltklikker du funksjonsnavnet i Element-ruten. En beskrivelse av funksjonen vises i beskrivelsesruten, og et eksempel på funksjonskallet vises i Eksempel-ruten. I koderuten, når du skriver inn funksjonsnavnet etterfulgt av en venstre parentes (intelliSense-hjelpen viser hver gyldige syntaks for funksjonskallet. Hvis du for eksempel vil beregne maksimumsverdien for et felt som er navngitt Quantity i en tabell, legger du til det enkle uttrykket =Max( i koderuten, og deretter bruker du smartflaggene til å vise alle mulige gyldige syntakser for funksjonskallet. Hvis du vil fullføre dette eksemplet, skriver du inn =Max(Fields!Quantity.Value).

Hvis du vil ha mer informasjon om hver funksjon, kan du se Math, Convertog Medlemmer av Visual Basic Runtime Library på MSDN.

Inkluder referanser til mindre vanlige funksjoner

Hvis du vil inkludere en referanse til andre mindre vanlige CLR-navneområder, må du for eksempel StringBuilderbruke en fullstendig referanse. IntelliSense støttes ikke i koderuten i dialogboksen Uttrykk for disse mindre vanlige funksjonene.

Hvis du vil ha mer informasjon, kan du se Visual Basic Runtime Library Members på MSDN.

Inkluder innebygd kode

Hvis du vil legge til innebygd kode i en rapport, bruker du kodefanen i dialogboksen Egenskaper for rapport. Kodeblokken du oppretter, kan inneholde flere metoder. Metoder i innebygd kode må skrives i Microsoft Visual Basic og må være forekomstbasert. Rapportbehandleren legger automatisk til referanser for system.konverter og system.matematiske navneområder.

Metoder i innebygd kode er tilgjengelige gjennom et globalt definert kodemedlem . Du får tilgang til disse ved å referere til kodemedlemmet og metodenavnet. Følgende eksempel kaller metoden ToUSD, som konverterer verdien i StandardCost feltet til en dollarverdi:

=Code.ToUSD(Fields!StandardCost.Value)

Hvis du vil referere til innebygde samlinger i den egendefinerte koden, kan du inkludere en referanse til det innebygde rapportobjektet :

=Report.Parameters!Param1.Value

Eksemplene nedenfor viser hvordan du definerer noen egendefinerte 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

Selv om egendefinerte konstanter ikke vises i kategorien Konstanter i dialogboksen Uttrykk (som bare viser innebygde konstanter), kan du legge til referanser til dem fra et hvilket som helst uttrykk, som vist i eksemplene nedenfor. I et uttrykk behandles en egendefinert konstant som en variant.

=Code.MyNote
=Code.NCopies
=Code.MyVersion
=Code.MyDoubleVersion

Følgende eksempel inkluderer både kodereferansen og kodeimplementeringen av funksjonen FixSpelling, som erstatter teksten "Bicycle" for alle forekomster av teksten «Sykkel» i SubCategory feltet.

=Code.FixSpelling(Fields!SubCategory.Value)

Følgende kode, når den er innebygd i en rapportdefinisjonskodeblokk, viser en implementering av FixSpelling-metoden . Dette eksemplet viser deg hvordan du bruker en fullstendig referanse til Microsoft .NET Framework StringBuilder-klassen .

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

Hvis du vil ha mer informasjon om innebygde objektsamlinger, kan du se Innebygde globale og brukerreferanser (Power BI Report Builder).

Inkluder referanser til parametere fra kode

Du kan referere til den globale parametersamlingen via egendefinert kode i en kodeblokk i rapportdefinisjonen. Parametersamlingen er skrivebeskyttet og har ingen offentlige gjentakelser. Du kan ikke bruke en Visual Basic For Each-konstruksjon til å gå gjennom samlingen. Du må vite navnet på parameteren som er definert i rapportdefinisjonen, før du kan referere til den i koden. Du kan imidlertid gå gjennom alle verdiene i en flerverdiparameter.

Tabellen nedenfor inneholder eksempler på referanse til den innebygde samlingen Parameters fra egendefinert kode:

Sender en hel global parametersamling til egendefinert kode.

Denne funksjonen returnerer verdien for en bestemt rapportparameter MyParameter.

Referanse i uttrykk =Code.DisplayAParameterValue(Parameters)

Definisjon av egendefinert kode

Public Function DisplayAParameterValue(ByVal parameters as Parameters) as Object
Return parameters("MyParameter").Value
End Function

Sender en individuell parameter til egendefinert kode.

Referanse i uttrykk =Code.ShowParametersValues(Parameters!DayOfTheWeek)

Dette eksemplet returnerer verdien for parameteren som ble sendt inn. Hvis parameteren er en parameter med flere verdier, er returstrengen en sammenkobling av alle verdiene.

Definisjon av egendefinert kode

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

Neste trinn