Spécification de syntaxe DAX pour PowerPivot

DAX (Data Analysis Expressions) représente une bibliothèque de fonctions, d'opérateurs et de constantes qui peuvent être combinés pour générer des formules et des expressions dans PowerPivot pour Excel. Cette section fournit des détails sur la syntaxe et les exigences du langage DAX. 

Pour obtenir des exemples des types de formules que vous pouvez générer et des exemples d'utilisation d'expressions pour filtrer des tables et modifier le contexte, consultez Vue d'ensemble du langage DAX (Data Analysis Expressions). Cette rubrique contient les sections suivantes :

Exigences en matière de syntaxe

Exigences concernant l'affectation des noms

Fonctions

Opérateurs et constantes

Types de données

Exigences en matière de syntaxe

Les formules DAX sont très semblables aux formules que vous tapez dans les tables Excel, avec quelques différences clés.

  • Dans Microsoft Excel, vous pouvez référencer des cellules individuelles ou des tableaux ; dans PowerPivot, vous pouvez référencer uniquement des tables complètes ou des colonnes de données. Toutefois, si vous devez utiliser uniquement une partie d'une colonne, ou les valeurs uniques d'une colonne, vous pouvez obtenir un comportement semblable à l'aide des fonctions DAX qui filtrent la colonne ou retournent des valeurs uniques.

  • Les formules DAX ne prennent pas en charge exactement les mêmes types de données que Microsoft Excel. En général, DAX fournit plus de types de données qu'Excel, et DAX effectue des conversions de types implicites sur certaines données lors de l'importation. Pour plus d'informations, consultez Vue d'ensemble du langage DAX (Data Analysis Expressions).

Une formule DAX commence toujours par un signe égal (=). Après le signe égal, vous pouvez fournir toute expression qui renvoie un scalaire, ou une expression qui peut être convertie en scalaire. Ces éléments sont les suivants :

  • Une constante scalaire, ou une expression qui utilise un opérateur scalaire (+,-,*,/,>=,...,&&, ...)

  • Références aux colonnes ou tables. Le langage DAX utilise toujours des tables et des colonnes comme entrées des fonctions, jamais un tableau ni un ensemble arbitraire de valeurs.

  • Opérateurs, constantes et valeurs fournis dans le cadre d'une expression.

  • Résultat d'une fonction et ses arguments obligatoires. Certaines fonctions DAX retournent une table à la place d'un scalaire et doivent être encapsulées dans une fonction qui évalue la table et retourne un scalaire ; sauf si la table ne contient qu'une seule ligne et colonne, auquel cas il est traité comme un scalaire.

    La plupart des fonctions PowerPivot nécessitent un ou plusieurs arguments, qui peuvent inclurent des tables, des colonnes, des expressions et des valeurs. Cependant, certaines fonctions, telles que PI, ne nécessitent pas d'arguments, mais nécessitent néanmoins des parenthèses pour indiquer que l'argument est Null. Par exemple, vous devez toujours taper PI(), et non PI. Vous pouvez également imbriquer des fonctions dans d'autres fonctions.

  • Expressions. Une expression peut contenir tout ou partie des éléments suivants : opérateurs, constantes ou références à des colonnes.

Par exemple, toutes les formules suivantes sont valides.

Formule

Résultat

=3

3

="Sales"

Sales

='Sales'[Amount]

Si vous utilisez cette formule dans la table Sales, vous obtenez la valeur de la colonne Amount dans la table Sales pour la ligne actuelle.

=(0.03 *[Amount])

=0.03 * [Amount]

Trois pour cent de la valeur dans la colonne Amount de la table actuelle.

Même si cette formule peut être utilisée pour calculer un pourcentage, le résultat n'est pas indiqué en tant que pourcentage à moins que vous n'appliquiez une mise en forme dans la table.

=PI()

Valeur de la constante pi.

Notes

Les formules peuvent se comporter différemment selon qu'elles sont utilisées dans une colonne calculée ou dans une mesure dans un tableau croisé dynamique. Vous devez toujours être informé du contexte et de la manière dont les données que vous utilisez dans la formule sont associées à d'autres données qui peuvent être utilisées dans le calcul. Pour plus d'informations, consultez Contexte dans les formules DAX.

Exigences concernant l'affectation des noms

Une fenêtre PowerPivot peut contenir plusieurs tables, chacune sous son propre onglet. Ensemble, les tables et leurs colonnes composent une base de données stockée dans le moteur PowerPivot VertiPaq. Dans cette base de données, toutes les tables doivent avoir des noms uniques. Les noms des colonnes doivent également être uniques dans chaque table. Tous les noms d'objets ne respectent pas la casse ; par exemple, les noms SALES et Sales représentent la même table.

