Share via


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 inserido em um relatório. Use o código inserido para constantes personalizadas, funções complexas ou funções usadas várias vezes em um mesmo relatório. O código personalizado pode incluir novas constantes, variáveis, funções ou sub-rotinas personalizadas. É possível incluir referências somente leitura em coleções internas, como a coleção de Parâmetros. No entanto, não é possível passar conjuntos de valores de dados do relatório para funções personalizadas. Especificamente, não há suporte para agregações personalizadas.

Observação

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

Importante

Para cálculos de detecção de hora avaliados uma vez em tempo de execução que você deseja manter com o mesmo valor ao longo do processamento do relatório, considere se uma variável de relatório ou uma variável de grupo deve ser usada. 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).

Inclui referências em funções usadas frequentemente

Use a caixa de diálogo Expressão para exibir uma lista categorizada de funções comuns internas do Construtor de Relatórios. Quando você expande Funções Comuns e seleciona uma categoria, o painel Item exibe a lista de funções incluídas em uma expressão. As funções comuns incluem classes Math do .NET Framework, namespaces Convert e funções de biblioteca de tempo de execução do Visual Basic. Por conveniência, é possível exibir as funções usadas mais frequentemente 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, Financeira, Conversão e Diversas. As funções usadas com menor frequência não são exibidas 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 é exibida no painel Descrição e um exemplo de chamada da função é exibido no painel Exemplo. No painel de código, quando você digita o nome da função seguido por 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 denominado Quantity em uma tabela, adicione a expressão simples =Max( ao painel Código e use as marcas inteligentes para exibir todas as sintaxes válidas possíveis para a chamada da função. Para concluir este exemplo, digite =Max(Fields!Quantity.Value).

Para obter mais informações sobre cada função, consulte Math, Converte Membros da Biblioteca de Runtime do Visual Basic no MSDN.

Incluir referências em funções usadas com menor frequência

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

Para obter mais informações, confira Membros da Biblioteca de Runtime do Visual Basic no MSDN.

Incluir código inserido

Para adicionar código inserido 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 no código inserido devem ser gravados no Microsoft Visual Basic e devem ser baseados em instância. O processador de relatório adiciona referências automaticamente para os namespaces System.Convert e System.Math.

Os métodos no código inserido são disponibilizados por meio de um membro do Code definido globalmente. Você acessa os métodos fazendo referência ao membro do Code e ao nome do método. O exemplo a seguir chama o método ToUSD, que converte o valor no campo StandardCost em um valor em dólar:

=Code.ToUSD(Fields!StandardCost.Value)

Para fazer referência às coleções internas no código personalizado, inclua uma referência no 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 de Constantes na caixa de diálogo Expressão (que exibe apenas constantes internas), é possível adicionar referências a elas por meio de qualquer expressão, conforme mostrado nos exemplos a seguir. Em uma expressão, uma constante personalizada é tratada como uma Variant.

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

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

=Code.FixSpelling(Fields!SubCategory.Value)

O código a seguir, quando inserido 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 da classe StringBuilder do 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

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

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

É possível fazer referência à coleção de parâmetros globais por meio de código personalizado em um bloco de código da definição do relatório. A coleção de parâmetros é somente leitura e não possui iteradores públicos. Não é possível usar um constructo do Visual Basic Para cada para percorrer a coleção. É preciso saber o nome do parâmetro definido na definição de relatório antes de referenciá-lo no código. No entanto, é possível iterar através de todos os valores de um parâmetro de vários valores.

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

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

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

Referência em 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 código personalizado.

Referência em 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óximas etapas