Lire en anglais

Partager via


GÉNÉRER

s’applique à :colonne calculéetable calculéemesurecalcul visuel

Retourne une table avec le produit cartesien entre chaque ligne de table1 et la table qui résulte de l’évaluation 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 la table qui résulte de l’évaluation table2 dans le contexte de la ligne actuelle de table1

Remarques

  • Si l’évaluation de table2 pour la ligne active dans table1 retourne une table vide, la table de résultats ne contient pas la ligne actuelle de table1. Cela est différent de GENERATEALL() où la ligne actuelle de table1 sera incluse dans les résultats et les colonnes correspondant à table2 aura des valeurs Null pour cette ligne.

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

  • 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).

Exemple

Dans l’exemple suivant, l’utilisateur souhaite une table récapitulative des ventes par région et catégorie de produit pour le canal Resellers, comme le tableau suivant :

SalesTerritory[SalesTerritoryGroup] ProductCategory[ProductCategoryName] [Reseller Sales]
Europe Accessoires 142 227,27 $
Europe Vélos 9 970 200,44 $
Europe Vêtement 365 847,63 $
Europe Composants 2 214 440,19 $
Amérique du Nord Accessoires 379 305,15 $
Amérique du Nord Vélos 52 403 796,85 $
Amérique du Nord Vêtement 1 281 193,26 $
Amérique du Nord Composants 8 882 848,05 $
Pacifique Accessoires 12 769,57 $
Pacifique Vélos 710 677,75 $
Pacifique Vêtement 22 902,38 $
Pacifique Composants 108 549,71 $

La formule suivante 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]), produit une table de groupes de territoires, où chaque ligne est un groupe de territoires, comme indiqué ci-dessous :

    SalesTerritory[SalesTerritoryGroup]
    Amérique du Nord
    Europe
    Pacifique
    NA
  2. La deuxième instruction SUMMARIZE, SUMMARIZE(ProductCategory, [ProductCategoryName], "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])), produit une table des groupes de catégories de produits avec les ventes reseller pour chaque groupe, comme indiqué ci-dessous :

    ProductCategory[ProductCategoryName] [Reseller Sales]
    Vélos 63 084 675,04 $
    Composants 11 205 837,96 $
    Vêtement 1 669 943,27 $
    Accessoires 534 301,99 $
  3. Toutefois, lorsque vous prenez la table ci-dessus et que vous l’évaluez dans le contexte de chaque ligne de la table groupes de territoires, vous obtenez des résultats différents pour chaque territoire.