Types de données pris en charge dans les modèles tabulaires

S’applique à : SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

Cet article décrit les types de données qui peuvent être utilisés dans des modèles tabulaires et aborde la conversion implicite de types de données lorsque des données sont calculées ou utilisées dans une formule DAX (Data Analysis Expressions).

Types de données utilisés dans les modèles tabulaires

Lorsque vous importez des données ou utilisez une valeur dans une formule, même si la source de données d'origine contient un type de données différent, les données sont converties dans l'un des types de données suivants. Les valeurs issues des formules utilisent également ces types de données.

En règle générale, ces types de données sont implémentés pour permettre des calculs exacts dans les colonnes calculées, et les mêmes restrictions s'appliquent au reste des données dans les modèles à des fins de cohérence.

Les formats utilisés pour les nombres, devises, dates et heures doivent suivre le format que les paramètres régionaux spécifiés sur le client utilisé pour travailler sur les données du modèle. Vous pouvez utiliser les options de mise en forme du modèle pour contrôler la façon dont la valeur s'affiche.

Type de données dans le modèle Type de données dans DAX Description
Nombre entier Valeur entière de 64 bits (huit octets)*

Remarque :
Les formules DAX ne prennent pas en charge les types de données qui sont trop petits pour contenir la valeur minimale indiquée dans la description.
Nombres qui n'ont pas de décimales. Les entiers peuvent être des nombres positifs ou négatifs, mais doivent être des nombres entiers compris entre -9 223 372 036 854 775 807 (-2^63+1) et 9 223 372 036 854 775 806 (2^63-2).
Nombre décimal Nombre réel de 64 bits (huit octets)*

Remarque :
Les formules DAX ne prennent pas en charge les types de données qui sont trop petits pour contenir la valeur minimale indiquée dans la description.
Les nombres réels sont des nombres qui peuvent avoir des décimales. Les nombres réels couvrent une large gamme de valeurs :

Valeurs négatives de -1.79E +308 à -2.23E -308

Zéro

Valeurs positives de 2.23E -308 à -1.79E +308

Toutefois, le nombre de bits significatifs est limité à 15 chiffres décimaux.
Boolean Boolean Valeur True ou valeur False.
Texte String Chaîne de données caractères au format Unicode. Il peut s’agir de chaînes, de nombres ou de dates représentés dans un format texte.
Date Date/heure Dates et heures dans une représentation date-heure acceptée.

Les dates valides sont toutes les dates après le 1er mars 1900.
Devise Devise Le type de données monétaire autorise des valeurs comprises entre -922 337 203 685 477,5807 et 922 337 203 685 477,5806 avec quatre chiffres décimaux de précision fixe.
N/A Vide Le type de données Vide (Blank) de DAX représente et remplace les valeurs Null SQL. Vous pouvez créer une valeur vide à l'aide de la fonction BLANK et tester les valeurs vides à l'aide de la fonction logique ISBLANK.

* Si vous tentez d’importer des données qui ont des valeurs numériques volumineuses, l’importation peut échouer avec l’erreur suivante :

Erreur de base de données en mémoire : la colonne «< nom> de la colonne » de la table «< nom> de table » contient une valeur, « 1.7976931348623157e+308 », qui n’est pas prise en charge. L’opération a été annulée.

Cette erreur se produit parce que le générateur de modèles utilise cette valeur pour représenter des valeurs Null. Les valeurs de la liste suivante sont des synonymes de la valeur NULL indiquée précédemment :

Valeur
9223372036854775807
-9223372036854775808
1.7976931348623158e+308
-1.7976931348623158e+308

Supprimez la valeur de vos données et réessayez d’importer.

Notes

Vous ne pouvez pas importer à partir d’une colonne varchar(max) qui contient une chaîne de plus de 131 072 caractères.

Type de données de table

En outre, DAX utilise un type de données table . Ce type de données est utilisé par DAX dans de nombreuses fonctions, comme les agrégations et les calculs Time Intelligence. 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. 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. Pour plus d’informations sur les exigences relatives à des fonctions spécifiques, consultez Référence des fonctions DAX.

