Partilhar via


Tipos de dados em expressões em um relatório paginado (Construtor de Relatórios do Power BI)

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

Os tipos de dados representam diferentes tipos de dados em um relatório paginado para que possam ser armazenados e processados de forma eficiente. Os tipos de dados típicos incluem texto (também conhecido como cadeias de caracteres), números com e sem casas decimais, datas e horas e imagens. Os valores em um relatório devem ser um tipo de dados RDL (Report Definition Language). Você pode formatar um valor de acordo com sua preferência ao exibi-lo em um relatório. Por exemplo, um campo que representa a moeda é armazenado na definição de relatório como um número de ponto flutuante, mas pode ser exibido em uma variedade de formatos, dependendo da propriedade de formato escolhida.

Para obter mais informações sobre formatos de exibição, consulte Formatando itens de relatório (Construtor de Relatórios do Power BI).

Tipos de dados RDL (Report Definition Language) e CLR (Common Language Runtime)

Os valores especificados em um arquivo RDL devem ser um tipo de dados RDL. Quando o relatório é compilado e processado, os tipos de dados RDL são convertidos em tipos de dados CLR. A tabela a seguir exibe a conversão, marcada como Padrão:

Tipo RDL Tipos de CLR
String Padrão: String

Gráfico, GUID, Período de tempo
Boolean Padrão: Boolean
Número inteiro Padrão: Int64

Int16, Int32, Uint16, Uint64, Byte, Sbyte
DateTime Padrão: DateTime

DateTimeOffset
Float Padrão: Duplo

Único, decimal
Binário Padrão: Byte[]
Variante Qualquer um dos itens acima, exceto Byte[]
VariantArray Matriz de variantes
Serializável Variante ou tipos marcados com Serializable ou que implementam ISerializable.

Compreender tipos de dados e escrever expressões

É importante entender os tipos de dados quando você escreve expressões para comparar ou combinar valores, por exemplo, quando define expressões de grupo ou filtro ou calcula agregações. As comparações e os cálculos são válidos apenas entre itens do mesmo tipo de dados. Se os tipos de dados não corresponderem, você deverá converter explicitamente o tipo de dados no item de relatório usando uma expressão.

A lista a seguir descreve casos em que talvez seja necessário converter dados para um tipo de dados diferente:

  • Comparando o valor de um parâmetro de relatório de um tipo de dados com um campo de conjunto de dados de um tipo de dados diferente.

  • Escrever expressões de filtro que comparam valores de diferentes tipos de dados.

  • Escrever expressões de classificação que combinam campos de diferentes tipos de dados.

  • Escrever expressões de grupo que combinam campos de diferentes tipos de dados.

  • Converter um valor recuperado da fonte de dados de um tipo de dados para um tipo de dados diferente.

Determinar o tipo de dados dos dados do relatório

Para determinar o tipo de dados de um item de relatório, você pode escrever uma expressão que retorna seu tipo de dados. Por exemplo, para mostrar o tipo de dados para o campo MyField, adicione a seguinte expressão a uma célula da tabela: =Fields!MyField.Value.GetType().ToString(). O resultado exibe o tipo de dados CLR usado para representar MyField, por exemplo, System.String ou System.DateTime.

Converter campos de conjunto de dados em um tipo de dados diferente

Você também pode converter campos de conjunto de dados antes de usá-los em um relatório. A lista a seguir descreve maneiras de converter um campo de conjunto de dados existente:

  • Modifique a consulta do conjunto de dados para adicionar um novo campo de consulta com os dados convertidos. Para fontes de dados relacionais ou multidimensionais, isso usa recursos de fonte de dados para executar a conversão.

  • Crie um campo calculado com base em um campo de conjunto de dados de relatório existente escrevendo uma expressão que converta todos os dados em uma coluna de conjunto de resultados em uma nova coluna com um tipo de dados diferente. Por exemplo, a expressão a seguir converte o campo Ano de um valor inteiro em um valor de cadeia de caracteres: =CStr(Fields!Year.Value). Para obter mais informações, consulte Adicionar, editar, atualizar campos no Painel de Dados do Relatório (Construtor de Relatórios do Power BI).

  • Verifique se a extensão de processamento de dados que você está usando inclui metadados para recuperar dados pré-formatados. Por exemplo, uma consulta MDX do SQL Server Analysis Services inclui uma propriedade estendida FORMATTED_VALUE para valores de cubo que já foram formatados ao processar o cubo. Para obter mais informações, consulte Propriedades de campo estendidas para um banco de dados do Analysis Services (SSRS).

