Partager via


GENERATE, fonction (DAX)

Retourne une table avec le produit cartésien de chaque ligne de table1 et de la table qui résulte de l'évaluation de table2 dans le contexte de la ligne actuelle à partir de table1.

Syntaxe

GENERATE(<table1>, <table2>)

Paramètres

  • 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 de chaque ligne de table1 et de la table qui résulte de l'évaluation de table2 dans le contexte de la ligne actuelle à partir de table1.

Notes

  • 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. Ceci est différent de GENERATEALL() où la ligne actuelle de table1 est incluse dans les résultats et où les colonnes qui correspondent à table2 ont des valeurs Null pour cette ligne.

  • Tous les noms de colonnes de table1 et table2 doivent être différents ; sinon, une erreur est retournée.

Exemple

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 indiqué dans le tableau suivant :

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

North America

Accessories

$ 379,305.15

North America

Bikes

$ 52,403,796.85

North America

Clothing

$ 1,281,193.26

North America

Components

$ 8,882,848.05

Pacific

Accessories

$ 12,769.57

Pacific

Bikes

$ 710,677.75

Pacific

Clothing

$ 22,902.38

Pacific

Components

$ 108,549.71

Le code suivant produit le tableau 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 de groupes de secteurs, où chaque ligne est un groupe relatif au secteur, comme indiqué ci-dessous :

    SalesTerritory[SalesTerritoryGroup]

    North America

    Europe

    Pacific

    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 produits avec les ventes du revendeur pour chaque groupe, comme indiqué ci-dessous :

    ProductCategory[ProductCategoryName]

    [Reseller Sales]

    Bikes

    $ 63,084,675.04

    Components

    $ 11,205,837.96

    Clothing

    $ 1,669,943.27

    Accessories

    $ 534,301.99

  3. Toutefois, lorsque vous utilisez 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.