GENERATE
S’applique à :Colonne calculéeTable calculéeMesureCalcul de visuel
Retourne une table avec le produit cartésien entre chaque ligne de table1 et la table résultant de l’évaluation de table2 dans le contexte de la ligne actuelle de table1.
Syntaxe
GENERATE(<table1>, <table2>)
Paramètres
Terme | Définition |
---|---|
table1 | Toute expression DAX qui retourne une table. |
table2 | Toute expression DAX qui retourne une table. |
Valeur de retour
Table avec le produit cartésien entre chaque ligne de table1 et table résultant de l’évaluation de table2 dans le contexte de la ligne actuelle de table1
Remarques
Si l’évaluation de table2 pour la ligne actuelle de table1 retourne une table vide, la table de résultats ne contient pas la ligne actuelle de table1. Cette fonction se distingue de GENERATEALL() qui inclut la ligne actuelle de table1 dans les résultats, et les colonnes correspondant à table2 présentent des valeurs null pour cette ligne.
Tous les noms de colonne de table1 et table2 doivent être différents. Sinon, une erreur est retournée.
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).
Exemple
Dans l’exemple suivant, l’utilisateur souhaite une table récapitulative des ventes par région et par catégorie de produit pour le réseau de revendeurs, à l’image de la table suivante :
SalesTerritory[SalesTerritoryGroup] | ProductCategory[ProductCategoryName] | [Reseller Sales] |
---|---|---|
Europe | Accessories | $ 142,227.27 |
Europe | Bikes | $ 9,970,200.44 |
Europe | Clothing | $ 365,847.63 |
Europe | Components | $ 2,214,440.19 |
Amérique du Nord | Accessories | $ 379,305.15 |
Amérique du Nord | Bikes | $ 52,403,796.85 |
Amérique du Nord | Clothing | $ 1,281,193.26 |
Amérique du Nord | Components | $ 8,882,848.05 |
Pacifique | Accessories | $ 12,769.57 |
Pacifique | Bikes | $ 710,677.75 |
Pacifique | Clothing | $ 22,902.38 |
Pacifique | Composants | $ 108,549.71 |
La formule suivante génère la table ci-dessus :
GENERATE(
SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])
,SUMMARIZE(ProductCategory
, [ProductCategoryName]
, "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])
)
)
La première instruction SUMMARIZE,
SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])
, génère une table des groupes de secteurs, où chaque ligne est un groupe de secteurs, comme ci-dessous :SalesTerritory[SalesTerritoryGroup] Amérique du Nord Europe Pacifique N/A La deuxième instruction SUMMARIZE,
SUMMARIZE(ProductCategory, [ProductCategoryName], "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD]))
, génère une table de groupes de catégories de produit avec les ventes des revendeurs pour chaque groupe, comme ci-dessous :ProductCategory[ProductCategoryName] [Reseller Sales] Bikes $ 63,084,675.04 Composants $ 11,205,837.96 Clothing $ 1,669,943.27 Accessories $ 534,301.99 Cependant, si vous évaluez la table ci-dessus dans le contexte de chaque ligne de la table des groupes de secteurs, vous obtenez des résultats différents pour chaque secteur.