Compreender os tipos de dados de parâmetros

Os parâmetros de relatório devem ser um dos cinco tipos de dados: Boolean, DateTime, Integer, Float ou Text (também conhecido como String). Quando uma consulta de conjunto de dados inclui parâmetros de consulta, os parâmetros de relatório são criados automaticamente e vinculados aos parâmetros de consulta. O tipo de dados padrão para um parâmetro de relatório é String. Para alterar o tipo de dados padrão de um parâmetro de relatório, selecione o valor correto na lista suspensa Tipo de dados na página Geral da caixa de diálogo Propriedades do parâmetro de relatório.

Nota

Os parâmetros de relatório que são tipos de dados DateTime não suportam milissegundos. Embora seja possível criar um parâmetro com base em valores que incluem milissegundos, não é possível selecionar um valor em uma lista suspensa de valores disponíveis que inclua valores de Data ou Hora que incluam milissegundos.

Escrever expressões que convertem tipos de dados ou extraem partes de dados

Quando você combina campos de texto e conjunto de dados usando o operador de concatenação (&), o Common Language Runtime (CLR) geralmente fornece formatos padrão. Quando você precisa converter explicitamente um campo ou parâmetro de conjunto de dados em um tipo de dados específico, você deve usar um método CLR ou uma função de biblioteca de tempo de execução do Visual Basic para converter os dados.

A tabela a seguir mostra exemplos de conversão de tipos de dados.

Tipo de conversão Exemplo
DateTime para String =CStr(Fields!Date.Value)
String para DateTime =DateTime.Parse(Fields!DateTimeinStringFormat.Value)
String para DateTimeOffset =DateTimeOffset.Parse(Fields!DateTimeOffsetinStringFormat.Value)
Extraindo o Ano =Year(Fields!TimeinStringFormat.Value)

-- or --

=Year(Fields!TimeinDateTimeFormat.Value)
Booleano para Inteiro =CInt(Parameters!BooleanField.Value)

-1 é Verdadeiro e 0 é Falso.
Booleano para Inteiro =System.Convert.ToInt32(Fields!BooleanFormat.Value)

1 é Verdadeiro e 0 é Falso.
Apenas a parte DateTime de um valor DateTimeOffset =Fields!MyDatetimeOffset.Value.DateTime
Apenas a parte Offset de um valor DateTimeOffset =Fields!MyDatetimeOffset.Value.Offset

Você também pode usar a função Formatar para controlar o formato de exibição do valor. Para obter mais informações, consulte Funções (Visual Basic).

Exemplos avançados

Quando você se conecta a uma fonte de dados com um provedor de dados que não fornece suporte à conversão para todos os tipos de dados na fonte de dados, o tipo de dados padrão para tipos de fonte de dados sem suporte é String. Os exemplos a seguir fornecem soluções para tipos de dados específicos que são retornados como uma cadeia de caracteres.

Concatenar uma cadeia de caracteres e um tipo de dados CLR DateTimeOffset

Para a maioria dos tipos de dados, o CLR fornece conversões padrão para que você possa concatenar valores que são tipos de dados diferentes em uma cadeia de caracteres usando o operador S& . Por exemplo, a expressão a seguir concatena o texto "A data e a hora são: " com um campo de conjunto de dados StartDate, que é um DateTime valor: ="The date and time are: " & Fields!StartDate.Value.

