Types de données dans Power BI DesktopData types in Power BI Desktop

Cet article décrit les types de données pris en charge dans Power BI Desktop et Data Analysis Expressions (DAX).This article describes data types supported in Power BI Desktop and Data Analysis Expressions (DAX).

Lorsque vous chargez des données dans Power BI Desktop, celui-ci tente de convertir le type de données de la colonne source en un type de données qui prend mieux en charge un stockage, des calculs et une visualisation des données plus efficaces.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. Par exemple, si une colonne de valeurs que vous importez à partir d’Excel ne contient aucune valeur fractionnaire, Power BI Desktop convertit toute la colonne de données en type de données Nombre entier, qui convient davantage au stockage des nombres entiers.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.

Ceci est important, car certaines fonctions DAX ont des exigences particulières en matière de type de données.This is important because some DAX functions have special data type requirements. Même si très souvent DAX convertit implicitement un type de données pour vous, cela n’est pas toujours le cas.While in many cases DAX will implicitly convert a data type for you, there are some cases where it will not. Par exemple, si une fonction DAX nécessite un type de données Date et que le type de données de votre colonne est Texte, la fonction DAX ne fonctionnera pas correctement.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. Il est donc important et utile d’obtenir le type de données correct pour une colonne.So, it’s both important and useful to get the correct data type for a column. Les conversions implicites sont décrites plus loin dans cet article.Implicit conversions are described later in this article.

Déterminer et spécifier le type de données d’une colonneDetermine and specify a column’s data type

Dans Power BI Desktop, vous pouvez déterminer et spécifier le type de données d’une colonne dans l’Éditeur de requête ou dans la vue Données ou Rapport :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:

Types de données dans l’Éditeur de requêteData types in Query Editor

Types de données dans la vue Données ou RapportData types in Data View or Report View

La liste déroulante Type de données dans l’Éditeur de requête comporte deux types de données actuellement absents dans la vue Données ou Rapport : Date/Heure/Fuseau horaire et Durée.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. Lorsqu’une colonne avec ces types de données est chargée dans le modèle et affichée dans la vue Données ou Rapport, une colonne avec le type de données Date/Heure/Fuseau horaire est convertie au format Date/Heure et une colonne avec le type de données Durée est convertie au format Nombre décimal.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.

Types numériquesNumber types

Power BI Desktop prend en charge trois types numériques :Power BI Desktop supports three number types:

Nombre décimal : représente un nombre à virgule flottante 64 bits (huit octets).Decimal Number – Represents a 64 bit (eight-byte) floating point number. C’est le type numérique le plus courant. Il correspond aux nombres tels qu’on se les représente habituellement.It’s the most common number type and corresponds to numbers as you usually think of them. Bien que conçu pour gérer les nombres avec des valeurs fractionnelles, il gère également les nombres entiers.Although designed to handle numbers with fractional values, it also handles whole numbers. Le type Nombre décimal peut gérer des valeurs négatives comprises entre -1,79E +308 et -2,23E -308, 0, et des valeurs positives comprises entre 2,23E -308 et 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. Par exemple, des nombres comme 34, 34,01 et 34,000367063 sont des nombres décimaux valides.For example, numbers like 34, 34.01, and 34.000367063 are valid decimal numbers. La valeur maximale qui peut être représentée dans un type Nombre décimal a une longueur de 15 chiffres.The largest value that can be represented in a Decimal Number type is 15 digits long. Le séparateur décimal peut figurer n’importe où dans le nombre.The decimal separator can occur anywhere in the number. Le type Nombre décimal correspond à la manière dont Excel stocke les nombres.The Decimal Number type corresponds to how Excel stores its numbers.

