Types de données pris en charge (SSAS Tabulaire)
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).
Cet article contient les sections suivantes :
Conversion de type de données implicite et explicite dans les formules DAX
Gestion des valeurs vides, des chaînes vides et des valeurs zéro
Types de données utilisés dans les modèles tabulaires
Les types de données suivants sont pris en charge. 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) 1, 2 | Nombres qui n'ont pas de décimales. Les entiers peuvent être des nombres positifs ou négatifs, mais doivent être compris entre -9 223 372 036 854 775 808 (-2^63) et 9 223 372 036 854 775 807 (2^63-1). |
Nombre décimal | Nombre réel de 64 bits (huit octets) 1, 2 | 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é à 17 chiffres décimaux. |
Booléen | 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 devise autorise des valeurs entre -922 337 203 685 477,5808 et 922 337 203 685 477,5807 avec quatre chiffres décimaux à 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. |
1 Les formules DAX ne prennent pas en charge les types de données plus petits que ceux répertoriés dans le tableau.
2 Si vous tentez d’importer des données qui ont des valeurs numériques très 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 |
2.2250738585072014e-308 |
Vous devez supprimer la valeur de vos données et réessayer 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 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 types 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 comme argument sont incompatibles avec le type de données requis par la fonction, DAX, dans de nombreux cas, retourne 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 analysera la chaîne et tentera pour la spécifier comme un type de données de nombre.
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, le complément PowerPivot les présente sous forme de chaînes, puis les concatène. 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 de 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, le générateur de modèles tente dans certains cas de déterminer le type de nombre dont il s'agit et de le représenter comme un nombre.
Addition (+)
Opérateur (+) | ENTIER | DEVISE | RÉEL | Date/Heure |
ENTIER | ENTIER | DEVISE | RÉEL | Date/Heure |
DEVISE | DEVISE | DEVISE | RÉEL | Date/Heure |
RÉEL | RÉEL | 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 diminuende (côté gauche) et l'en-tête de colonne est le diminuteur (côté droit).
Opérateur (-) | ENTIER | DEVISE | RÉEL | Date/Heure |
ENTIER | ENTIER | DEVISE | RÉEL | RÉEL |
DEVISE | DEVISE | DEVISE | RÉEL | RÉEL |
RÉEL | RÉEL | 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 (*)
Opérateur (*) | ENTIER | DEVISE | RÉEL | Date/Heure |
ENTIER | ENTIER | DEVISE | RÉEL | ENTIER |
DEVISE | DEVISE | RÉEL | DEVISE | DEVISE |
RÉEL | 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.
Opérateur (/) (Ligne/Colonne) |
ENTIER | DEVISE | RÉEL | Date/Heure |
ENTIER | RÉEL | DEVISE | RÉEL | RÉEL |
DEVISE | DEVISE | RÉEL | DEVISE | RÉEL |
RÉEL | RÉEL | RÉEL | RÉEL | RÉEL |
Date/Heure | RÉEL | 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
Dans les expression de comparaison, les valeurs booléennes d'expressions sont considérées comme supérieures aux valeurs de chaîne et les valeurs de chaîne sont considérées supérieures aux valeurs numériques ou aux valeurs de date/heure ; les nombres et les valeurs de date/heure sont considérées avoir le même rang. 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.
Les expressions DAX suivantes illustrent ce comportement :
=IF(FALSE()>"true","Expression is true", "Expression is false")
retourne "Expression is true"
.
=IF("12">12,"Expression is true", "Expression is false")
retourne "Expression is true"
.
=IF("12"=12,"Expression is true", "Expression is false")
retourne "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 :
Opérateur de comparaison | ENTIER | DEVISE | RÉEL | Date/Heure |
ENTIER | ENTIER | DEVISE | RÉEL | RÉEL |
DEVISE | DEVISE | DEVISE | RÉEL | RÉEL |
RÉEL | RÉEL | RÉEL | RÉEL | RÉEL |
Date/Heure | RÉEL | RÉEL | RÉEL | Date/Heure |
Gestion des valeurs vides, des chaînes vides et des valeurs zéro
Le traitement DAX des valeurs zéro, des valeurs Null et des chaînes vides n'est pas le même que dans Microsoft Excel et SQL Server. Cette section décrit les différences et explique la manière dont sont gérés ces types de données.
Le point essentiel à retenir est que les valeurs vides, cellules vides ou valeurs manquantes sont toutes représentées par le même nouveau type de valeur, BLANK. La façon dont les valeurs de ce type sont gérées dans des opérations telles que l'addition ou la concaténation dépend de la fonction en question. 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. Les valeurs Null de base de données ne sont pas prises en charge dans un modèle sémantique, et les valeurs Null sont converties implicitement en valeurs vides (blank) lorsqu'une colonne qui contient une valeur Null est référencée dans une formule DAX.
Définition des valeurs vides, des valeurs Null et des chaînes vides
Le tableau suivant résume les différences entre DAX et Microsoft Excel quant à la façon dont les valeurs vides (blank) sont gérées.
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.
Voir aussi
Sources de données (SSAS Tabulaire)
Importer des données (SSAS Tabulaire)