Compartilhar via


Tipos de dados com suporte em modelos tabulares

aplica-se a: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

Este artigo descreve os tipos de dados que podem ser usados em modelos tabulares e discute a conversão implícita de tipos de dados quando os dados são calculados ou usados em uma fórmula DAX (Data Analysis Expressions).

Tipos de dados usados em modelos tabulares

Quando você importa dados ou usa um valor em uma fórmula, mesmo que a fonte de dados original contenha um tipo de dados diferente, os dados são convertidos em um dos tipos de dados a seguir. Os valores resultantes de fórmulas também usam esses tipos de dados.

Em geral, esses tipos de dados são implementados para habilitar cálculos precisos em colunas calculadas e, para consistência, as mesmas restrições se aplicam ao restante dos dados em modelos.

Os formatos usados para números, moeda, datas e horas devem seguir o formato da localidade especificada no cliente usado para trabalhar com dados de modelo. Você pode usar as opções de formatação no modelo para controlar a maneira como o valor é exibido.

Tipo de dados no modelo Tipo de dados no DAX Descrição
Número Inteiro Um valor inteiro de 64 bits (oito bytes) *

Nota:
Fórmulas DAX não dão suporte a tipos de dados que são muito pequenos para manter o valor mínimo listado na descrição.
Números que não têm casas decimais. Inteiros podem ser números positivos ou negativos, mas deve ser números inteiros entre -9.223.372.036.854.775.807 (-2^63+1) e 9.223.372.036.854.775.806 (2^63-2).
Número Decimal Um número real de 64 bits (oito bytes) *

Nota:
Fórmulas DAX não dão suporte a tipos de dados que são muito pequenos para manter o valor mínimo listado na descrição.
Números reais são aqueles que podem incluir casas decimais. Os números reais abrangem uma ampla gama de valores:

Valores negativos de -1,79E +308 a -2,23E -308

Zero

Valores positivos de 2,23E -308 a 1,79E + 308

No entanto, o número de dígitos significativos é limitado a 15 dígitos decimais.
Booliano Booliano Um valor Verdadeiro ou Falso.
Texto fio Uma cadeia de dados de caractere Unicode. Pode ser cadeias de caracteres, números ou datas representadas em um formato de texto. O tamanho máximo efetivo de uma cadeia de caracteres está sujeito a um limite de bytes de 32767.
Binário fio Dados binários não estruturados, por exemplo, imagens. As colunas com esse tipo de dados têm funcionalidade limitada no DAX. O tamanho máximo efetivo de um valor de dados binários está sujeito a um limite de bytes 67108864.
Data (calendário) Data/hora Datas e horas em um formato aceito de data e hora.

Datas válidas são todas datas após 1º de março de 1900.
Moeda Moeda O tipo de dados de moeda permite valores entre -922.337.203.685.477.5807 a 922.337.203.685.477.5806 com quatro dígitos decimais de precisão fixa.
Variante Variante Usado para expressões, como medidas DAX, que podem retornar tipos de dados diferentes. Por exemplo, uma medida DAX que retorna um número inteiro ou uma cadeia de caracteres será do tipo variant.
Não aplicável Em Branco Um "blank" é um tipo de dados no DAX que representa e substitui nulos do SQL. Você pode criar um espaço em branco usando a função BLANK e testar espaços em branco usando a função lógica ISBLANK.

* Se você tentar importar dados com valores numéricos grandes, a importação poderá falhar com o seguinte erro:

Erro de banco de dados na memória: a coluna '<nome da coluna>' da tabela '<nome da tabela>' contém um valor, '1.7976931348623157e+308', que não é suportado. A operação foi cancelada.

Esse erro ocorre porque o designer de modelo usa esse valor para representar nulos. Os valores na lista a seguir são sinônimos do valor nulo mencionado anteriormente:

Valor
9223372036854775807
-9223372036854775808
1,7976931348623158e+308
-1.7976931348623158e+308

Remova o valor de seus dados e tente importar novamente.

Observação

Você não pode importar de uma coluna varchar(max) que contém um comprimento de cadeia de caracteres de mais de 131.072 caracteres.

Tipo de dados de tabela

Além disso, o DAX usa um tipo de dados de tabela. Esse tipo de dados é usado pelo DAX em muitas funções, como agregações e cálculos de inteligência de tempo. Algumas funções exigem uma referência a uma tabela; outras funções retornam uma tabela que pode ser usada como entrada para outras funções. Em algumas funções que exigem uma tabela como entrada, você pode especificar uma expressão que seja avaliada como uma tabela; para algumas funções, uma referência a uma tabela base é necessária. Para obter informações sobre os requisitos de funções específicas, consulte a Referência de Função DAX.

Conversão de tipo de dados implícita e explícita em fórmulas DAX

Cada função DAX tem requisitos específicos sobre os tipos de dados que são usados como entradas e saídas. Por exemplo, algumas funções exigem inteiros para alguns argumentos e datas para outros; outras funções exigem texto ou tabelas.