Nombre décimal fixe : possède un emplacement fixe pour le séparateur décimal.Fixed Decimal Number – Has a fixed location for the decimal separator. Le séparateur décimal a toujours quatre chiffres à sa droite et autorise 19 chiffres de précision.The decimal separator always has four digits to its right and allows for 19 digits of significance. La plus grande valeur, qu’il peut représenter est 922 337 203 685 477,5807 (positif ou négatif).The largest value it can represent is 922,337,203,685,477.5807 (positive or negative). Le type Nombre décimal fixe est utile dans les cas où l’arrondi peut introduire des erreurs.The Fixed Decimal Number type is useful in cases where rounding might introduce errors. Quand vous travaillez avec de nombreux chiffres qui ont de petites valeurs fractionnelles, ils peuvent parfois s’accumuler et provoquer une petite imprécision.When you work with many numbers that have small fractional values they can sometimes accumulate and force a number to be just slightly off. Les valeurs situées après les quatre chiffres à droite du séparateur décimal étant tronquées, le type Nombre décimal fixe peut vous aider à éviter ces genres d’erreurs.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 vous connaissez SQL Server, ce type de données correspond au format Décimal de SQL Server (19,4) ou au type de données Devise dans 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.

Nombre entier : représente un entier 64 bits (huit octets).Whole Number – Represents a 64 bit (eight-byte) integer value. S’agissant d’un entier, il ne comporte aucun chiffre à droite du séparateur décimal.Because it’s an integer, it has no digits to the right of the decimal place. Il autorise 19 chiffres ; les nombres entiers positifs ou négatifs compris entre -9 223 372 036 854 775 808 (-2^63) et 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). Il peut représenter le plus grand nombre possible parmi les divers types de données numériques.It can represent the largest possible number of the various numeric data types. Comme Nombre décimal fixe, le type Nombre entier peut être utile dans les cas où vous avez besoin de contrôler l’arrondi.As with the Fixed Decimal type, the Whole Number type can be useful in cases where you need to control rounding.

Types Date/HeureDate/time types

Power BI Desktop prend en charge cinq types de données Date/Heure dans la vue Requête et trois dans la vue Rapport et le modèle.Power BI Desktop supports five Date/Time data types in Query View and three in the Report View and model. Les types Date/Heure/Fuseau horaire et Durée sont convertis pendant le chargement dans le modèle.Both Date/Time/Timezone and Duration are converted during load into the model.

Date/Heure : représente une valeur de date et d’heure.Date/Time – Represents both a date and time value. Dans les coulisses, la valeur Date/Heure est stockée au format Nombre décimal.Underneath the covers, the Date/Time value is stored as a Decimal Number Type. Vous pouvez donc effectuer une conversion entre les deux.So you can actually convert between the two. La partie heure d’une date est stockée sous forme de fraction de multiples entiers de 1/300 de seconde (3,33 ms).The time portion of a date is stored as a fraction to whole multiples of 1/300 seconds (3.33ms). Les dates comprises entre les années 1900 et 9999 sont prises en charge.Dates between years 1900 and 9999 are supported.

Date : représente seulement une date (aucune partie heure).Date – Represents just a Date (no time portion). En cas de conversion dans le modèle, une valeur de Date est identique à une valeur de Date/Heure avec une valeur fractionnelle égale à zéro.When converted into the model, a Date is the same as a Date/Time value with zero for the fractional value.

Heure : représente seulement une heure (aucune partie date).Time – Represents just Time (no Date portion). En cas de conversion dans le modèle, une valeur d’Heure est identique à une valeur de Date/Heure sans aucun chiffre à gauche du séparateur décimal.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.

Date/Heure/Fuseau horaire : représente une Date/Heure au format UTC.Date/Time/Timezone – Represents a UTC Date/Time. Actuellement, ce format est converti en Date/Heure lors du chargement dans le modèle.Currently, it’s converted into Date/Time when loaded into the model.

Durée : représente une durée.Duration – Represents a length of time. Ce format est converti au format Nombre décimal lors du chargement dans le modèle.It’s converted into a Decimal Number Type when loaded into the model. En tant que type Nombre décimal, il peut être ajouté ou soustrait d’un champ Date/Heure avec des résultats corrects.As a Decimal Number type it can be added or subtracted from a Date/Time field with correct results. S’agissant d’un type Nombre décimal, vous pouvez facilement l’utiliser dans des visualisations qui indiquent un ordre de grandeur.As a Decimal Number type, you can easily use it in visualizations that show magnitude.

