AUTOMATIQUEMENTGENERATE

Retourne une table avec le produit cartésien entre chaque ligne dans table1 et la table qui résulte de l’évaluation de table2 dans le contexte de la ligne actuelle de table1.Returns a table with the Cartesian product between each row in table1 and the table that results from evaluating table2 in the context of the current row from table1.

SyntaxeSyntax

GENERATE(<table1>, <table2>)  

les paramètresParameters

TermeTerm DéfinitionDefinition
ouvertetable1 Toute expression DAX qui retourne une table.Any DAX expression that returns a table.
tableau2table2 Toute expression DAX qui retourne une table.Any DAX expression that returns a table.

Valeur de retourReturn value

Une table avec le produit cartésien entre chaque ligne dans table1 et la table qui résulte de l’évaluation de table2 dans le contexte de la ligne actuelle de table1A table with the Cartesian product between each row in table1 and the table that results from evaluating table2 in the context of the current row from table1

ConcernantRemarks

  • Si l’évaluation de table2 pour la ligne actuelle dans table1 retourne une table vide, la table de résultats ne contient pas la ligne actuelle de la table1.If the evaluation of table2 for the current row in table1 returns an empty table, then the result table will not contain the current row from table1. Cela est différent de GENERATEALL () où la ligne actuelle de table1 sera incluse dans les résultats et les colonnes correspondant à table2 comporteront des valeurs NULL pour cette ligne.This is different than GENERATEALL() where the current row from table1 will be included in the results and columns corresponding to table2 will have null values for that row.

  • Tous les noms de colonnes de table1 et table2 doivent être différents, sinon une erreur est retournée.All column names from table1 and table2 must be different or an error is returned.

ExampleExample

Dans l’exemple suivant, l’utilisateur souhaite obtenir une table de synthèse des ventes par région et par catégorie de produit pour le canal des revendeurs, comme le tableau suivant :In the following example the user wants a summary table of the sales by Region and Product Category for the Resellers channel, like the following table:

SalesTerritory [SalesTerritoryGroup]SalesTerritory[SalesTerritoryGroup] ProductCategory [ProductCategoryName]ProductCategory[ProductCategoryName] [Reseller Sales][Reseller Sales]
EuropeEurope AccessoriesAccessories $142 227,27$ 142,227.27
EuropeEurope BikesBikes $9 970 200,44$ 9,970,200.44
EuropeEurope HabillementClothing $365 847,63$ 365,847.63
EuropeEurope -Components $2 214 440,19$ 2,214,440.19
Amérique du NordNorth America AccessoriesAccessories $379 305,15$ 379,305.15
Amérique du NordNorth America BikesBikes $52 403 796,85$ 52,403,796.85
Amérique du NordNorth America HabillementClothing $1 281 193,26$ 1,281,193.26
Amérique du NordNorth America -Components $8 882 848,05$ 8,882,848.05
GMT+1Pacific AccessoriesAccessories $12 769,57$ 12,769.57
GMT+1Pacific BikesBikes $710 677,75$ 710,677.75
GMT+1Pacific HabillementClothing $22 902,38$ 22,902.38
GMT+1Pacific -Components $108 549,71$ 108,549.71

Le code suivant génère la table ci-dessus :The following code produces the above table:

GENERATE(  
SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])  
,SUMMARIZE(ProductCategory   
, [ProductCategoryName]  
, "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])  
)  
)  
  1. La première instruction de synthèse, SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup]), produit une table de groupes de secteurs, où chaque ligne est un groupe de secteurs, comme indiqué ci-dessous :The first SUMMARIZE statement, SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup]), produces a table of territory groups, where each row is a territory group, as shown below:

    SalesTerritory [SalesTerritoryGroup]SalesTerritory[SalesTerritoryGroup]
    Amérique du NordNorth America
    EuropeEurope
    GMT+1Pacific
    N/ANA
  2. La deuxième instruction de synthèse, SUMMARIZE(ProductCategory, [ProductCategoryName], "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])), produit une table de groupes de catégories de produits avec les ventes du revendeur pour chaque groupe, comme indiqué ci-dessous :The second SUMMARIZE statement, SUMMARIZE(ProductCategory, [ProductCategoryName], "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])), produces a table of Product Category groups with the Reseller sales for each group, as shown below:

    ProductCategory [ProductCategoryName]ProductCategory[ProductCategoryName] [Reseller Sales][Reseller Sales]
    BikesBikes $63 084 675,04$ 63,084,675.04
    -Components $11 205 837,96$ 11,205,837.96
    HabillementClothing $1 669 943,27$ 1,669,943.27
    AccessoriesAccessories $534 301,99$ 534,301.99
  3. Toutefois, lorsque vous prenez le tableau ci-dessus et que vous l’évaluez dans le contexte de chaque ligne de la table des groupes de secteurs, vous obtenez des résultats différents pour chaque secteur.However, when you take the above table and evaluate it under the context of each row from the territory groups table, you obtain different results for each territory.