Para alguns tipos de dados, talvez seja necessário incluir a função ToString. Por exemplo, a expressão a seguir mostra o mesmo exemplo usando o tipo DateTimeOffsetde dados CLR , que inclui a data, a hora e um deslocamento de fuso horário em relação ao fuso horário UTC: ="The time is: " & Fields!StartDate.Value.ToString().

Converter um tipo de dados String em um tipo de dados DateTime CLR

Se uma extensão de processamento de dados não suportar todos os tipos de dados definidos em uma fonte de dados, os dados podem ser recuperados como texto. Por exemplo, um valor de tipo de dados datetimeoffset(7) pode ser recuperado como um tipo de dados String. Em Perth, Austrália, o valor da string para 1 de julho de 2008, às 6:05:07.9999999 A.M. seria semelhante:

2008-07-01 06:05:07.9999999 +08:00

Este exemplo mostra a data (1º de julho de 2008), seguida pela hora com uma precisão de 7 dígitos (6:05:07.9999999 A.M.), seguida por um deslocamento de fuso horário UTC em horas e minutos (mais 8 horas, 0 minutos). Para os exemplos a seguir, esse valor foi colocado em um campo String chamado MyDateTime.Value.

Você pode usar uma das seguintes estratégias para converter esses dados em um ou mais valores CLR:

  • Em uma caixa de texto, use uma expressão para extrair partes da cadeia de caracteres. Por exemplo:

    • A expressão a seguir extrai apenas a parte da hora do deslocamento de fuso horário UTC e a converte em minutos: =CInt(Fields!MyDateTime.Value.Substring(Fields!MyDateTime.Value.Length-5,2)) * 60

      O resultado é 480.

    • A expressão a seguir converte a cadeia de caracteres em um valor de data e hora: =DateTime.Parse(Fields!MyDateTime.Value)

      Se a MyDateTime.Value string tiver um deslocamento UTC, a DateTime.Parse função primeiro se ajusta para o deslocamento UTC (7 A.M. - [+08:00] para o horário UTC das 23 horas da noite anterior). Em DateTime.Parse seguida, a função aplica o deslocamento UTC do servidor de relatório local e, se necessário, ajusta o tempo novamente para o horário de verão. Por exemplo, em Redmond, Washington, o deslocamento de horário local ajustado para o horário de verão é [-07:00], ou 7 horas antes das 23h. O resultado é o seguinte valor DateTime : 2007-07-06 04:07:07 PM (6 de julho de 2007 às 16:07).

Para obter mais informações sobre como converter cadeias de caracteres em tipos de dados DateTime , consulte Analisando cadeias de caracteres de data e hora, Formatando data e hora para uma cultura específica e Escolhendo entre DateTime, DateTimeOffset e TimeZoneInfo.

  • Adicione um novo campo calculado ao conjunto de dados do relatório que usa uma expressão para extrair partes da cadeia de caracteres. Para obter mais informações, consulte Adicionar, editar, atualizar campos no Painel de Dados do Relatório (Construtor de Relatórios do Power BI).

  • Altere a consulta do conjunto de dados do relatório para usar funções Transact-SQL para extrair os valores de data e hora independentemente para criar colunas separadas. O exemplo a seguir mostra como usar a função DatePart para adicionar uma coluna para o ano e uma coluna para o fuso horário UTC convertido em minutos:

    SELECT

    MyDateTime,

    DATEPART(year, MyDateTime) AS Year,

    DATEPART(tz, MyDateTime) AS OffsetinMinutes

    FROM MyDates

    O conjunto de resultados tem três colunas. A primeira coluna é a data e a hora, a segunda coluna é o ano e a terceira coluna é o deslocamento UTC em minutos. A linha a seguir mostra dados de exemplo:

    2008-07-01 06:05:07 2008 480

Para obter mais informações sobre tipos de dados de banco de dados do SQL Server, consulte Tipos de dados (Transact-SQL) e Tipos de dados e funções de data e hora (Transact-SQL).

Para obter mais informações sobre tipos de dados do SQL Server Analysis Services, consulte Tipos de dados no Analysis Services.