Código personalizado em expressões em um relatório paginado no Construtor de Relatórios do Power BI

APLICA-SE A: Power BI Report Builder Power BI Desktop

Você pode adicionar código personalizado incorporado em um relatório. Use código incorporado para constantes personalizadas, funções complexas ou funções que são usadas várias vezes em um único relatório. O código personalizado pode incluir novas constantes, variáveis, funções ou sub-rotinas personalizadas. Você pode incluir referências somente leitura a coleções internas, como a coleção Parameters. No entanto, não é possível passar conjuntos de valores de dados de relatório para funções personalizadas; especificamente, não há suporte para agregações personalizadas.

Nota

Não há suporte para assemblies personalizados em relatórios paginados no Power BI. Considere converter a lógica de assembly personalizado em código incorporado. Para exemplos de alternativas a considerar, verifique alternativas de montagem.

Importante

Para cálculos sensíveis ao tempo que são avaliados uma vez em tempo de execução e que você deseja manter o mesmo valor durante o processamento do relatório, considere se deve usar uma variável de relatório ou uma variável de grupo. Para obter mais informações, consulte Referências de coleções de variáveis de relatório e grupo (Construtor de Relatórios do Power BI).

Incluir referências a funções comumente usadas

Use a caixa de diálogo Expressão para exibir uma lista categorizada de funções comuns internas ao Construtor de Relatórios. Quando você expande Funções comuns e seleciona uma categoria, o painel Item exibe a lista de funções que você inclui em uma expressão. As funções comuns incluem classes do .NET Framework Math e namespaces e Convert funções de biblioteca de tempo de execução do Visual Basic. Por conveniência, você pode exibir as funções mais usadas na caixa de diálogo Expressão , onde elas são listadas por categoria: Texto, Data e Hora, Matemática, Inspeção, Fluxo do Programa, Agregação, Financeiro, Conversão e Diversos. Funções menos usadas não aparecem na lista, mas ainda podem ser usadas em uma expressão.

Para usar uma função interna, clique duas vezes no nome da função no painel Item. Uma descrição da função aparece no painel Descrição e um exemplo da chamada de função aparece no painel Exemplo. No painel de código, quando você digita o nome da função seguido de um parêntese esquerdo (, a ajuda do IntelliSense exibe cada sintaxe válida para a chamada de função. Por exemplo, para calcular o valor máximo de um campo nomeado Quantity em uma tabela, adicione a expressão =Max( simples ao painel Código e use as marcas inteligentes para exibir todas as sintaxes válidas possíveis para a chamada de função. Para concluir este exemplo, digite =Max(Fields!Quantity.Value).

Para obter mais informações sobre cada função, consulte Math, Converte Visual Basic Runtime Library Members no MSDN.

Incluir referências a funções menos usadas

Para incluir uma referência a outros namespaces CLR menos usados, você deve usar uma referência totalmente qualificada, por exemplo, StringBuilder. O IntelliSense não é suportado no painel de código da caixa de diálogo Expressão para essas funções menos usadas.

Para obter mais informações, consulte Membros da biblioteca de tempo de execução do Visual Basic no MSDN.

Incluir código incorporado

Para adicionar código incorporado a um relatório, use a guia Código da caixa de diálogo Propriedades do relatório. O bloco de código criado pode conter vários métodos. Os métodos em código incorporado devem ser escritos no Microsoft Visual Basic e devem ser baseados em instância. O processador de relatório adiciona automaticamente referências para os namespaces System.Convert e System.Math.

Os métodos em código incorporado estão disponíveis através de um membro de código definido globalmente. Você acessá-los referindo-se ao membro do código e ao nome do método. O exemplo a seguir chama o método ToUSD, que converte o StandardCost valor no campo em um valor de dólar:

=Code.ToUSD(Fields!StandardCost.Value)

Para fazer referência a coleções internas em seu código personalizado, inclua uma referência ao objeto Report interno:

=Report.Parameters!Param1.Value

Os exemplos a seguir mostram como definir algumas constantes e variáveis personalizadas.

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

Embora as constantes personalizadas não apareçam na categoria Constantes na caixa de diálogo Expressão (que exibe apenas constantes internas), você pode adicionar referências a elas a partir de qualquer expressão, conforme mostrado nos exemplos a seguir. Em uma expressão, uma constante personalizada é tratada como uma Variante.

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

O exemplo a seguir inclui a referência de código e a implementação de código da função FixSpelling, que substitui o texto para todas as ocorrências do texto "Bicycle" "Bike" no SubCategory campo.

=Code.FixSpelling(Fields!SubCategory.Value)

O código a seguir, quando incorporado em um bloco de código de definição de relatório, mostra uma implementação do método FixSpelling . Este exemplo mostra como usar uma referência totalmente qualificada para a classe 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

Para obter mais informações sobre coleções de objetos internas, consulte Referências globais e de usuários internas (Construtor de Relatórios do Power BI).

Incluir referências a parâmetros do código

Você pode fazer referência à coleção de parâmetros globais por meio de código personalizado em um bloco de código da definição de relatório. A coleção de parâmetros é somente leitura e não tem iteradores públicos. Você não pode usar uma construção do Visual Basic For Each para percorrer a coleção. Você precisa saber o nome do parâmetro definido na definição de relatório antes de poder fazer referência a ele em seu código. No entanto, você pode iterar através de todos os valores de um parâmetro de vários valores.

A tabela a seguir inclui exemplos de referência à coleção Parameters interna a partir do código personalizado:

Passando uma coleção de parâmetros global inteira para código personalizado.

Esta função retorna o valor de um parâmetro de relatório específico MyParameter.

Referência na Expressão =Code.DisplayAParameterValue(Parameters)

Definição de código personalizado

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

Passando um parâmetro individual para o código personalizado.

Referência na Expressão =Code.ShowParametersValues(Parameters!DayOfTheWeek)

Este exemplo retorna o valor do parâmetro passado. Se o parâmetro for um parâmetro de vários valores, a cadeia de caracteres de retorno será uma concatenação de todos os valores.

Definição de código personalizado

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

Próximos passos