Tipos de datos en Power BI DesktopData types in Power BI Desktop

Este artículo describe los tipos de datos admitidos en Power BI Desktop y Expresiones de análisis de datos (DAX).This article describes data types supported in Power BI Desktop and Data Analysis Expressions (DAX).

Cuando se cargan datos en Power BI Desktop, intentará convertir el tipo de datos de la columna de origen en un tipo de datos que admita mejor una visualización de datos, unos cálculos y un almacenamiento más eficiente.When you load data into Power BI Desktop, it will attempt to convert the data type of the source column into a data type that better supports more efficient storage, calculations, and data visualization. Por ejemplo, si una columna de valores que importa desde Excel no tiene ningún valor fraccionario, Power BI Desktop convertirá toda la columna de datos en un tipo de datos de número entero, que es más adecuado para almacenar números enteros.For example, if a column of values you import from Excel has no fractional values, Power BI Desktop will convert the entire column of data to a Whole Number data type, which is better suited for storing integers.

Esto es importante porque algunas funciones DAX tienen requisitos de tipo de datos especiales.This is important because some DAX functions have special data type requirements. Aunque en muchos casos DAX convertirá implícitamente un tipo de datos para usted, hay algunos casos donde no puede.While in many cases DAX will implicitly convert a data type for you, there are some cases where it will not. Por ejemplo, si una función DAX requiere un tipo de datos de fecha y el tipo de datos para la columna es de texto, la función DAX no funcionará correctamente.For instance, if a DAX function requires a Date data type and the data type for your column is Text, the DAX function will not work correctly. Por lo tanto, es importante y útil obtener el tipo de datos correcto para una columna.So, it’s both important and useful to get the correct data type for a column. Las conversiones implícitas se describen más adelante en este artículo.Implicit conversions are described later in this article.

Determinar y especificar el tipo de datos de una columnaDetermine and specify a column’s data type

En Power BI Desktop, puede determinar y especificar un tipo de datos de una columna en el Editor de consultas en la vista de datos o la vista de informes:In Power BI Desktop, you can determine and specify a column’s data type in the Query Editor, or in Data View or Report View:

Tipos de datos del Editor de consultasData types in Query Editor

Tipos de datos en la vista de datos o la vista de informesData types in Data View or Report View

El menú desplegable de tipo de datos en el Editor de consultas tiene dos tipos de datos que no se encuentran presentes actualmente en la vista de informes o de datos: Fecha/hora/zona horaria y Duración.The Data Type drop down in Query Editor has two data types not currently present in Data or Report View: Date/Time/Timezone and Duration. Cuando una columna con estos tipos de datos se carga en el modelo y se visualiza en la vista de datos o de informes, una columna con tipo de datos de fecha/hora/zona horaria se convertirá en una fecha/hora y una columna con un tipo de datos de duración en un número decimal.When a column with these data types are loaded into the model and viewed in Data or Report view, a column with a Date/Time/Timezone data type will be converted into a Date/Time, and a column with a Duration data type is converted into a Decimal Number.

Tipos de númeroNumber types

Power BI Desktop admite tres tipos de números:Power BI Desktop supports three number types:

Números decimales : representa un número de punto flotante de 64 bits (8 bytes).Decimal Number – Represents a 64 bit (eight-byte) floating point number. Es el tipo de número más común y se corresponde con los números de la forma en la que suele pensar en ellos.It’s the most common number type and corresponds to numbers as you usually think of them. Aunque se ha diseñado para controlar los números con valores fraccionarios, también controla números enteros.Although designed to handle numbers with fractional values, it also handles whole numbers. El tipo de número decimal puede controlar los valores negativos entre - 1,79E +308 y -2,23E -308, 0 y valores positivos entre 2,23E -308 y 1,79E +308.The Decimal Number type can handle negative values from -1.79E +308 through -2.23E -308, 0, and positive values from 2.23E -308 through 1.79E + 308. Por ejemplo, los números como 34, 34,01 y 34,000367063 son números decimales válidos.For example, numbers like 34, 34.01, and 34.000367063 are valid decimal numbers. El valor más grande que se puede representar en un tipo de número decimal es de 15 dígitos.The largest value that can be represented in a Decimal Number type is 15 digits long. El separador decimal puede colocarse en cualquier parte del número.The decimal separator can occur anywhere in the number. El tipo de número decimal se corresponde con la forma en la que Excel almacena sus números.The Decimal Number type corresponds to how Excel stores its numbers.