Type TexteText type

Texte : chaîne de données de caractères Unicode.Text - A Unicode character data string. Il peut s’agir de chaînes, de nombres ou de dates représentés dans un format texte.Can be strings, numbers or dates represented in a text format. La longueur de chaîne maximale est de 268 435 456 caractères Unicode (256 méga caractères) ou de 536 870 912 octets.Maximum string length is 268,435,456 Unicode characters (256 mega characters) or 536,870,912 bytes.

Type True/falseTrue/false type

Vrai/Faux : valeur booléenne Vrai ou Faux.True/False – A Boolean value of either a True or False.

Type Vide/NullBlanks/nulls type

Vide : type de données dans DAX qui représente et remplace les valeurs null SQL.Blank - Is a data type in DAX that represents and replaces SQL nulls. Vous pouvez créer une valeur vide à l’aide de la fonction VIDE et vérifier la présence de valeurs vides à l’aide de la fonction logique ESTVIDE.You can create a blank by using the BLANK function, and test for blanks by using the ISBLANK logical function.

Type de données de tableTable data type

DAX utilise un type de données de table dans de nombreuses fonctions, telles que les agrégations et les calculs Time Intelligence.DAX uses a table data type in many functions, such as aggregations and time intelligence calculations. Certaines fonctions nécessitent une référence à une table ; d’autres retournent une table qui peut ensuite servir d’entrée pour d’autres fonctions.Some functions require a reference to a table; other functions return a table that can then be used as input to other functions. Dans certaines fonctions qui nécessitent une table comme entrée, vous pouvez spécifier une expression qui correspond à une table. Pour certaines fonctions, une référence à une table de base est obligatoire.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. Pour plus d’informations sur les exigences relatives à des fonctions spécifiques, consultez Référence des fonctions DAX.For information about the requirements of specific functions, see DAX Function Reference.

Conversion de types de données implicites et explicites dans les formules DAXImplicit and explicit data type conversion in DAX formulas

Chaque fonction DAX a des exigences spécifiques quant aux types de données utilisés comme entrées et sorties.Each DAX function has specific requirements as to the types of data that are used as inputs and outputs. Par exemple, certaines fonctions nécessitent des entiers pour certains arguments et des dates pour d’autres. D’autres fonctions nécessitent du texte ou des tables.For example, some functions require integers for some arguments and dates for others; other functions require text or tables.

Si les données de la colonne que vous spécifiez comme argument sont incompatibles avec le type de données requis par la fonction, dans de nombreux cas DAX retourne une erreur.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. Toutefois, dans la mesure du possible DAX essaie de convertir implicitement les données vers le type de données requis.However, wherever possible DAX will attempt to implicitly convert the data to the required data type. Par exemple :For example:

  • Vous pouvez taper une date comme chaîne. DAX l’analysera et tentera d’effectuer un cast vers l’un des formats de date et d’heure 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.
  • Vous pouvez ajouter VRAI + 1 et obtenir le résultat 2, car VRAI est converti implicitement en nombre 1 et l’opération 1 + 1 est effectuée.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 vous additionnez des valeurs de deux colonnes et que l’une d’elles est représentée en tant que texte ("12") et l’autre en tant que nombre (12), DAX convertit implicitement la chaîne en nombre, puis effectue l’addition pour obtenir un résultat numérique.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. L’expression suivante retourne 44 : = "22" + 22.The following expression returns 44: = "22" + 22.
  • Si vous essayez de concaténer deux nombres, Excel les présente sous forme de chaînes, puis les concatène.If you attempt to concatenate two numbers, Excel will present them as strings and then concatenate. L’expression suivante retourne "1234" : = 12 & 34.The following expression returns "1234": = 12 & 34.

Tableau des conversions de données implicitesTable of implicit data conversions

Le type de conversion effectué est déterminé par l’opérateur, qui convertit les valeurs dont il a besoin avant d’effectuer l’opération demandée.The type of conversion that is performed is determined by the operator, which casts the values it requires before performing the requested operation. Ces tableaux répertorient les opérateurs et indiquent la conversion effectuée sur chaque type de données dans la colonne quand il est couplé avec le type de données dans la ligne d’intersection.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.

