Partager via


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])  
)  
)  
  1. 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
  2. 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
  3. 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.