GROUPBY
S’applique à :Colonne calculéeTableau calculéeMesureCalcul de visuel
Remarque
L’utilisation de cette fonction est déconseillée dans les calculs de visuels, car il est probable qu’elle retourne des résultats non pertinents.
La fonction GROUPBY est similaire à la fonction SUMMARIZE. Toutefois, GROUPBY n’utilise pas implicitement CALCULATE sur les colonnes d’extension qu’elle ajoute. GROUPBY permet d’utiliser une nouvelle fonction, CURRENTGROUP, au sein des fonctions d’agrégation dans les colonnes d’extension qu’elle ajoute. GROUPBY s’utilise pour effectuer plusieurs agrégations dans une analyse de table unique.
Syntaxe
GROUPBY (<table> [, <groupBy_columnName> [, <groupBy_columnName> [, …]]] [, <name>, <expression> [, <name>, <expression> [, …]]])
Paramètres
Terme | Définition |
---|---|
tableau | Toute expression DAX qui retourne une table de données. |
groupBy_columnName | Nom d’une colonne existante dans la table (ou dans une table associée) selon lequel les données doivent être regroupées. Ce paramètre ne peut pas être une expression. |
name | Nom donné à une nouvelle colonne qui est ajoutée à la liste des colonnes GroupBy, placé entre guillemets doubles. |
expression | Une des fonctions d’agrégation X avec CURRENTGROUP() comme premier argument. Consultez la section « Avec CURRENTGROUP » plus loin pour voir la liste complète des fonctions d’agrégation X prises en charge. |
Valeur renvoyée
Table avec les colonnes sélectionnées pour les arguments groupBy_columnName et les colonnes d’extension désignées par les arguments name.
Notes
La fonction GROUPBY effectue les opérations suivantes :
Elle commence avec la table spécifiée (et toutes les tables associées dans la direction « à un »).
Elle crée un regroupement avec toutes les colonnes GroupBy (qui doivent exister dans la table depuis l’étape 1).
Chaque groupe correspond à une ligne du résultat, mais représente un ensemble de lignes dans la table d’origine.
Pour chaque groupe, elle évalue les colonnes d’extension qui sont ajoutées. Contrairement à la fonction SUMMARIZE, aucune fonction CALCULATE implicite n’est exécutée et le groupe n’est pas inclus dans le contexte de filtre.
Chaque colonne pour laquelle vous définissez un nom doit avoir une expression correspondante ; dans le cas contraire, une erreur est retournée. Le premier argument, name, définit le nom de la colonne dans les résultats. Le deuxième argument, expression, définit le calcul effectué pour obtenir la valeur de chaque ligne de cette colonne.
groupBy_columnName doit être dans la table ou dans une table associée.
Chaque nom doit être placé entre guillemets doubles.
La fonction regroupe un ensemble sélectionné de lignes en un ensemble de lignes de synthèse selon les valeurs d’une ou plusieurs colonnes groupBy_columnName. Une ligne est retournée pour chaque groupe.
GROUPBY est principalement utilisé pour effectuer des agrégations sur les résultats intermédiaires d’expressions de table DAX. Pour réaliser efficacement des agrégations sur des tables physiques dans le modèle, utilisez la fonction SUMMARIZECOLUMNS ou SUMMARIZE.
Cette fonction n’est pas prise en charge pour une utilisation en mode DirectQuery quand elle est utilisée dans des colonnes calculées ou des règles de sécurité au niveau des lignes (RLS).
Avec CURRENTGROUP
CURRENTGROUP peut uniquement être utilisé dans une expression qui définit une colonne d’extension dans la fonction GROUPBY. En effet, CURRENTGROUP retourne un ensemble de lignes à partir de l’argument table de GROUPBY, qui appartiennent à la ligne actuelle du résultat de GROUPBY. La fonction CURRENTGROUP ne prend pas d’arguments et elle est seulement prise en charge en tant que premier argument de l’une des fonctions d’agrégation suivantes : AVERAGEX, COUNTAX, COUNTX, GEOMEANX, MAXX, MINX, PRODUCTX, STDEVX.S, STDEVX.P, SUMX, VARX.S, VARX.P.
Exemple
L’exemple suivant calcule d’abord les ventes totales regroupées par pays et catégorie de produit sur les tables physiques à l’aide de la fonction SUMMARIZECOLUMNS. Il utilise ensuite la fonction GROUPBY pour analyser le résultat intermédiaire de la première étape et connaître ainsi le nombre maximal de ventes dans chaque pays pour les différentes catégories de produits.
DEFINE
VAR SalesByCountryAndCategory =
SUMMARIZECOLUMNS(
Geography[Country],
Product[Category],
"Total Sales", SUMX(Sales, Sales[Price] * Sales[Qty])
)
EVALUATE
GROUPBY(
SalesByCountryAndCategory,
Geography[Country],
"Max Sales", MAXX(CURRENTGROUP(), [Total Sales])
)