En un modelo de datos, cada columna tiene un tipo de datos asociado que especifica el tipo de datos que puede contener la columna: números enteros, números decimales, texto, datos monetarios, fechas y horas, etc. El tipo de datos también determina qué tipos de operaciones puede realizar en la columna y cuánta memoria se necesita para almacenar los valores en la columna.
Si usa el complemento Power Pivot, puede cambiar el tipo de datos de una columna. Es posible que tenga que hacer esto si una columna de fecha se importó como una cadena, pero necesita que sea otra cosa. Para obtener más información, vea Establecer el tipo de datos de una columna en Power Pivot.
En este artículo
Conversión de tipo de datos implícita y explícita en fórmulas DAX
Control de espacios en blanco, cadenas vacías y valores cero
Resumen de tipos de datos
En la tabla siguiente se enumeran los tipos de datos admitidos en un modelo de datos. 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 a uno de estos tipos de datos. Los valores que resultan de las fórmulas también usan estos tipos de datos.
| Tipo de datos en Excel | Tipo de datos en DAX | Descripción |
|---|---|---|
| Número entero | Un valor entero de 64 bits (ocho bytes) 1, 2 | Números que no tienen decimales. Los enteros pueden ser números positivos o negativos, pero deben ser números enteros entre -9,223,372,036,854,775,808 (-2^63) y 9,223,372,036,854,775,807 (2^63-1). |
| Número decimal | Un número real de 64 bits (ocho bytes) 1, 2 | Los números reales son números que pueden tener decimales. Los números reales cubren un amplio rango de valores: Valores negativos desde -1,79E +308 hasta -2,23E -308 Cero Valores positivos desde 2,23E -308 hasta 1,79E + 308 Sin embargo, el número de dígitos significativos está limitado a 15 dígitos decimales. |
| VERDADERO/FALSO | Boolean | Un valor Verdadero o Falso. |
| Texto | String | Cadena de datos de caracteres Unicode. Pueden ser cadenas, números o fechas representadas en un formato de texto. La longitud máxima de la cadena es de 268.435.456 caracteres Unicode (256 megacaracteres) o 536.870.912 bytes. |
| 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 enero de 1900. |
| Moneda | Moneda | El tipo de datos de moneda permite valores entre -922 337 203 685 477,5808 y 922 337 203 685 477,5807 con cuatro dígitos decimales de precisión fija. |
| N/D | En blanco | Un espacio en blanco es un tipo de datos en DAX que representa y reemplaza los nulos SQL. Puede crear un espacio en blanco usando la función EN BLANCO y probar si hay espacios en blanco con la función lógica ESBLANCO. |
1 Las fórmulas DAX no admiten tipos de datos más pequeños que los que aparecen en la tabla.
2 Si intenta importar datos con valores numéricos muy grandes, es posible que se produzca el siguiente error en la importación:
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. La operación ha sido cancelada.
Este error se produce porque Power Pivot usa ese valor para representar valores nulos. Los valores de la lista siguiente son sinónimos del valor nulo:
| Valor |
|---|
| 9223372036854775807 |
| -9223372036854775808 |
| 1,7976931348623158e+308 |
| 2.2250738585072014E-308 |
Quite el valor de los datos e intente importarlos de nuevo.
tipo de datos de tabla
DAX usa un tipo de datos de tabla 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 dé como resultado una tabla; Para algunas funciones, se requiere una referencia a una tabla base. Para obtener información sobre los requisitos de funciones específicas, consulte Referencia de la función DAX.
Conversión de tipo de datos implícita y explícita en fórmulas DAX
Cada función DAX tiene requisitos específicos en cuanto a 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 especificada como argumento no son compatibles con el tipo de datos requerido por la función, DAX en muchos casos devolverá un error. Sin embargo, siempre que sea posible, DAX intentará convertir implícitamente los datos al tipo de datos requerido. Por ejemplo:
- Puede escribir una fecha como una cadena y DAX analizará la cadena e intentará convertirla como uno de los formatos de fecha y hora de Windows.
- Puede sumar VERDADERO + 1 y obtener el resultado 2, ya que VERDADERO 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 suma para obtener un resultado numérico. La siguiente expresión devuelve 44: = "22" + 22
- Si intenta concatenar dos números, Excel los presentará como cadenas y, después, los concatenará. La siguiente expresión 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. Excel realiza conversiones implícitas siempre que sea posible, según lo requiera la operación especificada.
Tabla de conversiones de datos implícitos
El tipo de conversión que se realiza lo determina el operador, que emite los valores que necesita 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 Power Pivot intentará determinar el tipo de número y lo representará como un número.
Suma (+)
| Operador (+) | INTEGER | CURRENCY | REAL | Fecha y hora |
|---|---|---|---|---|
| INTEGER | INTEGER | CURRENCY | REAL | Fecha y hora |
| CURRENCY | CURRENCY | CURRENCY | 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 utiliza un número real en una operación de suma en combinación con datos de moneda, ambos valores se convierten a REAL y el resultado se devuelve como REAL.
Resta (-)
En la tabla siguiente, el encabezado de fila es el minuendo (lado izquierdo) y el encabezado de columna es el sustraendo (lado derecho).
| Operador (-) | INTEGER | CURRENCY | REAL | Fecha y hora |
|---|---|---|---|---|
| INTEGER | INTEGER | CURRENCY | REAL | REAL |
| CURRENCY | CURRENCY | CURRENCY | 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 utiliza 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 de datos también admiten el operador unario, - (negativo), pero este operador no cambia el tipo de datos del operando.
Multiplicación (*)
| Operador (*) | INTEGER | CURRENCY | REAL | Fecha y hora |
|---|---|---|---|---|
| INTEGER | INTEGER | CURRENCY | REAL | INTEGER |
| CURRENCY | CURRENCY | REAL | CURRENCY | CURRENCY |
| 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 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.
| Operador (/) (Fila/Columna) |
INTEGER | CURRENCY | REAL | Fecha y hora |
|---|---|---|---|---|
| INTEGER | REAL | CURRENCY | REAL | REAL |
| CURRENCY | CURRENCY | 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 valores se convierten en números reales y el resultado también es un número real.
Operadores de comparación
En las expresiones de comparación, los valores booleanos se consideran mayores que los valores de cadena y los valores de cadena se consideran mayores que los valores numéricos o de fecha y hora; Se considera que los números y los valores de fecha y hora tienen la misma clasificación. No se realizan conversiones implícitas para valores booleanos o de cadena; BLANK o un valor en blanco se convierte en 0/""/false dependiendo del tipo de datos del otro valor comparado.
Las siguientes expresiones de DAX ilustran este comportamiento:
=IF(FALSE()>,"true","Expression is true", "Expression is false"), return "Expression is true"
=SI("12">12,"La expresión es verdadera", "La expresión es falsa"), devuelve "La expresión es verdadera".
=IF("12"=12,"La expresión es verdadera", "La expresión es falsa"), devuelve "La expresión es falsa"
Las conversiones se realizan implícitamente para los tipos numéricos o de fecha y hora, como se describe en la tabla siguiente:
| Operador de comparación | INTEGER | CURRENCY | REAL | Fecha y hora |
|---|---|---|---|---|
| INTEGER | INTEGER | CURRENCY | REAL | REAL |
| CURRENCY | CURRENCY | CURRENCY | REAL | REAL |
| REAL | REAL | REAL | REAL | REAL |
| Fecha y hora | REAL | REAL | REAL | Fecha y hora |
Control de espacios en blanco, cadenas vacías y valores cero
En DAX, un valor nulo, un valor en blanco, una celda vacía o un valor que falta se representan con el mismo tipo de valor nuevo, un valor en blanco. También puede generar espacios en blanco con la función EN BLANCO o probar si hay espacios en blanco con la función ESBLANCO.
La forma en que se manejan los espacios en blanco en las operaciones, como la suma o la concatenación, depende de la función individual. En la tabla siguiente se resumen las diferencias entre las fórmulas de DAX y Microsoft Excel en la forma en que se manejan los espacios en blanco.
| Expression | DAX | Excel |
|---|---|---|
| EN BLANCO + EN BLANCO | EN BLANCO | 0 (cero) |
| EN BLANCO +5 | 5 | 5 |
| EN BLANCO * 5 | EN BLANCO | 0 (cero) |
| 5/EN BLANCO | Infinity | Error |
| 0/EN BLANCO | NaN | Error |
| EN BLANCO O EN BLANCO | EN BLANCO | Error |
| FALSO O EN BLANCO | FALSO | FALSO |
| FALSO Y EN BLANCO | FALSO | FALSO |
| VERDADERO O EN BLANCO | TRUE | TRUE |
| VERDADERO Y EN BLANCO | 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 u operador concretos controlan los espacios en blanco, consulte los temas individuales de cada función DAX, en la sección Referencia de la función DAX.