Tipos de dados no Power BI DesktopData types in Power BI Desktop

Este artigo descreve os tipos de dados com suporte no Power BI Desktop e DAX (Data Analysis Expressions).This article describes data types supported in Power BI Desktop and Data Analysis Expressions (DAX).

Quando você carrega dados no Power BI Desktop, ele tenta converter o tipo de dados da coluna de origem em um tipo de dados que dá melhor suporte a armazenamento, cálculos e visualização de dados mais eficientes.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 exemplo, se uma coluna de valores que você importa do Excel não tem nenhum valor fracionário, o Power BI Desktop converterá toda a coluna de dados para um tipo de dados de Número Inteiro, que é mais adequado para armazenar inteiros.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.

Isso é importante porque algumas funções DAX têm requisitos especiais de tipo de dados.This is important because some DAX functions have special data type requirements. Embora em muitos casos o DAX converta implicitamente um determinado tipo de dados para você, há alguns casos em que isso não ocorrerá.While in many cases DAX will implicitly convert a data type for you, there are some cases where it will not. Por exemplo, se uma função DAX requer um tipo de dados de Data e o tipo de dados para a coluna é Texto, a função DAX não funcionará corretamente.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. Portanto, é importante e útil obter o tipo de dados correto para uma coluna.So, it’s both important and useful to get the correct data type for a column. Conversões implícitas são descritas posteriormente neste artigo.Implicit conversions are described later in this article.

Determinar e especificar o tipo de dados da colunaDetermine and specify a column’s data type

Na área de trabalho do Power BI, você pode determinar e especificar o tipo de dados de uma coluna no Editor de Consultas, ou na Exibição de Dados ou de Relatório: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 dados no Editor de consultasData types in Query Editor

Tipos de dados na Exibição de dados ou de relatórioData types in Data View or Report View

O drop-down Tipo de Dados no Editor de Consultas tem dois tipos de dados que não estão presentes atualmente na Exibição de Dados ou de Relatório: Data/Hora/Fuso horário e Duração.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. Quando uma coluna com esses tipos de dados é carregada no modelo e exibida na exibição de Dados ou de Relatório, uma coluna com um tipo de dado de Data/Hora/Fuso horário é convertida em um valor de Data/Hora, enquanto uma coluna com um tipo de dados de Duração é convertida em um 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

O Power BI Desktop dá suporte a três tipos de número:Power BI Desktop supports three number types:

Número Decimal – representa um número de ponto flutuante (oito bytes) de 64 bits.Decimal Number – Represents a 64 bit (eight-byte) floating point number. É o tipo de número mais comum e corresponde aos números como você normalmente os imagina.It’s the most common number type and corresponds to numbers as you usually think of them. Embora seja projetado para lidar com números com valores fracionários, ele também lida com números inteiros.Although designed to handle numbers with fractional values, it also handles whole numbers. O tipo de Número Decimal pode lidar com valores negativos de -1,79E +308 a -2,23E -308, 0, e valores positivos de 2,23E -308 a 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 exemplo, números como 34, 34,01 e 34,000367063 são números decimais válidos.For example, numbers like 34, 34.01, and 34.000367063 are valid decimal numbers. O maior valor que pode ser representado em um tipo de Número Decimal tem 15 dígitos.The largest value that can be represented in a Decimal Number type is 15 digits long. O separador decimal pode ocorrer em qualquer lugar no número.The decimal separator can occur anywhere in the number. O tipo de Número Decimal corresponde a como o Excel armazena seus números.The Decimal Number type corresponds to how Excel stores its numbers.

Número Decimal Fixo – tem um local para o separador decimal fixo.Fixed Decimal Number – Has a fixed location for the decimal separator. O separador decimal tem sempre quatro dígitos à direita e permite 19 dígitos de significância.The decimal separator always has four digits to its right and allows for 19 digits of significance. O maior valor que ele pode representar é 922.337.203.685.477,5807 (positivo ou negativo).The largest value it can represent is 922,337,203,685,477.5807 (positive or negative). O tipo de Número Decimal Fixo é útil em casos em que o arredondamento pode introduzir erros.The Fixed Decimal Number type is useful in cases where rounding might introduce errors. Quando você trabalha com muitos números que têm valores fracionários pequenos eles podem, às vezes, se acumular e forçar um número a ficar ligeiramente fora do valor correto.When you work with many numbers that have small fractional values they can sometimes accumulate and force a number to be just slightly off. Como os valores após os quatro dígitos à direita do separador decimal são truncados, o tipo Decimal Fixo pode ajudá-lo a evitar esses tipos de erros.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. Se você está familiarizado com o SQL Server, esse tipo de dados correspondente ao Decimal (19,4) do SQL Server, ou ao tipo de Dados de Moeda no 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 Inteiro – representa um valor inteiro (oito bytes) de 64 bits.Whole Number – Represents a 64 bit (eight-byte) integer value. Como é um número inteiro, ele não tem nenhum dígito à direita da casa decimal.Because it’s an integer, it has no digits to the right of the decimal place. Ele permite 19 dígitos; números inteiros positivos ou negativos entre -9.223.372.036.854.775.808 (-2^63) e 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). Ele pode representar o maior número possível dos diversos tipos de dados numéricos.It can represent the largest possible number of the various numeric data types. Assim como com o tipo Decimal Fixo, o tipo de Número Inteiro pode ser útil em casos nos quais você precisa controlar o arredondamento.As with the Fixed Decimal type, the Whole Number type can be useful in cases where you need to control rounding.