Chaque colonne et chaque mesure que vous ajoutez à une base de données PowerPivot existante doivent appartenir à une table spécifique. Vous spécifiez la table qui contient la colonne implicitement, lorsque vous créez une colonne calculée dans une table, ou explicitement, lorsque vous créez une mesure et spécifiez le nom de la table où la définition de la mesure doit être stockée.

Lorsque vous utilisez une table ou une colonne comme entrée d'une fonction, vous devez en général qualifier le nom de colonne. Le nom complet d'une colonne est le nom de la table, suivi du nom de colonne entre crochets : par exemple, 'U.S. Sales'[Products]. Un nom complet est toujours obligatoire lorsque vous référencez une colonne dans les contextes suivants :

  • Comme un argument de la fonction VALEURS

  • Comme un argument des fonctions ALL ou ALLEXCEPT

  • Dans un argument de filtre pour les fonctions CALCULATE ou CALCULATETABLE

  • Comme un argument de la fonction RELATEDTABLE

  • Comme un argument de toute fonction Time Intelligence

Un nom de colonne non qualifié est juste le nom de la colonne, placé entre crochets : par exemple, [Sales Amount]. Par exemple, lorsque vous référencez une valeur scalaire située sur la même ligne de la table actuelle, vous pouvez utiliser le nom de colonne non qualifié.

Si le nom d'une table contient des espaces, des mots clés réservés ou des caractères non autorisés, vous devez placer le nom de la table entre guillemets simples. Vous devez également mettre entre guillemets les noms de tables si le nom contient des caractères ne figurant pas dans la plage de caractères alphanumériques ANSI, que vos paramètres régionaux prennent en charge le jeu de caractères ou non. Par exemple, si vous ouvrez un classeur qui contient des noms de tables écrit en caractères cyrilliques, tel que ‘Таблица’, le nom de la table doit être mis entre guillemets, bien qu'il ne contienne pas d'espaces.

Notes

Pour faciliter la saisie des noms complets de colonnes, nous vous recommandons d'utiliser la fonction de saisie semi-automatique de formule dans le client.

Tables

  • Les noms de tables sont requis chaque fois que la colonne provient d'une table différente de la table actuelle. Ils doivent être uniques dans la base de données.

  • Les noms de tables doivent être placés entre guillemets simples s'ils contiennent des espaces, d'autres caractères spéciaux ou tout caractère alphanumérique non anglais.

Mesures

  • Les noms de mesures doivent toujours être entre crochets.

  • Les noms de mesures peuvent contenir des espaces.

  • Chaque nom de mesure doit être unique dans une base de données. Par conséquent, le nom de table est facultatif devant un nom de mesure lors de la référence à une mesure existante. Toutefois, lorsque vous créez une mesure, vous devez toujours spécifier une table où la définition de la mesure sera stockée.

Colonnes

Les noms de colonnes doivent être uniques dans le contexte d'une table ; toutefois, plusieurs tables peuvent avoir des colonnes avec les mêmes noms (le nom de la table lève l'ambiguïté).

En général, les colonnes peuvent être référencées sans référencer la table de base à laquelle elles appartiennent, sauf s'il y a risque de conflit de noms ou avec certaines fonctions qui requièrent que les noms de colonnes soient complets.

Mots clés réservés

Si le nom que vous utilisez pour une table est le même qu'un mot clé réservé Analysis Services, une erreur est générée et vous devez renommer la table. Toutefois, vous pouvez utiliser des mots clés dans les noms d'objets si le nom d'objet est placé entre crochets (pour les colonnes) ou entre guillemets (pour les tables).

Notes

Notez que les guillemets peuvent être représentés par plusieurs caractères différents, selon l'application. Si vous collez des formules dans un document externe ou une page Web, veillez à vérifier le code ASCII du caractère utilisé pour les guillemets ouvrants et fermants afin qu'ils soient identiques. Sinon, DAX peut ne pas reconnaître les symboles comme étant des guillemets, ce qui rend la référence non valide.

Caractères spéciaux

Les caractères et types de caractères suivants ne sont pas valides dans les noms des tables, colonnes ou mesures :

  • Les espaces de début ou de fin ; sauf si les espaces sont encadrés par des délimiteurs de nom, des crochets ou des apostrophes simples.

  • Caractères de contrôle

  • Les caractères suivants ne sont pas valides dans les noms des objets PowerPivot :

    .,;':/\*|?&%$!+=()[]{}<>

Exemples de noms d'objets

Le tableau suivant répertorie des exemples de certains noms d'objets :

Types d'objets

Exemples

Commentaire

Nom de la table

Sales

Si le nom de la table ne contient pas d'espaces ou d'autres caractères spéciaux, le nom n'a pas besoin d'être entre guillemets.

Nom de la table

‘Canada Sales’

Si le nom contient des espaces, des tabulations ou d'autres caractères spéciaux, placez le nom entre guillemets simples.