Se os dados na coluna que você especificar como argumento forem incompatíveis com o tipo de dados exigido pela função, o DAX em muitos casos retornará um erro. No entanto, sempre que possível, o DAX tenta converter implicitamente os dados no tipo de dados necessário. Por exemplo:

  • Você pode digitar um número, por exemplo, "123", como uma cadeia de caracteres. O DAX analisa a cadeia de caracteres e tenta especificá-la como um tipo de dados numérico.

  • Você pode adicionar TRUE + 1 e obter o resultado 2, pois TRUE é convertido implicitamente no número 1 e a operação 1+1 é executada.

  • Se você adicionar valores em duas colunas e um valor for representado como texto ("12") e o outro como um número (12), o DAX converterá implicitamente a cadeia de caracteres em um número e, em seguida, fará a adição para um resultado numérico. A expressão a seguir retorna 44: = "22" + 22

  • Se você tentar concatenar dois números, eles serão apresentados como strings e então concatenados. A expressão a seguir retorna "1234": = 12 e 34

A tabela a seguir resume as conversões de tipo de dados implícitas executadas em fórmulas. Em geral, o designer de modelo semântico se comporta como o Microsoft Excel e executa conversões implícitas sempre que possível quando exigido pela operação especificada.

Tabela de conversões de dados implícitas

O tipo de conversão que é executado é determinado pelo operador, que converte os valores necessários antes de executar a operação solicitada. Essas tabelas listam os operadores e indicam a conversão executada em cada tipo de dados na coluna quando ela é emparelhada com o tipo de dados na linha de interseção.

Observação

Os tipos de dados de texto não estão incluídos nessas tabelas. Quando um número é representado como em um formato de texto, em alguns casos, o designer de modelo tenta determinar o tipo de número e representá-lo como um número.

Adição (+)

INTEIRO MOEDA REAL Data/hora
INTEIRO INTEIRO MOEDA REAL Data/hora
MOEDA MOEDA MOEDA REAL Data/hora
REAL REAL REAL REAL Data/hora
Data/hora Data/hora Data/hora Data/hora Data/hora

Por exemplo, se um número real for usado em uma operação de adição em combinação com dados de moeda, ambos os valores serão convertidos em REAL e o resultado será retornado como REAL.

Subtração (-)

Na tabela a seguir, o cabeçalho da linha é o minuend (lado esquerdo) e o cabeçalho da coluna é o subtrahend (lado direito):

INTEIRO MOEDA REAL Data/hora
INTEIRO INTEIRO MOEDA REAL REAL
MOEDA MOEDA MOEDA REAL REAL
REAL REAL REAL REAL REAL
Data/hora Data/hora Data/hora Data/hora Data/hora

Por exemplo, se uma data for usada em uma operação de subtração com qualquer outro tipo de dados, ambos os valores serão convertidos em datas e o valor retornado também será uma data.

Observação

Os modelos tabulares também dão suporte ao operador unário , (negativo), mas esse operador não altera o tipo de dados do operando.

Multiplicação (*)

INTEIRO MOEDA REAL Data/hora
INTEIRO INTEIRO MOEDA REAL INTEIRO
MOEDA MOEDA REAL MOEDA MOEDA
REAL REAL MOEDA REAL REAL

Por exemplo, se um inteiro for combinado com um número real em uma operação de multiplicação, ambos os números serão convertidos em números reais e o valor retornado também será REAL.

Divisão (/)

Na tabela a seguir, o cabeçalho de linha é o numerador e o cabeçalho da coluna é o denominador: (Linha/Coluna)

INTEIRO MOEDA REAL Data/hora
INTEIRO REAL MOEDA REAL REAL
MOEDA MOEDA REAL MOEDA REAL
REAL REAL REAL REAL REAL
Data/hora REAL REAL REAL REAL

Por exemplo, se um inteiro for combinado com um valor de moeda em uma operação de divisão, ambos os valores serão convertidos em números reais e o resultado também será um número real.

Operadores de comparação

Há suporte apenas para um conjunto limitado de combinações de tipo de dados mistos para operações de comparação. Para saber mais, veja Referência de Operadores DAX.

Manipulação de espaços em branco, cadeias de caracteres vazias e valores zero

A tabela a seguir resume as diferenças entre o DAX e o Microsoft Excel, da maneira como os espaços em branco são tratados:

Expressão DAX Distinguir-se
BLANK + BLANK EM BRANCO 0 (zero)
BLANK +5 5 5
BLANK * 5 EM BRANCO 0 (zero)
5/EM BRANCO Infinito Erro
0/EM BRANCO Nan Erro
EM BRANCO/EM BRANCO EM BRANCO Erro
FALSE OU BLANK FALSO FALSO
FALSO E EM BRANCO FALSO FALSO
TRUE OU BLANK VERDADEIRO VERDADEIRO
TRUE E BLANK FALSO VERDADEIRO
BLANK OU BLANK EM BRANCO Erro
BLANK E BLANK EM BRANCO Erro

Para obter detalhes sobre como uma função ou operador específico manipula espaços em branco, consulte os tópicos individuais para cada função DAX, na seção, Referência de Função DAX.