Tipos de data/horaDate/time types

O Power BI Desktop dá suporte a cinco tipos de dados de Data/Hora na Visualização da Consulta e três no modelo e Exibição de Relatório.Power BI Desktop supports five Date/Time data types in Query View and three in the Report View and model. Tanto Data/Hora/Fuso horário quanto a Duração são convertidos durante o carregamento para o modelo.Both Date/Time/Timezone and Duration are converted during load into the model.

Data/Hora – representa um valor de data e um valor temporal.Date/Time – Represents both a date and time value. Nos bastidores, o valor de Data/Hora é armazenado como um Tipo de Número Decimal.Underneath the covers, the Date/Time value is stored as a Decimal Number Type. Então, na verdade, é possível converter entre os dois.So you can actually convert between the two. A parte de uma data referente à hora é armazenada como uma fração a múltiplos inteiros 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). Há suporte para datas entre os anos de 1900 e 9999.Dates between years 1900 and 9999 are supported.

Data – representa apenas uma Data (sem parte referente à hora).Date – Represents just a Date (no time portion). Quando convertido para o modelo, uma Data é o mesmo que um valor de Data/Hora com zero como o valor fracionário.When converted into the model, a Date is the same as a Date/Time value with zero for the fractional value.

Hora – representa apenas a Hora (nenhuma parte referente à Data).Time – Represents just Time (no Date portion). Quando convertido para o modelo, um valor de Hora é igual a um valor de Data/Hora sem dígitos à esquerda da casa 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.

Data/Hora/Fuso horário – representa uma Data/Hora no formato UTC.Date/Time/Timezone – Represents a UTC Date/Time. Atualmente, ele é convertido em Data/Hora quando é carregado no modelo.Currently, it’s converted into Date/Time when loaded into the model.

Duração – representa um intervalo de tempo.Duration – Represents a length of time. Ele é convertido em um Tipo de Número Decimal quando é carregado no modelo.It’s converted into a Decimal Number Type when loaded into the model. Como um tipo de Número Decimal, ele pode ser adicionado ou subtraído de um campo de Data/Hora com resultados corretos.As a Decimal Number type it can be added or subtracted from a Date/Time field with correct results. Como um tipo de Número Decimal, você pode usá-lo facilmente em visualizações que mostram a magnitude.As a Decimal Number type, you can easily use it in visualizations that show magnitude.

Tipo de textoText type

Texto - uma cadeia de caracteres de dados de caractere Unicode.Text - A Unicode character data string. Pode ser composto de cadeias de caracteres, números ou datas representados em um formato de texto.Can be strings, numbers or dates represented in a text format. O comprimento máximo da cadeia de caracteres é 268.435.456 caracteres Unicode (caracteres de 256 megabytes) ou 536.870.912 bytes.Maximum string length is 268,435,456 Unicode characters (256 mega characters) or 536,870,912 bytes.

Tipo verdadeiro/falsoTrue/false type

Verdadeiro/Falso – um valor Booliano de Verdadeiro ou Falso.True/False – A Boolean value of either a True or False.

Tipo em branco/nulosBlanks/nulls type

Em branco - é um tipo de dados em DAX que representa e substitui nulos SQL.Blank - Is a data type in DAX that represents and replaces SQL nulls. Você também pode gerar um elemento em branco usando a função BLANK e testar elementos em branco usando a função 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 dados de tabelaTable data type

O DAX usa um tipo de dados de tabela em muitas funções, como agregações e cálculos de inteligência de dados temporais.DAX uses a table data type in many functions, such as aggregations and time intelligence calculations. Algumas funções exigem uma referência a uma tabela; outras funções retornam uma tabela que pode ser usada como entrada para outras funções.Some functions require a reference to a table; other functions return a table that can then be used as input to other functions. Em algumas funções que exigem uma tabela como entrada, você pode especificar uma expressão que é avaliada como uma tabela; para algumas funções, é necessária uma referência a uma tabela 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 obter informações sobre os requisitos de funções específicas, consulte Referência de função DAX.For information about the requirements of specific functions, see DAX Function Reference.