Conversion implicite et explicite de type de données dans les formules DAX

Chaque fonction DAX a des exigences spécifiques quant aux types de données utilisés comme entrées et sorties. 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.

Si les données de la colonne que vous spécifiez en tant qu’argument sont incompatibles avec le type de données requis par la fonction, DAX retourne souvent une erreur. Toutefois, dans la mesure du possible DAX essaie de convertir implicitement les données vers le type de données requis. Par exemple :

  • Vous pouvez taper un nombre, par exemple « 123 », sous forme de chaîne. DAX analyse la chaîne et tente de la spécifier en tant que type de données number.

  • 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.

  • 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. L'expression suivante retourne 44 : = "22" + 22

  • Si vous tentez de concaténer deux nombres, ils sont présentés sous forme de chaînes, puis concaténés. L'expression suivante retourne "1234" : = 12 & 34

Le tableau suivant résume les conversions de types de données implicites effectuées dans les formules. En règle générale, le générateur de modèles sémantiques se comporte comme Microsoft Excel et effectue des conversions implicites chaque fois que possible lorsque nécessaire pour l'opération spécifiée.

Tableau des conversions de données implicites

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. 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.

Notes

Les types de données texte ne sont pas inclus dans ces tableaux. Lorsqu’un nombre est représenté dans un format texte, dans certains cas, le concepteur de modèles tente de déterminer le type de nombre et de le représenter sous forme de nombre.

Addition (+)

ENTIER DEVISE RÉEL Date/Heure
INTEGER ENTIER DEVISE RÉEL Date/Heure
CURRENCY DEVISE DEVISE RÉEL Date/Heure
REAL real RÉEL RÉEL Date/Heure
Date/Heure Date/Heure Date/Heure Date/Heure Date/Heure

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.

Soustraction (-)

Dans le tableau suivant, l’en-tête de ligne est le minuend (côté gauche) et l’en-tête de colonne est le sous-message (côté droit) :

ENTIER DEVISE RÉEL Date/Heure
INTEGER ENTIER DEVISE RÉEL RÉEL
CURRENCY DEVISE DEVISE RÉEL RÉEL
REAL real RÉEL RÉEL RÉEL
Date/Heure Date/Heure Date/Heure Date/Heure Date/Heure

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.

Notes

Les modèles tabulaires 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.

Multiplication (*)

ENTIER DEVISE RÉEL Date/Heure
INTEGER ENTIER DEVISE RÉEL ENTIER
CURRENCY DEVISE RÉEL DEVISE DEVISE
REAL RÉEL DEVISE RÉEL RÉEL

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.

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 : (Ligne/Colonne)

ENTIER DEVISE RÉEL Date/Heure
INTEGER RÉEL DEVISE RÉEL RÉEL
CURRENCY DEVISE RÉEL DEVISE RÉEL
REAL real RÉEL RÉEL RÉEL
Date/Heure real RÉEL RÉEL RÉEL

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.

Opérateurs de comparaison

Seul un ensemble limité de combinaisons de types de données mixtes pour les opérations de comparaison est pris en charge. Pour plus d’informations, consultez Référence des opérateurs DAX.

Gestion des vides, des chaînes vides et des valeurs nulles

Le tableau suivant récapitule les différences entre DAX et dans Microsoft Excel, dans la façon dont les vides sont gérés :

Expression DAX Excel
VIDE + VIDE VIDE 0 (zéro)
BLANK +5 5 5
VIDE * 5 VIDE 0 (zéro)
5/VIDE Infini Erreur
0/VIDE NaN Erreur
VIDE/VIDE VIDE Erreur
FAUX OU VIDE FAUX FAUX
FAUX ET VIDE FAUX FAUX
VRAI OU VIDE VRAI VRAI
VRAI ET VIDE FAUX VRAI
VIDE OU VIDE VIDE Erreur
VIDE ET VIDE VIDE Erreur

Pour plus d’informations sur la façon dont une fonction ou un opérateur spécifique gèrent les valeurs vides, voir les rubriques relatives à la fonction DAX concernée dans la section Référence des fonctions DAX.