Tipos de datos admitidos en modelos tabulares

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

En este artículo se describen los tipos de datos que se pueden usar en los modelos tabulares, así como la conversión implícita de los tipos de datos cuando los datos se calculan o se usan en una fórmula DAX (Expresiones de análisis de datos).

Tipos de datos usados en modelos tabulares

Cuando se importan datos o se usa un valor en una fórmula, incluso si el origen de datos contiene un tipo de datos distinto, los datos se convierten a uno de los siguientes tipos de datos. Los datos que se producen como resultado de las fórmulas también usan estos tipos de datos.

En general, estos tipos de datos se implementan para permitir cálculos precisos en columnas calculadas y, para mantener la coherencia, se aplican las mismas restricciones al resto de los datos de los modelos.

Los formatos usados para números, moneda, fechas y horas deben seguir el formato de la configuración regional especificada en el equipo cliente que se usa para trabajar con los datos del modelo. Se pueden usar las opciones de formato en el modelo para controlar la forma en que se muestra el valor.

Tipo de datos en el modelo Tipo de datos en DAX Descripción
Whole Number Valor entero de 64 bits (ocho bytes)*

Nota:
Las fórmulas DAX no admiten tipos de datos que son demasiado pequeños para contener el valor mínimo que aparece en la descripción.
Números que no tienen posiciones decimales. Los enteros pueden ser números positivos o negativos, pero deben ser números enteros entre -9.223.372.036.854.775.807 (-2^63+1) y 9.223.372.036.854.775.806 (2^63-2).
Decimal Number Número real de 64 bits (ocho bytes)*

Nota:
Las fórmulas DAX no admiten tipos de datos que son demasiado pequeños para contener el valor mínimo que aparece en la descripción.
Los números reales son aquellos que pueden tener posiciones decimales. Abarcan un amplio intervalo de valores:

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

Cero

Valores positivos desde 2,23E -308 hasta 1,79E + 308

Sin embargo, el número de dígitos significativos se limita a 15 dígitos decimales.
Boolean Boolean Valor True o False.
Texto String Cadena de datos de carácter Unicode. Pueden ser cadenas, números o fechas representadas en un formato de texto.
Fecha Fecha y hora Fechas y horas en una representación de fecha y hora aceptada.

Las fechas válidas son todas las fechas posteriores al 1 de marzo de 1900.
Moneda Moneda El tipo de datos currency permite valores entre -922.337.203.685.477.5807 a 922.337.203.685.477.5806 con cuatro dígitos decimales de precisión fija.
N/D En blanco Un tipo en blanco es un tipo de datos de DAX que representa y reemplaza los valores NULL de SQL. Un valor en blanco se puede crear con la función BLANK y se puede comprobar si es tal con la función lógica ISBLANK.

* Si intenta importar datos que tienen valores numéricos grandes, la importación podría producir el siguiente error:

Error en la base de datos en memoria: la columna "<nombre> de columna" de la tabla "<nombre de tabla>" contiene un valor, "1.7976931348623157e+308", que no se admite. Se ha cancelado la operación.

Este error se produce porque el diseñador de modelos utiliza ese valor para representar los valores NULL. Los valores de la siguiente lista son sinónimos del valor NULL mencionado anteriormente:

Valor
9223372036854775807
-9223372036854775808
1.7976931348623158e+308
-1.7976931348623158e+308

Quite el valor de los datos e intente importar de nuevo.

Nota

No puede importar de una columna varchar(max) que contenga una longitud de cadena superior a 131 072 caracteres.

Tipo de datos de tabla

Además, DAX usa un tipo de datos de tabla . DAX usa este tipo de datos en muchas funciones, como agregaciones y cálculos de inteligencia de tiempo. Algunas funciones requieren una referencia a una tabla; otras funciones devuelven una tabla que puede usarse como entrada para otras funciones. En algunas funciones que requieren una tabla como entrada, puede especificar una expresión que se evalúa en una tabla; para algunas funciones, se requiere una referencia a una tabla base. Para información acerca de los requisitos de funciones específicas, consulte Referencia de funciones DAX.

Conversión implícita y explícita de tipos de datos en fórmulas DAX

Cada función DAX tiene requisitos concretos según los tipos de datos que se usan como entradas y salidas. Por ejemplo, algunas funciones requieren enteros para algunos argumentos y fechas para otros; otras funciones requieren texto o tablas.

