Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les clients de création de rapports tels que Power BI et Excel exécutent DAX des requêtes chaque fois que des visuels s’affichent dans un rapport ou un champ ajouté à un tableau, et ces DAX requêtes s’ajustent lorsqu’un filtre est appliqué. L’analyseur de performances dans Power BI Desktop peut vous montrer ces DAX requêtes et même les exécuter en DAX mode requête de Power BI Desktop.
En utilisant Affichage des requêtes DAX dans Power BI Desktop ou Écrire des requêtes DAX dans le service Power BI, vous pouvez créer et exécuter vos propres requêtes DAX. Avec Microsoft Fabric, vous pouvez augmenter votre productivité avec Copilot pour écrire DAX des requêtes dans l’affichage DAX des requêtes de l'ordinateur ou du web. Outre les outils Power BI, DAX les requêtes peuvent être exécutées dans des notebooks Fabric à l’aide d’un lien sémantique pour lire des données à partir de modèles sémantiques avec Python et avec l’API REST Exécuter des requêtes, également disponible dans Power Automate. D’autres outils tels que SQL Server Management Studio (SSMS), Power BI Report Builder et les outils open source comme DAX Studio vous permettent également de créer et d’exécuter DAX des requêtes.
DAX les requêtes retournent des résultats sous forme de table directement dans l’outil, ce qui vous permet de créer et de tester rapidement les performances de vos DAX formules dans des mesures ou simplement d’afficher les données dans votre modèle sémantique. Les fonctions INFO et INFO.VIEW DAX peuvent également fournir des informations sur votre modèle sémantique, comme un listing de tables, de colonnes, de mesures, et bien plus encore.
Avant d’en savoir plus sur les requêtes, il est important d’avoir une bonne compréhension des principes de DAX base. Si ce n’est déjà fait, veillez à consulter DAX la vue d’ensemble.
Mots clés
DAXles requêtes ont une syntaxe simple composée d’un seul mot clé requis. EVALUATE EVALUATE est suivi d’une expression de table, telle qu’une fonction ou un DAX nom de table, qui, lors de l’exécution génère une table de résultats. Les expressions de table qui génèrent une table de résultats sont les suivantes :
- Fonctions courantes DAX qui produisent un tableau, telles que SUMMARIZE, SELECTCOLUMNS, TOPN, SUMMARIZECOLUMNS, FILTER, UNION, ADDCOLUMNS, et DATATABLE, bien d’autres, travaillent avec EVALUATE pour produire un tableau de résultats.
- Les tables du modèle lorsqu’elles sont référencées par nom fonctionnent avec EVALUATE pour générer une table de résultats montrant les données de la table. Par exemple, EVALUATE « Nom de table » peut être exécuté en tant que DAX requête.
- Mesure dans le modèle ou toute formule DAX, qui retourne une valeur scalaire, fonctionne avec EVALUATE pour afficher la valeur sous forme de table de résultats lorsqu’elle est placée entre accolades. Par exemple, EVALUATE {[Total Sales]} ou EVALUATE {COUNTROWS('Sales')} peut être exécuté en tant que DAX requête. On les appelle constructeurs de table.
Il existe plusieurs mots clés facultatifs spécifiques aux DAX requêtes : ORDER BY, , START ATDEFINEMEASURE, , VARTABLE et COLUMN.
EVALUATE (Obligatoire)
Au niveau le plus simple, une DAX requête est une EVALUATE
instruction contenant une expression de table. Au moins une EVALUATE instruction est requise, cependant, une requête peut contenir n’importe quel nombre d’instructions EVALUATE .
EVALUATE Syntaxe
EVALUATE <table>
EVALUATE Paramètres
Terme | Définition |
---|---|
table |
Expression de table. |
EVALUATE Exemple
EVALUATE
'Sales Order'
Retourne toutes les lignes et colonnes de la table Sales Order, sous la forme d’une table de résultats. Cela peut être limité avec l'utilisation de TOPN et FILTER, et être trié avec ORDER BY.
ORDER BY (Facultatif)
Le mot clé facultatif ORDER BY
définit une ou plusieurs colonnes dans la requête ou les expressions utilisées pour trier les résultats de la requête. Toute expression pouvant être évaluée pour chaque ligne du résultat est valide. Toute colonne de la requête elle-même est également valide.
Trier par propriété de colonne dans les modèles sémantiques ne s’applique pas aux résultats de la requête DAX. Si une colonne doit être triée par une autre colonne dans le modèle, par exemple dans le cas de Month Name, le tri par colonne doit également être inclus dans la DAX requête à utiliser dans le ORDER BY.
ORDER BY Syntaxe
EVALUATE <table>
[ORDER BY {<expression> [{ASC | DESC}]}[, …]]
ORDER BY Paramètres
Terme | Définition |
---|---|
expression |
Toute DAX expression qui retourne une valeur scalaire unique ou colonne incluse dans la DAX requête. |
ASC |
(par défaut) Ordre de tri croissant. |
DESC |
Ordre de tri décroissant. |
ORDER BY Exemple
EVALUATE
SUMMARIZECOLUMNS(
// Group by columns
'Date'[Month Name],
'Date'[Month of Year],
'Product'[Category],
// Optional filters
FILTER(
VALUES('Product'[Category]),
[Category] = "Clothing"
),
// Measures or explicit DAX formulas to aggregate and analyze the data by row
"Orders", [Orders],
"Avg Profit per Order", DIVIDE(
[Total Sales Profit],
[Orders]
)
)
// DAX queries do not use sort order defined in Power BI,
// sort by columns must be included in the DAX query to be used in order by
ORDER BY 'Date'[Month of Year] ASC
Retourne les commandes de vêtements et le bénéfice moyen par commande par mois, dans l’ordre croissant par mois, sous la forme d’une table de résultats.
TOPN ne choisit pas le nombre spécifié de lignes à retourner en fonction de l’ordre de tri spécifié dans ORDER BY. Au lieu de cela, TOPN dispose de sa propre syntaxe qui permet de spécifier éventuellement un tri avant que les 100 premières lignes ne soient retournées. ORDER BY trie uniquement la table de résultats retournée par TOPN.
EVALUATE
TOPN(
100,
'Sales Order',
// The way the data is sorted before the top 100 rows are selected
'Sales Order'[SalesOrderLineKey], ASC
)
// The way the data is sorted for the results
ORDER BY
'Sales Order'[Sales Order] ASC,
'Sales Order'[Sales Order Line] ASC
Retourne les 100 premières commandes commerciales triées par SalesOrderLienKey croissant, puis trie les résultats en premier par commande, puis par ligne de commande.
START AT (Facultatif)
Le mot clé facultatif START AT
est utilisé à l’intérieur d’une ORDER BY
clause. Elle définit la valeur à laquelle les résultats de la requête commencent.
START AT Syntaxe
EVALUATE <table>
[ORDER BY {<expression> [{ASC | DESC}]}[, …]
[START AT {<value>|<parameter>} [, …]]]
START AT Paramètres
Terme | Définition |
---|---|
value |
Valeur constante. Il ne peut pas s’agir d’une expression. |
parameter |
Nom d’un paramètre dans une instruction XMLA précédée d’un caractère @ . |
START AT Remarques
Les arguments START AT ont des correspondances uniques avec les colonnes de la clause ORDER BY. Il peut y avoir autant d’arguments dans la START AT clause que dans la ORDER BY clause, mais pas plus. Le premier argument de START AT définit la valeur de départ dans la colonne 1 des colonnes ORDER BY. Le deuxième argument de START AT définit la valeur de départ dans la colonne 2 des colonnes ORDER BY au sein des lignes qui correspondent à la première valeur pour la colonne 1.
START AT Exemple
EVALUATE
'Sales Order'
ORDER BY 'Sales Order'[Sales Order] ASC
// Start at this order, orders before this order will not be displayed
START AT "SO43661"
Retourne toutes les colonnes de la table Commande vente, dans l’ordre croissant par commande vente, commençant à SO43661. Les lignes précédant ce bon de commande ne sont pas incluses dans le tableau des résultats.
DEFINE (Facultatif)
Le mot clé facultatif DEFINE
introduit une ou plusieurs définitions d’entité calculée qui existent uniquement pendant la durée de la requête. Contrairement à EVALUATE
, il ne peut y avoir qu'un seul bloc DEFINE
avec une ou plusieurs définitions dans une requête DAX. DEFINE
doit précéder la première EVALUATE
instruction et être valide pour toutes les EVALUATE instructions de la requête. Les définitions peuvent être des variables, des mesures,des tables 1 etdes colonnes 1. Les définitions peuvent référencer d’autres définitions qui apparaissent avant ou après la définition actuelle. Au moins une définition est requise si le DEFINE
mot clé est inclus dans une requête.
DEFINE MEASURE
est un scénario courant pour créer de nouvelles mesures ou modifier des mesures existantes dans un modèle sémantique. Lorsque la mesure existe déjà dans le modèle, la DAX requête utilise la formule de mesure DAX définie dans la requête. Cela est utile pour tester des mesures avec une DAX requête avant de mettre à jour le modèle.
DEFINE MEASURE
est également utile pour générer une analyse supplémentaire avec DAX des formules pour une requête spécifique DAX où vous n’avez peut-être pas l’autorisation d’ajouter une mesure de modèle ou il n’est pas nécessaire de l’avoir dans le modèle.
DEFINE Syntaxe
[DEFINE
(
(MEASURE <table name>[<measure name>] = <scalar expression>) |
(VAR <var name> = <table or scalar expression>) |
(TABLE <table name> = <virtual table definition>) |
(COLUMN <table name>[<column name>] = <scalar expression>) |
) +
]
(EVALUATE <table expression>) +
DEFINE Paramètres
Terme | Définition |
---|---|
Entity |
MEASURE, VAR, TABLE1ou COLUMN1. |
name |
Nom d’une définition de mesure, var, table ou colonne. Il ne peut pas s’agir d’une expression. Le nom n’a pas besoin d’être unique. Le nom existe uniquement pour la durée de la requête. |
expression |
Toute expression DAX qui retourne une valeur de table ou scalaire. L’expression peut utiliser l’une des entités définies. S’il est nécessaire de convertir une expression scalaire en expression de table, encapsulez l’expression à l’intérieur d’un constructeur de table avec accolades {} , ou utilisez la fonction ROW() pour renvoyer une seule table de lignes. |
[1]Attention : définitions TABLE et COLUMN délimitées par requête sont destinées uniquement à une utilisation interne. Bien que vous puissiez définir des expressions TABLE et COLUMN pour une requête sans erreur de syntaxe, elles peuvent produire des erreurs d’exécution et ne sont pas recommandées.
DEFINE Remarques
Une requête DAX peut avoir plusieurs instructions EVALUATE, mais ne peut avoir qu’une seule instruction DEFINE. Les définitions de l’instruction DEFINE peuvent s’appliquer à n’importe quelle instruction EVALUATE dans la requête.
Au moins une définition est requise dans une instruction DEFINE.
Les définitions de mesure d’une requête remplacent les mesures de modèle du même nom, mais elles sont utilisées uniquement dans la requête. Ils n’affectent pas la mesure du modèle.
Les noms VAR ont des restrictions uniques. Pour plus d’informations, consultez VAR - Paramètres.
DEFINE Exemple
DEFINE
VAR _firstyear = MIN('Date'[Fiscal Year])
VAR _lastyear = MAX('Date'[Fiscal Year])
TABLE 'Unbought products' = FILTER('Product', [Orders] + 0 = 0)
COLUMN 'Unbought products'[Year Range] = _firstyear & " - " & _lastyear
MEASURE 'Unbought products'[Unbought products] = COUNTROWS('Unbought products')
EVALUATE
'Unbought products'
EVALUATE
{[Unbought products]}
Retourne la table définie dans la requête DAX pour montrer les produits non achetés avec une colonne supplémentaire faisant référence à des variables définies. Une mesure est également définie et évaluée pour compter les lignes de produits non achetés.
DEFINE
MEASURE 'Pick a sales measure'[Orders] = DISTINCTCOUNT('Sales Order'[Sales Order])
MEASURE 'Pick a sales measure'[Customers] = CALCULATE(
COUNTROWS(Customer),
FILTER(
'Sales',
[Orders] > 0
)
)
MEASURE 'Pick a sales measure'[Orders per Customer] = DIVIDE(
[Orders],
[Customers],
0
)
EVALUATE
SUMMARIZECOLUMNS(
'Date'[Fiscal Year],
"Orders", [Orders],
"Customers", [Customers],
"Orders per Customer", [Orders per Customer]
)
Retourne un tableau évaluant trois mesures définies pour afficher les résultats par année fiscale. Toutes les mesures existent également dans le modèle, et les commandes par client sont modifiées dans la DAX requête.
Paramètres dans les DAX requêtes
Une instruction de requête bien définie DAX peut être paramétrée, puis utilisée avec des modifications uniquement dans les valeurs des paramètres.
La méthode Execute Method (XMLA) a un élément de collection Parameters Element (XMLA) qui permet aux paramètres d’être définis et affectés à une valeur. Dans la collection, chaque élément Parameter Element (XMLA) définit le nom du paramètre et une valeur.
Référencez les paramètres XMLA en préfixant le nom du paramètre par un @
caractère. N’importe quel emplacement dans la syntaxe où une valeur est autorisée, la valeur peut être remplacée par un appel de paramètre. Tous les paramètres XMLA sont tapés en tant que texte.
Important
Les paramètres définis dans la section paramètres et non utilisés dans l’élément <STATEMENT>
génèrent une réponse d’erreur dans XMLA.
Les paramètres utilisés et non définis dans l’élément <Parameters>
génèrent une réponse d’erreur dans XMLA.