Udostępnij za pośrednictwem


Kod niestandardowy w wyrażeniach w raporcie podzielonym na strony w programie Power BI Report Builder

DOTYCZY: Power BI Report Builder Power BI Desktop

Możesz dodać niestandardowy kod osadzony w raporcie. Użyj osadzonego kodu dla stałych niestandardowych, złożonych funkcji lub funkcji, które są używane wiele razy w jednym raporcie. Kod niestandardowy może zawierać nowe niestandardowe stałe, zmienne, funkcje lub podrouty. Odwołania tylko do odczytu można dołączać do wbudowanych kolekcji, takich jak kolekcja Parameters. Nie można jednak przekazywać zestawów wartości danych raportu do funkcji niestandardowych; w szczególności niestandardowe agregacje nie są obsługiwane.

Uwaga

Zestawy niestandardowe nie są obsługiwane w raportach podzielonych na strony w usłudze Power BI. Rozważ przekonwertowanie logiki z zestawu niestandardowego na osadzony kod. Aby zapoznać się z przykładami alternatyw do rozważenia, sprawdź alternatywy zestawów.

Ważne

W przypadku obliczeń wrażliwych na czas, które są oceniane raz w czasie wykonywania i które chcesz zachować tę samą wartość w całym przetwarzaniu raportów, należy rozważyć, czy należy użyć zmiennej raportu, czy zmiennej grupy. Aby uzyskać więcej informacji, zobacz Report and Group Variables Collections References (Power BI Report Builder).

Dołączanie odwołań do powszechnie używanych funkcji

Okno dialogowe Wyrażenie umożliwia wyświetlenie listy typowych funkcji wbudowanych w program Report Builder. Po rozwinięciu pozycji Common Functions i wybraniu kategorii w okienku Element zostanie wyświetlona lista funkcji uwzględninych w wyrażeniu. Typowe funkcje obejmują klasy z platformy .NET Framework Math i Convert przestrzeni nazw oraz funkcji biblioteki czasu wykonywania języka Visual Basic. Dla wygody można wyświetlić najczęściej używane funkcje w oknie dialogowym Wyrażenie , gdzie są one wymienione według kategorii: Tekst, Data i godzina, Matematyka, Inspekcja, Przepływ programu, Agregacja, Finanse, Konwersja i Różne. Rzadziej używane funkcje nie są wyświetlane na liście, ale nadal mogą być używane w wyrażeniu.

Aby użyć wbudowanej funkcji, kliknij dwukrotnie nazwę funkcji w okienku Element. Opis funkcji zostanie wyświetlony w okienku Opis, a przykład wywołania funkcji zostanie wyświetlony w okienku Przykład. W okienku kodu podczas wpisywania nazwy funkcji, po której następuje lewy nawias (pomoc funkcji IntelliSense wyświetla każdą prawidłową składnię wywołania funkcji. Aby na przykład obliczyć maksymalną wartość pola o nazwie Quantity w tabeli, dodaj proste wyrażenie =Max( do okienka Kod, a następnie użyj tagów inteligentnych, aby wyświetlić wszystkie możliwe prawidłowe składnie wywołania funkcji. Aby ukończyć ten przykład, wpisz =Max(Fields!Quantity.Value).

Aby uzyskać więcej informacji na temat każdej funkcji, zobacz MathConvert, i elementy członkowskie biblioteki środowiska uruchomieniowego Visual Basic w witrynie MSDN.

Dołączanie odwołań do rzadziej używanych funkcji

Aby uwzględnić odwołanie do innych rzadziej używanych przestrzeni nazw CLR, należy użyć w pełni kwalifikowanego odwołania, na przykład StringBuilder. Funkcja IntelliSense nie jest obsługiwana w okienku kodu okna dialogowego Wyrażenie dla tych rzadziej używanych funkcji.

Aby uzyskać więcej informacji, zobacz Elementy członkowskie biblioteki środowiska uruchomieniowego Visual Basic w witrynie MSDN.

Uwzględnij osadzony kod

Aby dodać osadzony kod do raportu, użyj karty Kod okna dialogowego Właściwości raportu. Utworzony blok kodu może zawierać wiele metod. Metody w kodzie osadzonym muszą być napisane w języku Microsoft Visual Basic i muszą być oparte na wystąpieniach. Procesor raportów automatycznie dodaje odwołania do przestrzeni nazw System.Convert i System.Math.

Metody w kodzie osadzonym są dostępne za pośrednictwem globalnie zdefiniowanego elementu członkowskiego kodu . Uzyskujesz do nich dostęp, odwołując się do elementu członkowskiego kodu i nazwy metody. Poniższy przykład wywołuje metodę ToUSD, która konwertuje wartość w StandardCost polu na wartość dolara:

=Code.ToUSD(Fields!StandardCost.Value)

Aby odwołać się do wbudowanych kolekcji w kodzie niestandardowym, dołącz odwołanie do wbudowanego obiektu Raport :

=Report.Parameters!Param1.Value

W poniższych przykładach pokazano, jak zdefiniować niektóre niestandardowe stałe i zmienne.

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

Mimo że stałe niestandardowe nie są wyświetlane w kategorii Stałe w oknie dialogowym Wyrażenie (które wyświetla tylko wbudowane stałe), można dodawać odwołania do nich z dowolnego wyrażenia, jak pokazano w poniższych przykładach. W wyrażeniu stała niestandardowa jest traktowana jako wariant.

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

Poniższy przykład obejmuje zarówno odwołanie do kodu, jak i implementację kodu funkcji FixSpelling, która zastępuje tekst "Bicycle" dla wszystkich wystąpień tekstu "Rower" w SubCategory polu.

=Code.FixSpelling(Fields!SubCategory.Value)

Poniższy kod, osadzony w bloku kodu definicji raportu, przedstawia implementację metody FixSpelling . W tym przykładzie pokazano, jak używać w pełni kwalifikowanego odwołania do klasy 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

Aby uzyskać więcej informacji na temat wbudowanych kolekcji obiektów, zobacz Wbudowane odwołania do obiektów globalnych i użytkowników (Power BI Report Builder).

Dołączanie odwołań do parametrów z kodu

Możesz odwołać się do kolekcji parametrów globalnych za pomocą kodu niestandardowego w bloku Kodu definicji raportu. Kolekcja parametrów jest tylko do odczytu i nie ma publicznych iteratorów. Nie można użyć visual basic dla każdej konstrukcji, aby przejść przez kolekcję. Przed odwołaniem do niego w kodzie musisz znać nazwę parametru zdefiniowanego w definicji raportu. Można jednak iterować wszystkie wartości parametru wielowartościowego.

Poniższa tabela zawiera przykłady odwoływania się do wbudowanej kolekcji Parameters z kodu niestandardowego:

Przekazywanie całej globalnej kolekcji parametrów do kodu niestandardowego.

Ta funkcja zwraca wartość określonego parametru raportu MyParameter.

Odwołanie w wyrażeniu =Code.DisplayAParameterValue(Parameters)

Niestandardowa definicja kodu

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

Przekazywanie pojedynczego parametru do kodu niestandardowego.

Odwołanie w wyrażeniu =Code.ShowParametersValues(Parameters!DayOfTheWeek)

Ten przykład zwraca wartość przekazanego parametru. Jeśli parametr jest parametrem wielowartościowym, zwracany ciąg jest łączeniem wszystkich wartości.

Niestandardowa definicja kodu

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

Następne kroki