GROUPBY
s’applique à :colonne calculéetable calculéemesurecalcul visuel
Note
Cette fonction est déconseillée pour une utilisation dans calculs visuels car elle retourne probablement des résultats sans signification.
La fonction GROUPBY est similaire à la fonction SUMMARIZE. Toutefois, GROUPBY n’effectue pas de CALCULATE implicite pour les colonnes d’extension qu’il ajoute. GROUPBY permet à une nouvelle fonction, CURRENTGROUP, d’être utilisée dans les fonctions d’agrégation dans les colonnes d’extension qu’elle ajoute. GROUPBY est utilisé 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 |
---|---|
table |
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) par laquelle 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ées entre guillemets doubles. |
expression |
Une des fonctions d’agrégation X avec le premier argument CURRENTGROUP(). Consultez la section With CURRENTGROUP ci-dessous pour obtenir la liste complète des fonctions d’agrégation X prises en charge. |
Valeur de retour
Tableau avec les colonnes sélectionnées pour les arguments groupBy_columnName et les colonnes d’extension désignées par les arguments de nom.
Remarques
La fonction GROUPBY effectue les opérations suivantes :
Commencez par la table spécifiée (et toutes les tables associées dans la direction « to-one »).
Créez un regroupement à l’aide de toutes les colonnes GroupBy (qui sont requises pour exister dans la table à partir de l’étape 1.).
Chaque groupe est une ligne dans le résultat, mais représente un ensemble de lignes dans la table d’origine.
Pour chaque groupe, évaluez les colonnes d’extension ajoutées. Contrairement à la fonction SUMMARIZE, une CALCULATE implicite n’est pas effectuée et le groupe n’est pas placé dans le contexte de filtre.
Chaque colonne pour laquelle vous définissez un nom doit avoir une expression correspondante ; sinon, une erreur est retournée. Le premier argument, nom, 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 de lignes sélectionné dans un ensemble de lignes récapitulatives par 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 des résultats intermédiaires à partir d’expressions de table DAX. Pour des agrégations efficaces sur des tables physiques dans le modèle, envisagez d’utiliser SUMMARIZECOLUMNS ou SUMMARIZE fonction.
Cette fonction n’est pas prise en charge pour une utilisation en mode DirectQuery lorsqu’elle est utilisée dans les colonnes calculées ou les règles de sécurité au niveau des lignes (RLS).
Avec CURRENTGROUP
CURRENTGROUP ne peut être utilisé que dans une expression qui définit une colonne d’extension dans la fonction GROUPBY. En effet, CURRENTGROUP retourne un ensemble de lignes de l’argument de table de GROUPBY qui appartiennent à la ligne actuelle du résultat GROUPBY. La fonction CURRENTGROUP ne prend aucun argument et n’est prise en charge que comme 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 le total des ventes regroupées par pays et par 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 pour trouver les ventes maximales dans chaque pays dans les 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])
)