Número decimal fijo : tiene una ubicación fija para el separador decimal.Fixed Decimal Number – Has a fixed location for the decimal separator. El separador decimal siempre tiene cuatro dígitos a la derecha y permite 19 dígitos de importancia.The decimal separator always has four digits to its right and allows for 19 digits of significance. El valor más grande que puede representar es 922.337.203.685.477,5807 (positivo o negativo).The largest value it can represent is 922,337,203,685,477.5807 (positive or negative). El tipo de número decimal fijo es útil en casos donde el redondeo podría producir errores.The Fixed Decimal Number type is useful in cases where rounding might introduce errors. Cuando se trabaja con muchos números que tienen valores fraccionarios pequeños, pueden acumularse a veces y hacer que un número sea ligeramente inferior.When you work with many numbers that have small fractional values they can sometimes accumulate and force a number to be just slightly off. Puesto que se truncan los valores que superan los cuatro dígitos a la derecha del separador decimal, el tipo de decimal fijo puede ayudarle a evitar estos tipos de errores.Since the values past the four digits to the right of decimal separator are truncated, the Fixed Decimal type can help you avoid these kinds of errors. Si está familiarizado con SQL Server, este tipo de datos se corresponde con un decimal de SQL Server (19.4), o con el tipo de datos de moneda en Power Pivot.If you’re familiar with SQL Server, this data type corresponds to SQL Server’s Decimal (19,4), or the Currency Data type in Power Pivot.

Número entero : representa un valor entero de 64 bits (8 bytes).Whole Number – Represents a 64 bit (eight-byte) integer value. Puesto que es un entero, no tiene dígitos a la derecha del separador decimal.Because it’s an integer, it has no digits to the right of the decimal place. Permite 19 dígitos; números enteros positivos o negativos entre -9.223.372.036.854.775.808 (-2^63) y 9.223.372.036.854.775.807 (2^63-1).It allows for 19 digits; positive or negative whole numbers between -9,223,372,036,854,775,808 (-2^63) and 9,223,372,036,854,775,807 (2^63-1). Puede representar el mayor número posible de los distintos tipos de datos numéricos.It can represent the largest possible number of the various numeric data types. Como ocurre con el tipo de decimal fijo, el tipo de número entero puede usarse en casos en los que tenga que controlar el redondeo.As with the Fixed Decimal type, the Whole Number type can be useful in cases where you need to control rounding.

Tipos de fecha y horaDate/time types

Power BI Desktop admite cinco tipos de datos de fecha y hora en la vista de consultas y tres en el modelo y en la vista de informes.Power BI Desktop supports five Date/Time data types in Query View and three in the Report View and model. Tanto la duración como fecha/hora/zona horaria se convierten durante la carga en el modelo.Both Date/Time/Timezone and Duration are converted during load into the model.

Fecha y hora : representa el valor de fecha y hora.Date/Time – Represents both a date and time value. Interiormente, el valor de fecha y hora se almacena como un tipo de número decimal.Underneath the covers, the Date/Time value is stored as a Decimal Number Type. Por lo que realmente puede realizar la conversión de los dos.So you can actually convert between the two. La parte de hora de una fecha se almacena como una fracción en múltiplos enteros de 1/300 segundos (3,33 ms).The time portion of a date is stored as a fraction to whole multiples of 1/300 seconds (3.33ms). Se admiten las fechas entre los años 1900 y 9999.Dates between years 1900 and 9999 are supported.

Fecha : representa solo una fecha (ninguna parte de la hora).Date – Represents just a Date (no time portion). Cuando se convierte en el modelo, una fecha es igual que un valor de fecha y hora con cero para el valor de fracciones.When converted into the model, a Date is the same as a Date/Time value with zero for the fractional value.

Hora : representa precisamente la hora (ninguna parte de la hora).Time – Represents just Time (no Date portion). Cuando se convierte en el modelo, el valor de hora es el mismo que el valor de fecha y hora sin dígitos a la izquierda de la posición decimal.When converted into the model, a Time value is the same as a Date/Time value with no digits to the left of the decimal place.