Conversão implícita e explícita de tipo de dados em fórmulas DAXImplicit and explicit data type conversion in DAX formulas

Cada função DAX tem requisitos específicos quanto aos tipos de dados que são usados como entradas e saídas.Each DAX function has specific requirements as to the types of data that are used as inputs and outputs. Por exemplo, algumas funções exigem inteiros para alguns argumentos e datas para outros; outras funções exigem texto ou tabelas.For example, some functions require integers for some arguments and dates for others; other functions require text or tables.

Se os dados na coluna que você especifica como um argumento são incompatíveis com o tipo de dados exigido pela função, em muitos casos o DAX retornará um erro.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. No entanto, sempre que possível, o DAX tentará converter implicitamente os dados para o tipo de dados necessário.However, wherever possible DAX will attempt to implicitly convert the data to the required data type. Por exemplo:For example:

  • Você pode digitar uma data como uma cadeia de caracteres e o DAX analisará a cadeia de caracteres e tentará transmiti-la como um dos formatos de data e hora do 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.
  • Você pode adicionar TRUE + 1 e obter o resultado 2, pois TRUE é implicitamente convertido para o número 1 e a operação 1+1 é executada.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.
  • Se você adicionar valores em duas colunas e um valor for representado como texto ("12") e o outro como um número (12), o DAX converte implicitamente a cadeia de caracteres em um número e, em seguida, faz a adição para chegar a um 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. A expressão a seguir retorna 44: = "22" + 22.The following expression returns 44: = "22" + 22.
  • Se você tentar concatenar dois números, o Excel vai apresentá-los como cadeias de caracteres e, em seguida, concatenar.If you attempt to concatenate two numbers, Excel will present them as strings and then concatenate. A expressão a seguir retorna "1234": = 12 & 34.The following expression returns "1234": = 12 & 34.

Tabela de conversões implícitas de dadosTable of implicit data conversions

O tipo de conversão executada é determinado pelo operador, que transmite os valores que ele requer antes de executar a operação solicitada.The type of conversion that is performed is determined by the operator, which casts the values it requires before performing the requested operation. Essas tabelas listam os operadores e indicam a conversão que é realizada em cada tipo de dados na coluna quando ele é emparelhado com o tipo de dados na linha que intersecciona essa coluna.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.

Observação

Tipos de dados de texto não são incluídos nessas tabelas.Text data types are not included in these tables. Quando um número é representado em um formato de texto, em alguns casos o Power BI tentará determinar o tipo de número e representá-lo como um 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.

Adição (+)Addition (+)

Operador(+)Operator(+) INTEGERINTEGER CURRENCYCURRENCY REALREAL Date/timeDate/time
INTEGERINTEGER INTEGERINTEGER CURRENCYCURRENCY REALREAL Date/timeDate/time
CURRENCYCURRENCY CURRENCYCURRENCY CURRENCYCURRENCY REALREAL Date/timeDate/time
REALREAL REALREAL REALREAL REALREAL Date/timeDate/time
Date/timeDate/time Date/timeDate/time Date/timeDate/time Date/timeDate/time Date/timeDate/time

Por exemplo, se um número real é usado em uma operação de adição em combinação com dados de moedas, os dois valores são convertidos em REAL e o resultado é retornado 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.

Subtração (-)Subtraction (-)

Na tabela a seguir, o cabeçalho de linha é o minuendo (lado esquerdo) e o cabeçalho da coluna é o subtraendo (lado direito).In the following table the row header is the minuend (left side) and the column header is the subtrahend (right side).

Operador(-)Operator(-) INTEGERINTEGER CURRENCYCURRENCY REALREAL Date/timeDate/time
INTEGERINTEGER INTEGERINTEGER CURRENCYCURRENCY REALREAL REALREAL
CURRENCYCURRENCY CURRENCYCURRENCY CURRENCYCURRENCY REALREAL REALREAL
REALREAL REALREAL REALREAL REALREAL REALREAL
Date/timeDate/time Date/timeDate/time Date/timeDate/time Date/timeDate/time Date/timeDate/time

Por exemplo, se uma data é usada em uma operação de subtração com qualquer outro tipo de dados, ambos os valores são convertidos em datas e o valor retornado também é uma data.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.

Observação

Modelos de dados também são compatíveis com o operador unário, - (negativo), mas esse operador não altera o tipo de dados do operando.Data models also support the unary operator, - (negative), but this operator does not change the data type of the operand.

Multiplicação(*)Multiplication(*)

