Création de jeux nommés Query-Scoped (MDX)

Si un jeu nommé n’est requis que pour une seule requête d'expressions multidimensionnelles (MDX), vous pouvez définir ce jeu nommé en utilisant le mot-clé WITH. Un jeu nommé créé à l’aide du mot clé WITH n’existe plus une fois la requête exécutée.

Comme indiqué dans cette rubrique, la syntaxe du mot clé WITH est assez flexible, même en tenant compte de l’utilisation de fonctions pour définir l’ensemble nommé.

Remarque

Pour plus d’informations sur les jeux nommés, consultez Génération de jeux nommés dans MDX (MDX).

Syntaxe du mot-clé WITH

Utilisez la syntaxe suivante pour ajouter le mot clé WITH à une instruction MDX SELECT :

[ WITH <SELECT WITH clause> [ , <SELECT WITH clause> ... ] ]   
SELECT [ * | ( <SELECT query axis clause> [ , <SELECT query axis clause> ... ] ) ]  
FROM <SELECT subcube clause>   
[ <SELECT slicer axis clause> ]  
[ <SELECT cell property list clause> ]  
  
<SELECT WITH clause> ::=  
   ( SET Set_Identifier AS 'Set_Expression')  
  

Dans la syntaxe du mot clé WITH, le paramètre Set_Identifier contient l’alias du jeu nommé. Le Set_Expression paramètre contient l’expression set à laquelle l’alias de jeu nommé fait référence.

AVEC exemple de mot-clé

La requête MDX suivante examine les ventes unitaires des différents vins de Chardonnay et de Chablis, dans la base de données d'exemple de Microsoft SQL Server 2000 Analysis Services. Cette requête, bien que relativement simple en termes de jeu de résultats, est longue et difficile à gérer lorsque vous devez la maintenir.

SELECT  
   {[Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Good].[Good Chardonnay],   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Pearl].[Pearl Chardonnay],   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Portsmouth].[Portsmouth Chardonnay],   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Top Measure].[Top Measure Chardonnay],   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Walrus].[Walrus Chardonnay],   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Good].[Good Chablis Wine],   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Pearl].[Pearl Chablis Wine],   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Portsmouth].[Portsmouth Chablis Wine],   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Top Measure].[Top Measure Chablis Wine],   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Walrus].[Walrus Chablis Wine]} ON COLUMNS,  
   {Measures.[Unit Sales]} ON ROWS  
FROM Sales  

Pour faciliter la maintenance de la requête MDX précédente, vous pouvez créer un ensemble nommé pour la requête en utilisant le mot clé WITH. Le code suivant montre comment utiliser le mot clé WITH pour créer un jeu nommé, [ChardonnayChablis], et comment l’ensemble nommé rend l’instruction SELECT plus courte et plus facile à gérer.

WITH SET [ChardonnayChablis] AS  
   {[Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Good].[Good Chardonnay],  
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Pearl].[Pearl Chardonnay],  
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Portsmouth].[Portsmouth Chardonnay],  
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Top Measure].[Top Measure Chardonnay],  
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Walrus].[Walrus Chardonnay],  
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Good].[Good Chablis Wine],  
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Pearl].[Pearl Chablis Wine],  
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Portsmouth].[Portsmouth Chablis Wine],  
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Top Measure].[Top Measure Chablis Wine],  
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Walrus].[Walrus Chablis Wine]}  
  
SELECT  
   [ChardonnayChablis] ON COLUMNS,  
   {Measures.[Unit Sales]} ON ROWS  
FROM Sales  

Utilisation de fonctions avec le mot clé WITH

Bien que vous puissiez définir explicitement chaque membre d’un ensemble nommé, cette approche peut produire une expression longue. Pour faciliter la création et la maintenance d’un ensemble nommé, vous pouvez utiliser les fonctions MDX pour définir les membres.

Par exemple, l’exemple de requête MDX suivant utilise les fonctions MDX Filter, CurrentMember et Name et la fonction VBA InStr pour créer le [ChardonnayChablis] jeu nommé. Cette version de l’ensemble [ChardonnayChablis] nommé est identique à la version définie explicitement indiquée précédemment dans cette rubrique.

WITH SET [ChardonnayChablis] AS  
   'Filter([Product].Members, (InStr(1, [Product].CurrentMember.Name, "chardonnay") <> 0) OR (InStr(1, [Product].CurrentMember.Name, "chablis") <> 0))'  
  
SELECT  
   [ChardonnayChablis] ON COLUMNS,  
   {Measures.[Unit Sales]} ON ROWS  
FROM Sales  
  

Voir aussi

SELECT, instruction (MDX)
Création de jeux nommés Session-Scoped (MDX)