Fecha/hora/zona horaria : representa una fecha o una hora en UTC.Date/Time/Timezone – Represents a UTC Date/Time. Actualmente, se convierte en fecha y hora cuando se carga en el modelo.Currently, it’s converted into Date/Time when loaded into the model.

Duración : representa un período.Duration – Represents a length of time. Se convierte en el tipo de número decimal cuando se carga en el modelo.It’s converted into a Decimal Number Type when loaded into the model. Como un tipo de número decimal, puede agregarse o quitarse del campo de fecha y hora con resultados correctos.As a Decimal Number type it can be added or subtracted from a Date/Time field with correct results. Como un tipo de número decimal, puede usarlo fácilmente en las visualizaciones que muestran la magnitud.As a Decimal Number type, you can easily use it in visualizations that show magnitude.

Tipo de textoText type

Texto : cadena de datos de caracteres Unicode.Text - A Unicode character data string. Pueden ser cadenas, números o fechas representadas en un formato de texto.Can be strings, numbers or dates represented in a text format. La longitud de cadena máxima es de 268.435.456 caracteres Unicode (256 caracteres mega) o 536.870.912 bytes.Maximum string length is 268,435,456 Unicode characters (256 mega characters) or 536,870,912 bytes.

Tipo verdadero/falsoTrue/false type

Verdadero/Falso : un valor booleano de Verdadero o Falso.True/False – A Boolean value of either a True or False.

Tipo de valores en blanco/NULLBlanks/nulls type

En blanco : es un tipo de datos en DAX que representa y reemplaza a los valores NULL de SQL.Blank - Is a data type in DAX that represents and replaces SQL nulls. Puede crear un espacio en blanco con la función BLANK y probarlos con la función lógica ISBLANK.You can create a blank by using the BLANK function, and test for blanks by using the ISBLANK logical function.

Tipo de datos de tablaTable data type

DAX usa un tipo de datos de tabla en muchas funciones, como las agregaciones y los cálculos de inteligencia de tiempo.DAX uses a table data type in many functions, such as aggregations and time intelligence calculations. Algunas funciones requieren una referencia a una tabla; otras funciones devuelven una tabla que puede usarse como entrada para otras funciones.Some functions require a reference to a table; other functions return a table that can then be used as input to other functions. 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.In some functions that require a table as input, you can specify an expression that evaluates to a table; for some functions, a reference to a base table is required. Para información acerca de los requisitos de funciones específicas, consulte Referencia de funciones DAX.For information about the requirements of specific functions, see DAX Function Reference.

Conversión de tipos de datos implícita y explícita en las fórmulas DAXImplicit and explicit data type conversion in DAX formulas

Cada función DAX tiene requisitos concretos según los tipos de datos que se usan como entradas y salidas.Each DAX function has specific requirements as to the types of data that are used as inputs and outputs. Por ejemplo, algunas funciones requieren enteros para algunos argumentos y fechas para otros; otras funciones requieren texto o tablas.For example, some functions require integers for some arguments and dates for others; other functions require text or tables.

Si los datos de la columna que especifica como un argumento no son compatibles con el tipo de datos requerido por la función, DAX devolverá un error en muchos casos.If the data in the column you specify as an argument is incompatible with the data type required by the function, DAX in many cases will return an error. Sin embargo, siempre que sea posible, DAX intentará convertir implícitamente los datos en el tipo de datos necesario.However, wherever possible DAX will attempt to implicitly convert the data to the required data type. Por ejemplo:For example:

  • Puede escribir una fecha como una cadena y DAX analizará la cadena e intentará convertirla a uno de los formatos de fecha y hora de Windows.You can type a date as a string, and DAX will parse the string and attempt to cast it as one of the Windows date and time formats.
  • 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.You can add TRUE + 1 and get the result 2, because TRUE is implicitly converted to the number 1 and the operation 1+1 is performed.
  • 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.If you add values in two columns, and one value happens to be represented as text ("12") and the other as a number (12), DAX implicitly converts the string to a number and then does the addition for a numeric result. La expresión siguiente devuelve 44: = "22" + 22.The following expression returns 44: = "22" + 22.
  • Si intenta concatenar dos números, Excel los mostrará como cadenas y, a continuación, realizará la concatenación.If you attempt to concatenate two numbers, Excel will present them as strings and then concatenate. La expresión siguiente devuelve "1234": = 12 y 34.The following expression returns "1234": = 12 & 34.

