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.