Dela via


Anpassad kod i uttryck i en sidnumrerad rapport i Power BI Report Builder

GÄLLER FÖR: Power BI Report Builder Power BI Desktop

Du kan lägga till anpassad kod inbäddad i en rapport. Använd inbäddad kod för anpassade konstanter, komplexa funktioner eller funktioner som används flera gånger i en enda rapport. Anpassad kod kan innehålla nya anpassade konstanter, variabler, funktioner eller subrutiner. Du kan inkludera skrivskyddade referenser till inbyggda samlingar, till exempel samlingen Parametrar. Du kan dock inte skicka uppsättningar med rapportdatavärden till anpassade funktioner. mer specifikt stöds inte anpassade aggregeringar.

Kommentar

Anpassade sammansättningar stöds inte i sidnumrerade rapporter i Power BI. Överväg att konvertera logik från anpassad sammansättning till inbäddad kod. Exempel på alternativ att överväga finns i sammansättningsalternativ.

Viktigt!

För tidskänsliga beräkningar som utvärderas en gång vid körning och som du vill behålla samma värde under rapportbearbetningen bör du överväga om du vill använda en rapportvariabel eller gruppvariabel. Mer information finns i Referenser till samlingar för rapport- och gruppvariabler (Power BI Report Builder).

Inkludera referenser till vanliga funktioner

Använd dialogrutan Uttryck för att visa en kategoriserad lista över vanliga funktioner som är inbyggda i Report Builder. När du expanderar Common Functions och väljer en kategori visar fönstret Objekt listan över funktioner som du tar med i ett uttryck. De vanliga funktionerna omfattar klasser från .NET Framework Math och Convert namnrymder och Visual Basic-körningsbiblioteksfunktioner. För enkelhetens skull kan du visa de vanligaste funktionerna i dialogrutan Uttryck , där de visas efter kategori: Text, datum och tid, matematik, inspektion, programflöde, aggregering, ekonomi, konvertering och diverse. Mindre vanliga funktioner visas inte i listan men kan fortfarande användas i ett uttryck.

Om du vill använda en inbyggd funktion dubbelklickar du på funktionsnamnet i fönstret Objekt. En beskrivning av funktionen visas i fönstret Beskrivning och ett exempel på funktionsanropet visas i fönstret Exempel. När du skriver funktionsnamnet följt av en vänster parentes i kodfönstret (visas varje giltig syntax för funktionsanropet i IntelliSense-hjälpen. Om du till exempel vill beräkna det maximala värdet för ett fält med namnet Quantity i en tabell lägger du till det enkla uttrycket =Max( i fönstret Kod och använder sedan de smarta taggarna för att visa alla möjliga giltiga syntaxer för funktionsanropet. Fyll i det här exemplet genom att skriva =Max(Fields!Quantity.Value).

Mer information om varje funktion finns i Math, Convertoch Visual Basic Runtime Library Members på MSDN.

Inkludera referenser till mindre vanliga funktioner

Om du vill inkludera en referens till andra mindre vanliga CLR-namnområden måste du använda en fullständigt kvalificerad referens, till exempel StringBuilder. IntelliSense stöds inte i kodfönstret i dialogrutan Uttryck för dessa mindre vanliga funktioner.

Mer information finns i Visual Basic Runtime Library Members på MSDN.

Inkludera inbäddad kod

Om du vill lägga till inbäddad kod i en rapport använder du fliken Kod i dialogrutan Rapportegenskaper . Kodblocket som du skapar kan innehålla flera metoder. Metoder i inbäddad kod måste skrivas i Microsoft Visual Basic och måste vara instansbaserade. Rapportprocessorn lägger automatiskt till referenser för namnrymderna System.Convert och System.Math.

Metoder i inbäddad kod är tillgängliga via en globalt definierad kodmedlem . Du kommer åt dessa genom att referera till kodmedlemmen och metodnamnet. I följande exempel anropas metoden ToUSD, som konverterar värdet i StandardCost fältet till ett dollarvärde:

=Code.ToUSD(Fields!StandardCost.Value)

Om du vill referera till inbyggda samlingar i din anpassade kod inkluderar du en referens till det inbyggda rapportobjektet :

=Report.Parameters!Param1.Value

I följande exempel visas hur du definierar vissa anpassade konstanter och 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

Även om anpassade konstanter inte visas i kategorin Konstanter i dialogrutan Uttryck (som endast visar inbyggda konstanter), kan du lägga till referenser till dem från alla uttryck, som du ser i följande exempel. I ett uttryck behandlas en anpassad konstant som en variant.

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

I följande exempel ingår både kodreferensen och kodimplementeringen av funktionen FixSpelling, som ersätter texten "Bicycle" med alla förekomster av texten "Bike" i SubCategory fältet.

=Code.FixSpelling(Fields!SubCategory.Value)

Följande kod, när den bäddas in i ett kodblock för rapportdefinition, visar en implementering av metoden FixSpelling . Det här exemplet visar hur du använder en fullständigt kvalificerad referens till klassen 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

Mer information om inbyggda objektsamlingar finns i Inbyggda globaler och användarreferenser (Power BI Report Builder).

Inkludera referenser till parametrar från kod

Du kan referera till samlingen globala parametrar via anpassad kod i ett kodblock i rapportdefinitionen. Parametersamlingen är skrivskyddad och har inga offentliga iteratorer. Du kan inte använda en Visual Basic For Each-konstruktion för att gå igenom samlingen. Du måste känna till namnet på parametern som definierats i rapportdefinitionen innan du kan referera till den i koden. Du kan dock iterera genom alla värden för en parameter med flera värden.

Följande tabell innehåller exempel på hur du refererar till den inbyggda samlingen Parameters från anpassad kod:

Skickar en hel global parametersamling till anpassad kod.

Den här funktionen returnerar värdet för en specifik rapportparameter MyParameter.

Referens i uttryck =Code.DisplayAParameterValue(Parameters)

Definition av anpassad kod

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

Skickar en enskild parameter till anpassad kod.

Referens i uttryck =Code.ShowParametersValues(Parameters!DayOfTheWeek)

Det här exemplet returnerar värdet för parametern som skickades in. Om parametern är en parameter med flera värden är retursträngen en sammanlänkning av alla värden.

Definition av anpassad kod

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

Nästa steg