Tabla de conversiones de datos implícitasTable of implicit data conversions

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.The type of conversion that is performed is determined by the operator, which casts the values it requires before performing the requested operation. 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.These tables list the operators, and indicate the conversion that is performed on each data type in the column when it is paired with the data type in the intersecting row.

Nota

Los tipos de datos de texto no se incluyen en estas tablas.Text data types are not included in these tables. Cuando un número se representa en formato de texto, en algunos casos, Power BI intentará determinar el tipo de número y representarlo como un número.When a number is represented as in a text format, in some cases Power BI will attempt to determine the number type and represent it as a number.

Suma (+)Addition (+)

Operador (+)Operator(+) ENTEROINTEGER MONEDACURRENCY REALREAL Fecha y horaDate/time
ENTEROINTEGER ENTEROINTEGER MONEDACURRENCY REALREAL Fecha y horaDate/time
MONEDACURRENCY MONEDACURRENCY MONEDACURRENCY REALREAL Fecha y horaDate/time
REALREAL REALREAL REALREAL REALREAL Fecha y horaDate/time
Fecha y horaDate/time Fecha y horaDate/time Fecha y horaDate/time Fecha y horaDate/time Fecha y horaDate/time

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.For example, if a real number is used in an addition operation in combination with currency data, both values are converted to REAL, and the result is returned as REAL.

Resta (-)Subtraction (-)

En la tabla siguiente, el encabezado de fila es el minuendo (izquierda) y el encabezado de columna es el substraendo (derecha).In the following table the row header is the minuend (left side) and the column header is the subtrahend (right side).

Operador (-)Operator(-) ENTEROINTEGER MONEDACURRENCY REALREAL Fecha y horaDate/time
ENTEROINTEGER ENTEROINTEGER MONEDACURRENCY REALREAL REALREAL
MONEDACURRENCY MONEDACURRENCY MONEDACURRENCY REALREAL REALREAL
REALREAL REALREAL REALREAL REALREAL REALREAL
Fecha y horaDate/time Fecha y horaDate/time Fecha y horaDate/time Fecha y horaDate/time Fecha y horaDate/time

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.For example, if a date is used in a subtraction operation with any other data type, both values are converted to dates, and the return value is also a date.

Nota

Los modelos de datos también admiten el operador unario, - (negativo), pero este operador no cambia el tipo de datos del operando.Data models also support the unary operator, - (negative), but this operator does not change the data type of the operand.

Multiplicación(*)Multiplication(*)

Operator(*)Operator(*) ENTEROINTEGER MONEDACURRENCY REALREAL Fecha y horaDate/time
ENTEROINTEGER ENTEROINTEGER MONEDACURRENCY REALREAL ENTEROINTEGER
MONEDACURRENCY MONEDACURRENCY REALREAL MONEDACURRENCY MONEDACURRENCY
REALREAL REALREAL MONEDACURRENCY REALREAL REALREAL

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.For example, if an integer is combined with a real number in a multiplication operation, both numbers are converted to real numbers, and the return value is also REAL.

División (/)Division (/)

En la siguiente tabla, el encabezado de fila es el numerador y el encabezado de columna es el denominador.In the following table, the row header is the numerator and the column header is the denominator.

Operador (/) (fila/columna)Operator(/) (Row/Column) ENTEROINTEGER MONEDACURRENCY REALREAL Fecha y horaDate/time
ENTEROINTEGER REALREAL MONEDACURRENCY REALREAL REALREAL
MONEDACURRENCY MONEDACURRENCY REALREAL MONEDACURRENCY REALREAL
REALREAL REALREAL REALREAL REALREAL REALREAL
Fecha y horaDate/time REALREAL REALREAL REALREAL REALREAL

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.For example, if an integer is combined with a currency value in a division operation, both values are converted to real numbers, and the result is also a real number.