Nom de colonne complet

Sales[Amount]

Le nom de la table précède le nom de la colonne, et le nom de la colonne est placé entre crochets.

Nom de mesure complet

Sales[Profit]

Le nom de la table précède le nom de la mesure, et le nom de la mesure est placé entre crochets. Dans certains contextes, un nom complet est toujours obligatoire.

Nom de colonne non qualifié

[Amount]

Le nom non qualifié est simplement le nom de colonne, entre crochets. Vous pouvez utiliser un nom non qualifié dans les formules dans une colonne calculée de la même table, ou dans une fonction d'agrégation qui analyse la même table.

Nom de colonne complet dans la table avec des espaces

‘Canada Sales’[Qty]

Le nom de la table contient des espaces et doit donc être entouré de guillemets simples.

Notes

Pour faciliter la saisie des noms complets des colonnes, nous vous recommandons d'utiliser la fonction de saisie semi-automatique lors de la génération de formules. Pour plus d'informations, consultez Générer des formules pour réaliser des calculs.

Restrictions diverses

La syntaxe requise pour chaque fonction et le type d'opération qu'elle peut effectuer varient grandement selon la fonction. En général, toutefois, les règles suivantes s'appliquent à toutes les formules et expressions :

  • Les formules et expressions DAX ne peuvent pas modifier ni insérer des valeurs individuelles dans les tables.

  • Vous ne pouvez pas créer de lignes calculées à l'aide de DAX. Vous pouvez créer uniquement des colonnes calculées et des mesures.

  • Lorsque vous définissez des colonnes calculées, vous pouvez imbriquer des fonctions à tout niveau.

  • DAX a plusieurs fonctions qui retournent une table. En général, vous utilisez les valeurs retournées par ces fonctions comme entrée des autres fonctions, qui requièrent une table comme entrée.

Opérateurs DAX et constantes

Le tableau ci-dessous affiche la liste des opérateurs pris en charge par DAX. En général, les opérateurs dans DAX se comportent de la même façon que dans Microsoft Excel, avec quelques exceptions mineures. Pour plus d'informations sur la syntaxe d'opérateurs individuels, consultez Référence des opérateurs DAX pour PowerPivot.

Type d'opérateur

Symbole et utilisation

Opérateur parenthèses

() priorité et regroupement d'arguments

Opérateurs arithmétiques

+ (addition)

- (soustraction/négation)

* (multiplication)

/ (division)

^ (élévation à la puissance)

Opérateurs de comparaison

= (égal à)

> (supérieur à)

< (inférieur à)

>= (supérieur ou égal à)

<= (inférieur ou égal à)

<> (différent de)

Opérateur de concaténation de texte

& (concaténation)

Opérateurs logiques

&& (et)

|| (ou)

Types de données dans DAX

Vous n'avez pas besoin de convertir ni de spécifier le type de données d'une colonne ou valeur que vous utilisez dans une formule DAX. Lorsque vous utilisez des données dans une formule DAX, DAX identifie automatiquement les types de données dans les colonnes référencées et des valeurs que vous tapez, et effectue des conversions implicites si nécessaire pour compléter l'opération spécifiée.

Par exemple, si vous essayez d'ajouter un nombre à une valeur de date, PowerPivot interprète l'opération dans le contexte de la fonction, comme le fait Excel, convertit les nombres en un type de données commun, puis présente le résultat sous le format prévu, une date.

Toutefois, il existe des limitations sur les valeurs qui peuvent être correctement converties. Si une valeur ou une colonne a un type de données qui est incompatible avec l'opération actuelle, DAX retourne une erreur. Par ailleurs, DAX ne fournit pas de fonctions qui vous permettent de modifier ou de convertir explicitement le type de données de données existantes que vous avez importées dans un classeur PowerPivot.

Important

PowerPivot ne prend pas en charge l'utilisation du type de données Variant utilisé dans Excel. Par conséquent, lorsque vous chargez ou importez des données, les données dans chaque colonne doivent en général être d'un type de données cohérent.

Certaines fonctions retournent des valeurs scalaires, notamment des chaînes, alors que d'autres fonctions utilisent des nombres, entiers et réels, ou des dates et des heures. Le type de données requis pour chaque fonction est décrit dans la section Référence des fonctions DAX pour PowerPivot.

Les tables sont un nouveau type de données dans PowerPivot. Vous pouvez utiliser des tables contenant plusieurs colonnes et plusieurs lignes de données comme argument d'une fonction. Certaines fonctions retournent également des tables, qui sont stockées en mémoire et peuvent être utilisées comme arguments pour d'autres fonctions.

Pour plus d'informations sur les différents types de données numériques et de date/heure et sur la gestion des valeurs Null et des chaînes vides, consultez Types de données pris en charge dans les classeurs PowerPivot.