Note

Les types de données texte ne sont pas inclus dans ces tableaux.Text data types are not included in these tables. Quand un nombre est représenté comme dans un format texte, dans certains cas Power BI tente de déterminer le type numérique et le représente sous forme de nombre.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.

Addition (+)Addition (+)

Opérateur(+)Operator(+) ENTIERINTEGER DEVISECURRENCY RÉELREAL Date/HeureDate/time
ENTIERINTEGER ENTIERINTEGER DEVISECURRENCY RÉELREAL Date/HeureDate/time
DEVISECURRENCY DEVISECURRENCY DEVISECURRENCY RÉELREAL Date/HeureDate/time
RÉELREAL RÉELREAL RÉELREAL RÉELREAL Date/HeureDate/time
Date/HeureDate/time Date/HeureDate/time Date/HeureDate/time Date/HeureDate/time Date/HeureDate/time

Par exemple, si un nombre réel est utilisé dans une opération d’addition avec des données de devise, les deux valeurs sont converties en nombre réel et le résultat retourné est un nombre réel.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.

Soustraction (-)Subtraction (-)

Dans le tableau suivant, l’en-tête de ligne est le diminuende (côté gauche) et l’en-tête de colonne est le diminuteur (côté droit).In the following table the row header is the minuend (left side) and the column header is the subtrahend (right side).

Opérateur(-)Operator(-) ENTIERINTEGER DEVISECURRENCY RÉELREAL Date/HeureDate/time
ENTIERINTEGER ENTIERINTEGER DEVISECURRENCY RÉELREAL RÉELREAL
DEVISECURRENCY DEVISECURRENCY DEVISECURRENCY RÉELREAL RÉELREAL
RÉELREAL RÉELREAL RÉELREAL RÉELREAL RÉELREAL
Date/HeureDate/time Date/HeureDate/time Date/HeureDate/time Date/HeureDate/time Date/HeureDate/time

Par exemple, si une date est utilisée dans une opération de soustraction avec un autre type de données, les deux valeurs sont converties en dates et la valeur de retour est également une date.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.

Note

Les modèles de données prennent également en charge l’opérateur unaire, - (négatif), mais cet opérateur ne change pas le type de données de l’opérande.Data models also support the unary operator, - (negative), but this operator does not change the data type of the operand.

Multiplication (*)Multiplication(*)

Opérateur()Operator() ENTIERINTEGER DEVISECURRENCY RÉELREAL Date/HeureDate/time
ENTIERINTEGER ENTIERINTEGER DEVISECURRENCY RÉELREAL ENTIERINTEGER
DEVISECURRENCY DEVISECURRENCY RÉELREAL DEVISECURRENCY DEVISECURRENCY
RÉELREAL RÉELREAL DEVISECURRENCY RÉELREAL RÉELREAL

Par exemple, si un entier est combiné à un nombre réel dans une opération de multiplication, les deux nombres sont convertis en nombres réels et la valeur de retour est également un nombre réel.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.

Division (/)Division (/)

Dans le tableau suivant, l’en-tête de ligne est le numérateur et l’en-tête de colonne est le dénominateur.In the following table, the row header is the numerator and the column header is the denominator.

Opérator(/) (ligne/colonne)Operator(/) (Row/Column) ENTIERINTEGER DEVISECURRENCY RÉELREAL Date/HeureDate/time
ENTIERINTEGER RÉELREAL DEVISECURRENCY RÉELREAL RÉELREAL
DEVISECURRENCY DEVISECURRENCY RÉELREAL DEVISECURRENCY RÉELREAL
RÉELREAL RÉELREAL RÉELREAL RÉELREAL RÉELREAL
Date/HeureDate/time RÉELREAL RÉELREAL RÉELREAL RÉELREAL

Par exemple, si un entier est combiné avec une valeur de devise dans une opération de division, les deux valeurs sont converties en nombres réels et le résultat est également un nombre réel.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.