Si los datos de la columna que especifica como argumento no son compatibles con el tipo de datos requerido por la función, DAX en muchos casos devuelve un error. Sin embargo, siempre que sea posible, DAX intentará convertir implícitamente los datos en el tipo de datos necesario. Por ejemplo:

  • Puede escribir un número, por ejemplo , "123", como una cadena. DAX analiza la cadena e intenta especificarla como un tipo de datos numérico.

  • Puede sumar TRUE + 1 y obtener el resultado 2, ya que TRUE se convierte implícitamente al número 1 y se realiza la operación 1 + 1.

  • Si agrega valores en dos columnas, y un valor se representa como texto ("12") y el otro como un número (12), DAX convierte implícitamente la cadena en un número y, a continuación, realiza la suma para obtener un resultado numérico. La expresión siguiente devuelve 44: = "22" + 22

  • Si intenta concatenar dos números, se presentan como cadenas y, a continuación, se concatenan. La expresión siguiente devuelve "1234": = 12 & 34

En la tabla siguiente se resumen las conversiones implícitas de tipo de datos que se realizan en las fórmulas. En general, el diseñador de modelos semánticos se comporta como Microsoft Excel y, siempre que sea posible, realiza conversiones implícitas cuando lo requiere la operación especificada.

Tabla de conversiones de datos implícitas

El tipo de conversión que se realiza está determinado por el operador, que convierte los valores que necesita antes de realizar la operación solicitada. Estas tablas enumeran los operadores e indican la conversión que se ha realizado en cada tipo de datos en la columna cuando se vincula con el tipo de datos en la fila de intersección.

Nota

Los tipos de datos de texto no se incluyen en estas tablas. Cuando un número se representa como en un formato de texto, en algunos casos, el diseñador de modelos intenta determinar el tipo de número y representarlo como un número.

Suma (+)

ENTERO CURRENCY REAL Fecha y hora
INTEGER ENTERO CURRENCY REAL Fecha y hora
CURRENCY CURRENCY MONEDA REAL Fecha y hora
REAL real REAL REAL Fecha y hora
Fecha y hora Fecha y hora Fecha y hora Fecha y hora Fecha y hora

Por ejemplo, si se usa un número real en una operación de suma en combinación con los datos de moneda, ambos valores se convierten en REAL y el resultado se devuelve como REAL.

Resta (-)

En la tabla siguiente, el encabezado de fila es el minuend (lado izquierdo) y el encabezado de columna es el subtrahend (lado derecho):

ENTERO CURRENCY REAL Fecha y hora
INTEGER ENTERO CURRENCY REAL REAL
CURRENCY CURRENCY MONEDA REAL REAL
REAL real REAL REAL REAL
Fecha y hora Fecha y hora Fecha y hora Fecha y hora Fecha y hora

Por ejemplo, si se usa una fecha en una operación de resta con cualquier otro tipo de datos, ambos valores se convierten en fechas y el valor devuelto también es una fecha.

Nota

Los modelos tabulares también admiten el operador unario - (negativo), pero este operador no cambia el tipo de datos del operando.

Multiplicación (*)

ENTERO CURRENCY REAL Fecha y hora
INTEGER ENTERO CURRENCY REAL ENTERO
CURRENCY MONEDA REAL CURRENCY MONEDA
REAL REAL CURRENCY REAL REAL

Por ejemplo, si un entero se combina con un número real en una operación de multiplicación, ambos números se convierten a números reales y el valor devuelto también es REAL.

División (/)

En la tabla siguiente, el encabezado de fila es el numerador y el encabezado de columna es el denominador: (Fila/Columna)

ENTERO CURRENCY REAL Fecha y hora
INTEGER REAL CURRENCY REAL REAL
CURRENCY MONEDA REAL CURRENCY REAL
REAL real REAL REAL REAL
Fecha y hora real REAL REAL REAL

Por ejemplo, si un entero se combina con un valor de moneda en una operación de división, ambos números se convierten a números reales y el resultado es también un número real.

Operadores de comparación

Solo se admite un conjunto limitado de combinaciones de tipos de datos mixtos para las operaciones de comparación. Para más información, vea Referencia de operadores de DAX.

Control de espacios en blanco, cadenas vacías y cero valores

En la tabla siguiente se resumen las diferencias entre DAX y en Microsoft Excel, de la forma en que se controlan los espacios en blanco:

Expresión DAX Excel
EN BLANCO + EN BLANCO BLANK 0 (cero)
BLANK +5 5 5
EN BLANCO * 5 BLANK 0 (cero)
5/EN BLANCO Infinito Error
0/EN BLANCO NaN Error
EN BLANCO/EN BLANCO BLANK Error
FALSO O EN BLANCO FALSO FALSO
FALSO Y EN BLANCO FALSO FALSO
VERDADERO O EN BLANCO VERDADERO VERDADERO
VERDADERO Y EN BLANCO FALSO VERDADERO
EN BLANCO O EN BLANCO EN BLANCO Error
EN BLANCO Y EN BLANCO BLANK Error

Para obtener información detallada sobre cómo una determinada función u operador trata los valores en blanco, vea los temas de cada función DAX en la sección Referencia de funciones DAX.