Partilhar 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 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 quando a fonte de dados original contém um tipo de dados diferente, os dados serão convertidos em um dos tipos de dados a seguir. Valores que resultam de fórmulas também usam esses tipos de dados.

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

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. É possível usar as opções de formatação do modelo para controlar a forma como o valor é exibido.

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

Observação:
As fórmulas DAX não dão suporte aos tipos de dados que são muito pequenos para conter o valor mínimo relacionado na descrição.
Números sem 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)*

Observação:
As fórmulas DAX não dão suporte aos tipos de dados que são muito pequenos para conter o valor mínimo relacionado na descrição.
Números reais são números que podem ter casas decimais. Os números reais abrangem uma grande variedade 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 está limitado a 15 dígitos decimais.
Booliano Booliano Um valor True ou False.
Texto Cadeia de caracteres Uma cadeia de caracteres de dados de caractere Unicode. Ela pode conter cadeias de caracteres, datas ou números representados no formato de texto.
Data Data/hora Datas e horas em uma representação de data-hora aceita.

As datas válidas são todas as datas depois de 1º de março de 1900.
Moeda Moeda Conversor de Moedas tipo de dados 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.
N/D Em branco Um espaço em branco é um tipo de dados no DAX que representa e substitui nulos SQL. É possível criar um espaço em branco usando a função BLANK e testar se há 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 tem suporte. A operação foi cancelada.

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

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 de varchar(max) que contém um comprimento da cadeia de caracteres de mais de 131.072 caracteres.

Tipo de dados de tabela

Além disso, a DAX usa um tipo de dados table . Esse tipo de dados é usado pela DAX em muitas funções, como agregações e cálculos de inteligência de hora. 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 é avaliada como uma tabela; para algumas funções, é necessária uma referência a uma tabela base. Para obter informações sobre os requisitos de funções específicas, consulte 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 quanto aos 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 um 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 para o 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 é implicitamente convertido para o 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 converte implicitamente a cadeia de caracteres em um número e, em seguida, faz a adição para chegar a um resultado numérico. A seguinte expressão retorna 44: = "22" + 22

  • Se você tentar concatenar dois números, eles serão apresentados como cadeias de caracteres e concatenados. A seguinte expressão retorna "1234": = 12 & 34

A tabela a seguir resume as conversões implícitas de tipo de dados executadas em fórmulas. Em geral, o designer de modelos semânticos 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 implícitas de dados

O tipo de conversão executada é determinado pelo operador, que converte os valores exigidos antes de executar a operação solicitada. Estas tabelas listam os operadores e indicam a conversão que é executada em cada tipo de dados na coluna quando ele é emparelhado com o tipo de dados na linha de interseção.

Observação

Tipos de dados de texto não são incluídos nestas 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 (+)

INTEGER CURRENCY real Data/hora
INTEGER INTEGER CURRENCY real Data/hora
CURRENCY CURRENCY CURRENCY 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 é usado em uma operação de adição em combinação com dados de moedas, os dois valores são convertidos em REAL e o resultado é 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):

INTEGER CURRENCY real Data/hora
INTEGER INTEGER CURRENCY real real
CURRENCY CURRENCY CURRENCY 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, os dois valores serão convertidos em datas, e o valor de retorno 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 (*)

INTEGER CURRENCY real Data/hora
INTEGER INTEGER CURRENCY real INTEGER
CURRENCY CURRENCY real CURRENCY CURRENCY
REAL real CURRENCY real real

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

Divisão (/)

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

INTEGER CURRENCY real Data/hora
INTEGER real CURRENCY real real
CURRENCY CURRENCY real CURRENCY 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, os dois valores são convertidos em números reais e o resultado também é um número real.

Operadores de comparação

Há suporte apenas para um conjunto limitado de combinações de tipo de dados misto para operações de comparação. Para obter mais informações, consulte Referência de operador DAX.

Manipulando 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:

Expression DAX Excel
BLANK + BLANK BLANK 0 (zero)
BLANK +5 5 5
BLANK * 5 BLANK 0 (zero)
5/BLANK Infinity Erro
0/BLANK NaN Error
BLANK/BLANK BLANK Erro
FALSE OR BLANK FALSE FALSE
FALSE AND BLANK FALSE FALSE
TRUE OR BLANK TRUE TRUE
TRUE AND BLANK FALSE TRUE
BLANK OR BLANK BLANK Erro
BLANK AND BLANK BLANK Erro

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