Opérateurs de comparaisonComparison operators

Dans les expressions de comparaison, les valeurs booléennes sont considérées comme supérieures aux valeurs de chaîne et celles-ci sont considérées comme supérieures aux valeurs numériques ou de date/heure. Les nombres et les valeurs de date et d’heure sont considérés comme ayant le même rang.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. Aucune conversion implicite n’est effectuée pour les valeurs de chaîne ou booléennes. VIDE ou une valeur vide est convertie en 0/""/faux en fonction du type de données de l’autre valeur comparée.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.

Les expressions DAX suivantes illustrent ce comportement :The following DAX expressions illustrate this behavior:

=SI(FAUX()>"vrai","L’expression est vraie", "L’expression est fausse") retourne « L’expression est vraie ».=IF(FALSE()>"true","Expression is true", "Expression is false"), returns "Expression is true"

=SI("12">12,"L’expression est vraie", "L’expression est fausse") retourne « L’expression est vraie ».=IF("12">12,"Expression is true", "Expression is false"), returns "Expression is true".

=SI("12"=12,"L’expression est vraie", "L’expression est fausse") retourne « L’expression est fausse ».=IF("12"=12,"Expression is true", "Expression is false"), returns "Expression is false"

Les conversions sont effectuées implicitement pour les types numériques ou de date/heure comme décrit dans le tableau suivant :Conversions are performed implicitly for numeric or date/time types as described in the following table:

Opérateur de comparaisonComparison Operator ENTIERINTEGER DEVISECURRENCY RÉELREAL Date/HeureDate/time
ENTIERINTEGER ENTIERINTEGER DEVISECURRENCY RÉELREAL RÉELREAL
DEVISECURRENCY DEVISECURRENCY DEVISECURRENCY RÉELREAL RÉELREAL
RÉELREAL RÉELREAL RÉELREAL RÉELREAL RÉELREAL
Date/HeureDate/time RÉELREAL RÉELREAL RÉELREAL Date/HeureDate/Time

Gestion des vides, des chaînes vides et des valeurs zéroHandling blanks, empty strings, and zero values

Dans DAX, une valeur null, une valeur vide, une cellule vide ou une valeur manquante sont toutes représentées par le même nouveau type de valeur, VIDE.In DAX, a null, blank value, empty cell, or a missing value are all represented by the same new value type, a BLANK. Vous pouvez également générer des vides à l’aide de la fonction VIDE, ou vérifier la présence de vides à l’aide de la fonction ESTVIDE.You can also generate blanks by using the BLANK function, or test for blanks by using the ISBLANK function.

Le traitement des vides dans des opérations telles que l’addition ou la concaténation dépend de la fonction.How blanks are handled in operations such as addition or concatenation depends on the individual function. Le tableau suivant résume les différences entre les formules DAX et Microsoft Excel, dans la façon dont les vides sont gérés.The following table summarizes the differences between DAX and Microsoft Excel formulas, in the way that blanks are handled.

ExpressionExpression DAXDAX ExcelExcel
VIDE + VIDEBLANK + BLANK VIDEBLANK 0(Zéro)0(zero)
VIDE + 5BLANK + 5 55 55
VIDE * 5BLANK * 5 VIDEBLANK 0(Zéro)0(zero)
5/VIDE5/BLANK InfiniInfinity ErreurError
0/VIDE0/BLANK NaNNaN ErreurError
VIDE/VIDEBLANK/BLANK VIDEBLANK ErreurError
FAUX OU VIDEFALSE OR BLANK FAUXFALSE FAUXFALSE
FAUX ET VIDEFALSE AND BLANK FAUXFALSE FAUXFALSE
VRAI OU VIDETRUE OR BLANK VRAITRUE VRAITRUE
VRAI ET VIDETRUE AND BLANK FAUXFALSE VRAITRUE
VIDE OU VIDEBLANK OR BLANK VIDEBLANK ErreurError
VIDE ET VIDEBLANK AND BLANK VIDEBLANK ErreurError