Operador()Operator() INTEGERINTEGER CURRENCYCURRENCY REALREAL Date/timeDate/time
INTEGERINTEGER INTEGERINTEGER CURRENCYCURRENCY REALREAL INTEGERINTEGER
CURRENCYCURRENCY CURRENCYCURRENCY REALREAL CURRENCYCURRENCY CURRENCYCURRENCY
REALREAL REALREAL CURRENCYCURRENCY REALREAL REALREAL

Por exemplo, se um inteiro for combinado com um número real em uma operação de multiplicação, os dois números são convertidos em números reais, e o valor retornado também é 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.

Divisão (/)Division (/)

Na tabela a seguir, o cabeçalho da linha é o numerador e o cabeçalho da coluna é o denominador.In the following table, the row header is the numerator and the column header is the denominator.

Operador(/) (Linha/Coluna)Operator(/) (Row/Column) INTEGERINTEGER CURRENCYCURRENCY REALREAL Date/timeDate/time
INTEGERINTEGER REALREAL CURRENCYCURRENCY REALREAL REALREAL
CURRENCYCURRENCY CURRENCYCURRENCY REALREAL CURRENCYCURRENCY REALREAL
REALREAL REALREAL REALREAL REALREAL REALREAL
Date/timeDate/time REALREAL REALREAL REALREAL REALREAL

Por exemplo, se um inteiro for combinado com um valor de moeda em uma operação de divisão, os dois valores são convertidos em números reais e o resultado também é um 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 comparaçãoComparison operators

Em expressões de comparação, valores Boolianos são considerados maiores que valores de cadeia de caracteres, enquanto valores de cadeia de caracteres são considerados maiores que valores numéricos ou de data/hora; números e valores de data/hora são considerados como tendo a mesma classificação.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. Nenhuma conversão implícita é executada para valores de cadeia de caracteres ou Boolianos; BLANK ou um valor em branco é convertido em 0/""/false, dependendo do tipo de dados do outro 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.

As seguintes expressões DAX ilustram esse comportamento:The following DAX expressions illustrate this behavior:

=IF(FALSE()>"true","Expression is true", "Expression is false"), retorna "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"), retorna "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"), retorna "Expression is false"=IF("12"=12,"Expression is true", "Expression is false"), returns "Expression is false"

As conversões são executadas implicitamente para tipos numéricos ou de data/hora, conforme descrito na tabela a seguir:Conversions are performed implicitly for numeric or date/time types as described in the following table:

Operador de ComparaçãoComparison Operator INTEGERINTEGER CURRENCYCURRENCY REALREAL Date/timeDate/time
INTEGERINTEGER INTEGERINTEGER CURRENCYCURRENCY REALREAL REALREAL
CURRENCYCURRENCY CURRENCYCURRENCY CURRENCYCURRENCY REALREAL REALREAL
REALREAL REALREAL REALREAL REALREAL REALREAL
Date/timeDate/time REALREAL REALREAL REALREAL Date/timeDate/Time

Tratamento de elementos em branco, cadeias de caracteres vazias e valores zeroHandling blanks, empty strings, and zero values

No DAX, um valor nulo, valor em branco, célula vazia ou um valor ausente são todos representados pelo mesmo novo tipo de valor, um BLANK.In DAX, a null, blank value, empty cell, or a missing value are all represented by the same new value type, a BLANK. Você também pode gerar elementos em branco usando a função BLANK, ou testar elementos em branco usando a função ISBLANK.You can also generate blanks by using the BLANK function, or test for blanks by using the ISBLANK function.

O modo como os elementos em branco são tratados em operações como adição ou concatenação depende da função individual.How blanks are handled in operations such as addition or concatenation depends on the individual function. A tabela a seguir resume as diferenças entre as fórmulas DAX e do Microsoft Excel, da maneira que os elementos em branco são tratados.The following table summarizes the differences between DAX and Microsoft Excel formulas, in the way that blanks are handled.

ExpressionExpression DAXDAX ExcelExcel
BLANK + BLANKBLANK + BLANK BLANKBLANK 0(zero)0(zero)
BLANK + 5BLANK + 5 55 55
BLANK * 5BLANK * 5 BLANKBLANK 0(zero)0(zero)
5/BLANK5/BLANK InfinityInfinity ErrorError
0/BLANK0/BLANK NaNNaN ErrorError
BLANK/BLANKBLANK/BLANK BLANKBLANK ErrorError
FALSE OR BLANKFALSE OR BLANK FALSEFALSE FALSEFALSE
FALSE AND BLANKFALSE AND BLANK FALSEFALSE FALSEFALSE
TRUE OR BLANKTRUE OR BLANK TRUETRUE TRUETRUE
TRUE AND BLANKTRUE AND BLANK FALSEFALSE TRUETRUE
BLANK OR BLANKBLANK OR BLANK BLANKBLANK ErrorError
BLANK AND BLANKBLANK AND BLANK BLANKBLANK ErrorError