Operadores de comparaciónComparison operators

En las expresiones de comparación, los valores booleanos se consideran mayores que los valores de cadena y valores de cadena se consideran mayores que los valores numéricos o de fecha y hora; los números y valores de fecha y hora se consideran que tienen el mismo rango.In comparison expressions, Boolean values are considered greater than string values and string values are considered greater than numeric or date/time values; numbers and date/time values are considered to have the same rank. No se realizan conversiones implícitas para valores booleanos o de cadena; Un valor en blanco o EN BLANCO se convierte en 0 / "" / falso según el tipo de datos del otro valor comparado.No implicit conversions are performed for Boolean or string values; BLANK or a blank value is converted to 0/""/false depending on the data type of the other compared value.

Las siguientes expresiones DAX muestran este comportamiento:The following DAX expressions illustrate this behavior:

=IF(FALSE()>"true","Expression is true", "Expression is false"), devuelve "Expression is true"=IF(FALSE()>"true","Expression is true", "Expression is false"), returns "Expression is true"

=IF("12">12,"Expression is true", "Expression is false"), devuelve "Expression is true".=IF("12">12,"Expression is true", "Expression is false"), returns "Expression is true".

=IF("12"=12,"Expression is true", "Expression is false"), devuelve "Expression is false"=IF("12"=12,"Expression is true", "Expression is false"), returns "Expression is false"

Las conversiones se realizan implícitamente para tipos de fecha y hora, o numéricos, como se describe en la tabla siguiente:Conversions are performed implicitly for numeric or date/time types as described in the following table:

Operadores de comparaciónComparison Operator ENTEROINTEGER MONEDACURRENCY REALREAL Fecha y horaDate/time
ENTEROINTEGER ENTEROINTEGER MONEDACURRENCY REALREAL REALREAL
MONEDACURRENCY MONEDACURRENCY MONEDACURRENCY REALREAL REALREAL
REALREAL REALREAL REALREAL REALREAL REALREAL
Fecha y horaDate/time REALREAL REALREAL REALREAL Fecha y horaDate/Time

Administración de los espacios en blanco, las cadenas vacías y valores ceroHandling blanks, empty strings, and zero values

En DAX, un valor NULL, en valor en blanco, una celda vacía o un valor que falta se representan mediante el mismo tipo de valor nuevo, EN BLANCO.In DAX, a null, blank value, empty cell, or a missing value are all represented by the same new value type, a BLANK. También puede generar espacios en blanco con la función BLANK o probarlos con la función ISBLANK.You can also generate blanks by using the BLANK function, or test for blanks by using the ISBLANK function.

La forma en la que se administran los espacios en blanco en operaciones como la adición o la concatenación depende de la función individual.How blanks are handled in operations such as addition or concatenation depends on the individual function. En la tabla siguiente se resumen las diferencias entre las fórmulas de DAX y Microsoft Excel en el tratamiento de los espacios en blanco.The following table summarizes the differences between DAX and Microsoft Excel formulas, in the way that blanks are handled.

ExpresiónExpression DAXDAX ExcelExcel
EN BLANCO + EN BLANCOBLANK + BLANK EN BLANCOBLANK 0 (cero)0(zero)
En blanco + 5BLANK + 5 55 55
EN BLANCO * 5BLANK * 5 EN BLANCOBLANK 0 (cero)0(zero)
5/EN BLANCO5/BLANK InfinitoInfinity ErrorError
0/EN BLANCO0/BLANK NaNNaN ErrorError
EN BLANCO/EN BLANCOBLANK/BLANK EN BLANCOBLANK ErrorError
FALSO O EN BLANCOFALSE OR BLANK FALSOFALSE FALSOFALSE
FALSO Y EN BLANCOFALSE AND BLANK FALSOFALSE FALSOFALSE
VERDADERO O EN BLANCOTRUE OR BLANK VERDADEROTRUE VERDADEROTRUE
VERDADERO Y EN BLANCOTRUE AND BLANK FALSOFALSE VERDADEROTRUE
EN BLANCO O EN BLANCOBLANK OR BLANK EN BLANCOBLANK ErrorError
EN BLANCO Y EN BLANCOBLANK AND BLANK EN BLANCOBLANK ErrorError