Compartir a través de


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 modelos tabulares y se describe la conversión implícita de tipos de datos cuando los datos se calculan o se usan en una fórmula de expresiones de análisis de datos (DAX).

Tipos de datos usados en modelos tabulares

Al importar datos o usar un valor en una fórmula, incluso si el origen de datos original contiene un tipo de datos diferente, los datos se convierten en uno de los siguientes tipos de datos. Los valores resultantes de las fórmulas también usan estos tipos de datos.

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

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

Tipo de datos en el modelo Tipo de datos en DAX Descripción
Número entero Valor entero de 64 bits (ocho bytes) *

Nota:
Las fórmulas DAX no admiten tipos de datos demasiado pequeños para contener el valor mínimo enumerado 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).
Número decimal Número real de 64 bits (ocho bytes) *

Nota:
Las fórmulas DAX no admiten tipos de datos demasiado pequeños para contener el valor mínimo enumerado en la descripción.
Los números reales son números que pueden tener posiciones decimales. Los números reales cubren una amplia gama de valores:

Valores negativos de -1,79E +308 a -2.23E -308

Cero

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

Sin embargo, el número de dígitos significativos se limita a 15 dígitos decimales.
Booleano Booleano Un valor Verdadero o Falso.
Mensaje de texto Cuerda Cadena de datos de caracteres Unicode. Puede ser cadenas, números o fechas representadas en un formato de texto. El tamaño máximo efectivo de una cadena está sujeto a un límite de bytes de 32767.
Binario Cuerda Datos binarios no estructurados, por ejemplo, imágenes. Las columnas con este tipo de datos tienen una funcionalidad limitada en DAX. El tamaño máximo efectivo de un valor de datos binarios está sujeto a un límite de bytes de 67108864.
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.
Divisa Divisa El tipo de datos currency permite valores de -922.337.203.685.477,5807 a 922.337.203.685.477,5806 con cuatro dígitos decimales de precisión fija.
Variante Variante Se usa para expresiones, como medidas DAX, que pueden devolver tipos de datos diferentes. Por ejemplo, una medida DAX que devuelve un número entero o una cadena de texto será del tipo variante.
No disponible En blanco Un valor en blanco es un tipo de datos en DAX que representa y reemplaza los valores NULL de SQL. Puede crear un espacio en blanco mediante la función BLANK y probar los espacios en blanco mediante la función lógica ISBLANK.

* Si intenta importar datos con valores numéricos grandes, puede producirse un error en la importación con el siguiente error:

Error de 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 usa ese valor para representar valores NULL. Los valores de la lista siguiente son sinónimos del valor NULL mencionado anteriormente:

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

Quite el valor de sus datos e intente importarlo de nuevo.

Nota:

No se puede importar desde una columna varchar(max) que contenga una longitud de cadena de más de 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 se puede usar como entrada para otras funciones. En algunas funciones que requieren una tabla como entrada, puede especificar una expresión que se evalúe como una tabla; para algunas funciones, se requiere una referencia a una tabla base. Para obtener información sobre los requisitos de funciones específicas, vea 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 específicos sobre 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 especifique 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 intenta 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 agregar TRUE + 1 y obtener el resultado 2, ya que TRUE se convierte implícitamente en el 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 adición de 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 tipos de datos que se realizan en fórmulas. En general, el diseñador de modelos semánticos se comporta como Microsoft Excel y realiza conversiones implícitas siempre que sea posible cuando sea necesario en la operación especificada.

Tabla de conversiones de datos implícitas

El tipo de conversión que se realiza es determinado por el operador, que convierte los valores que requiere antes de realizar la operación solicitada. Estas tablas enumeran los operadores e indican la conversión que se realiza en cada tipo de datos de la columna cuando se empareja con el tipo de datos de 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 MONEDA REAL Fecha y hora
INTEGER ENTERO MONEDA REAL Fecha y hora
DIVISA MONEDA 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 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 MONEDA REAL Fecha y hora
INTEGER ENTERO MONEDA REAL REAL
DIVISA MONEDA 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 MONEDA REAL Fecha y hora
INTEGER ENTERO MONEDA REAL ENTERO
DIVISA MONEDA REAL MONEDA MONEDA
REAL REAL MONEDA 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 en 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 MONEDA REAL Fecha y hora
INTEGER REAL MONEDA REAL REAL
DIVISA MONEDA REAL MONEDA 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 valores se convierten en números reales y el resultado también es 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, consulte Referencia del operador DAX.

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

En la tabla siguiente se resumen las diferencias entre DAX y Microsoft Excel, en cómo se controlan los espacios en blanco.

Expresión DAX Excel
BLANK + BLANK EN BLANCO 0 (cero)
BLANK +5 5 5
BLANK * 5 EN BLANCO 0 (cero)
5/EN_BLANCO Infinidad Error
0/VACÍO NaN Error
BLANK/BLANK EN BLANCO Error
FALSO O VACÍO FALSO FALSO
FALSO Y VACÍO FALSO FALSO
TRUE O BLANK VERDADERO VERDADERO
TRUE Y BLANK FALSO VERDADERO
EN BLANCO O EN BLANCO EN BLANCO Error
EN BLANCO Y EN BLANCO EN BLANCO Error

Para obtener más información sobre cómo una función o un operador concreto controla los espacios en blanco, consulte los temas individuales de cada función DAX, en la sección Referencia de la función DAX.