Codice personalizzato nelle espressioni in un report impaginato in Power BI Report Builder
SI APPLICA A: Power BI Report Builder Power BI Desktop
È possibile aggiungere codice personalizzato incorporato in un report. Usare codice incorporato per costanti personalizzate, funzioni complesse o funzioni usate più volte in un singolo report. Il codice personalizzato può includere nuove costanti, variabili, funzioni o subroutine personalizzate. È possibile includere riferimenti di sola lettura a raccolte predefinite come ad esempio Parameters. Non è tuttavia possibile passare alle funzioni personalizzate set di valori di dati. In particolare, non sono supportate le aggregazioni personalizzate.
Nota
Gli assembly personalizzati non sono supportati nei report impaginati in Power BI. Valutare la possibilità di convertire la logica dall'assembly personalizzato al codice incorporato. Per esempi di alternative da considerare, vedere le alternative agli assembly.
Importante
Per i calcoli che dipendono dal tempo, valutati una volta sola in fase di esecuzione e di cui si desidera mantenere inalterato il valore durante tutta l'elaborazione del report, considerare se utilizzare una variabile di report o una variabile di gruppo. Per altre informazioni, vedere Report e riferimenti alle raccolte di variabili di gruppo (Power BI Report Builder).
Includere riferimenti a funzioni di uso comune
Usare la finestra di dialogo Espressione per visualizzare un elenco per categoria di funzioni comuni predefinite di Generatore report. Quando si espande Funzioni comuni e si seleziona una categoria, nel riquadro Elemento viene visualizzato l'elenco di funzioni incluse in un'espressione. Le funzioni comuni includono classi di spazi dei nomi Math e Convert di .NET Framework e funzioni di libreria di runtime di Visual Basic. Per praticità, è possibile visualizzare le funzioni usate più di frequente nella finestra di dialogo Espressione , in cui sono elencate per categoria: Testo, Data e ora, Matematiche, Ispezione, Flusso programma, Aggregazione, Finanziarie, Conversione e Varie. Le funzioni usate meno di frequente non sono riportate nell'elenco, ma possono comunque essere usate in un'espressione.
Per utilizzare una funzione predefinita, fare doppio clic sul relativo nome nel riquadro Elemento. Nel riquadro Descrizione verrà visualizzata una descrizione della funzione e nel riquadro Esempio un esempio della chiamata alla funzione. Nel riquadro del codice, quando si digita il nome della funzione seguito da una parentesi aperta (, tramite IntelliSense verranno visualizzate tutte le sintassi valide per la chiamata alla funzione. Ad esempio per calcolare il valore massimo per un campo denominato Quantity
in una tabella, aggiungere l'espressione semplice =Max(
nel riquadro del codice, quindi usare gli smart tag per visualizzare tutte le possibili sintassi valide per la chiamata alla funzione. Per completare questo esempio, digitare =Max(Fields!Quantity.Value)
.
Per altre informazioni su ogni funzione, vedere Math, Converte la pagina relativa ai membri delle librerie run-time di Visual Basic in MSDN.
Includere riferimenti a funzioni meno usate
Per includere un riferimento ad altri spazi dei nomi CLR usati meno di frequente, è necessario usare un riferimento completo, ad esempio StringBuilder. IntelliSense non è supportato nel riquadro del codice della finestra di dialogo Espressione per queste funzioni usate meno di frequente.
Per altre informazioni, vedere la pagina relativa ai membri delle librerie di runtime di Visual Basic in MSDN.
Includere un codice incorporato
Per aggiungere codice incorporato a un report, usare la scheda Codice della finestra di dialogo Proprietà report . Il blocco di codice creato può contenere più metodi. È necessario che i metodi del codice incorporato siano scritti in Microsoft Visual Basic e siano basati su istanze. Tramite il componente Elaborazione report, vengono aggiunti automaticamente i riferimenti per gli spazi dei nomi System.Convert e System.Math.
I metodi nel codice incorporato sono disponibili tramite un membro Code definito a livello globale. Per accedere ai metodi, fare riferimento al membro Code e al nome del metodo. L'esempio seguente consente di chiamare il metodo ToUSDper la conversione del valore del campo StandardCost
in un valore in dollari:
=Code.ToUSD(Fields!StandardCost.Value)
Per fare riferimento a raccolte predefinite nel codice personalizzato, includere un riferimento all'oggetto Report predefinito:
=Report.Parameters!Param1.Value
Negli esempi seguenti viene illustrato come definire alcune variabili e costanti personalizzate.
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
Sebbene le variabili e le costanti personalizzate non siano presenti nella categoria Costanti nella finestra di dialogo Espressioni , in cui vengono visualizzate solo costanti predefinite, è possibile farvi riferimento da qualsiasi espressione, come illustrato negli esempi seguenti. In un'espressione una costante personalizzata viene considerata come un elemento Variant.
=Code.MyNote
=Code.NCopies
=Code.MyVersion
=Code.MyDoubleVersion
Nell'esempio seguente sono inclusi sia il riferimento al codice sia l'implementazione del codice della funzione FixSpellingche consente la sostituzione del testo "Bicycle"
per tutte le occorrenze del testo "Bike" nel campo SubCategory
.
=Code.FixSpelling(Fields!SubCategory.Value)
Il codice seguente, se incorporato nel blocco di codice di una definizione del report, indica un'implementazione del metodo FixSpelling . Questo esempio illustra come usare un riferimento completo alla classe StringBuilder di Microsoft .NET Framework.
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
Per altre informazioni sugli insiemi di oggetti predefiniti, vedere Riferimenti globali e utenti predefiniti (Power BI Report Builder).
Includere riferimenti ai parametri dal codice
È possibile fare riferimento alla raccolta di parametri globali tramite codice personalizzato in un blocco di codice della definizione del report. La raccolta di parametri è di sola lettura e non include iteratori pubblici. Non è possibile usare un costrutto For Each di Visual Basic per analizzare la raccolta. È necessario conoscere il nome del parametro definito nella definizione del report per potervi fare riferimento nel codice personalizzato. È tuttavia possibile scorrere tutti i valori di un parametro multivalore.
Nella tabella seguente sono inclusi esempi di riferimenti alla raccolta predefinita Parameters
da codice personalizzato:
Passaggio di un'intera raccolta di parametri globali al codice personalizzato.
Questa funzione restituisce il valore di un parametro di report MyParameterspecifico.
Riferimento nell'espressione =Code.DisplayAParameterValue(Parameters)
Definizione del codice personalizzato
Public Function DisplayAParameterValue(ByVal parameters as Parameters) as Object
Return parameters("MyParameter").Value
End Function
Passaggio di un singolo parametro al codice personalizzato.
Riferimento nell'espressione =Code.ShowParametersValues(Parameters!DayOfTheWeek)
In questo esempio viene restituito il valore del parametro passato. Se il parametro è un parametro multivalore, la stringa restituita è una concatenazione di tutti i valori.
Definizione del codice personalizzato
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