Generate (MDX)

Applique un jeu à chaque membre d'un autre jeu, puis effectue la jointure par union des jeux résultants. Cette fonction retourne également une chaîne concaténée créée par l'évaluation d'une expression de chaîne sur un jeu.

Syntaxe

  
Set expression syntax  
Generate( Set_Expression1 ,  Set_Expression2 [ , ALL ]  )  
  
String expression syntax  
Generate( Set_Expression1 ,  String_Expression [ ,Delimiter ]  )  

Arguments

Set_Expression1
Expression MDX (Multidimensional Expressions) valide qui retourne un jeu.

Set_Expression2
Expression MDX (Multidimensional Expressions) valide qui retourne un jeu.

String_Expression
Expression de chaîne valide qui correspond généralement au nom du membre actuel (CurrentMember.Name) de chaque tuple dans le jeu spécifié.

Délimiteur
Délimiteur valide exprimé en tant qu'expression de chaîne.

Remarques

Si un deuxième jeu est spécifié, la fonction Generate retourne un ensemble généré en appliquant les tuples du deuxième jeu à chaque tuple du premier jeu, puis en joignant les ensembles résultants par union. Si ALL est spécifié, la fonction conserve les doublons dans l’ensemble résultant.

Si une expression de chaîne est spécifiée, la fonction Generate retourne une chaîne générée en évaluant l’expression de chaîne spécifiée par rapport à chaque tuple du premier jeu, puis en concaténant les résultats. Vous pouvez éventuellement délimiter la chaîne en séparant chaque résultat dans la chaîne concaténée obtenue.

Exemples

Définissez

Dans l'exemple suivant, la requête retourne un jeu qui contient le montant des ventes sur Internet de Mesure quatre fois, parce qu'il y a quatre membres dans le jeu [Date].[Calendar Year].[Calendar Year].MEMBERS :

SELECT   
GENERATE( [Date].[Calendar Year].[Calendar Year].MEMBERS  
, {[Measures].[Internet Sales Amount]}, ALL)  
ON 0  
FROM [Adventure Works]  

La suppression de ALL modifie la requête afin que le Montant des ventes sur Internet soit retourné une fois uniquement :

SELECT   
GENERATE( [Date].[Calendar Year].[Calendar Year].MEMBERS  
, {[Measures].[Internet Sales Amount]})  
ON 0  
FROM [Adventure Works]  

L’utilisation pratique la plus courante de Generate consiste à évaluer une expression d’ensemble complexe, telle que TopCount, sur un ensemble de membres. L'exemple de requête suivant affiche les 10 premiers produits pour chaque année civile sur les lignes :

SELECT   
{[Measures].[Internet Sales Amount]}  
ON 0,  
GENERATE(   
[Date].[Calendar Year].[Calendar Year].MEMBERS  
, TOPCOUNT(  
[Date].[Calendar Year].CURRENTMEMBER  
*  
[Product].[Product].[Product].MEMBERS  
,10, [Measures].[Internet Sales Amount]))  
ON 1  
FROM [Adventure Works]  

Notez qu’un top 10 différent s’affiche pour chaque année, et que l’utilisation de Générer est la seule façon d’obtenir ce résultat. La simple jonction croisée des années civiles et du jeu des 10 premiers produits affichent les 10 premiers produits pour toutes les périodes, pour chaque année, comme illustré dans l'exemple suivant :

SELECT   
{[Measures].[Internet Sales Amount]}  
ON 0,  
[Date].[Calendar Year].[Calendar Year].MEMBERS  
*   
TOPCOUNT(  
[Product].[Product].[Product].MEMBERS  
,10, [Measures].[Internet Sales Amount])  
ON 1  
FROM [Adventure Works]  

String

L’exemple suivant montre l’utilisation de Générer pour renvoyer une chaîne :

WITH   
MEMBER MEASURES.GENERATESTRINGDEMO AS  
GENERATE(   
[Date].[Calendar Year].[Calendar Year].MEMBERS,  
[Date].[Calendar Year].CURRENTMEMBER.NAME)  
MEMBER MEASURES.GENERATEDELIMITEDSTRINGDEMO AS  
GENERATE(   
[Date].[Calendar Year].[Calendar Year].MEMBERS,  
[Date].[Calendar Year].CURRENTMEMBER.NAME, " AND ")  
SELECT   
{MEASURES.GENERATESTRINGDEMO, MEASURES.GENERATEDELIMITEDSTRINGDEMO}  
ON 0  
FROM [Adventure Works]  

Notes

Cette forme de la fonction Generate peut être utile lors du débogage de calculs, car elle vous permet de retourner une chaîne affichant les noms de tous les membres d’un ensemble. Cela peut être plus facile à lire que la représentation MDX stricte d’un ensemble que la fonction SetToStr (MDX) retourne.

Voir aussi

Guide de référence des fonctions MDX (MDX)