Condividi tramite


Creazione di set denominati Query-Scoped (MDX)

Se un set denominato è necessario solo per una singola query MDX (Multidimensional Expressions), è possibile definire tale set denominato usando la parola chiave WITH. Un set denominato creato tramite la parola chiave WITH non esiste più dopo il completamento dell'esecuzione della query.

Come illustrato in questo argomento, la sintassi della parola chiave WITH è abbastanza flessibile, anche accomodando l'uso di funzioni per definire il set denominato.

Annotazioni

Per altre informazioni sui set denominati, vedere Compilazione di set denominati in MDX (MDX).

Sintassi della parola chiave WITH

Usare la sintassi seguente per aggiungere la parola chiave WITH a un'istruzione 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')  
  

Nella sintassi per la parola chiave WITH il Set_Identifier parametro contiene l'alias per il set denominato. Il Set_Expression parametro contiene l'espressione set a cui fa riferimento l'alias del set denominato.

Esempio di parola chiave WITH

Nella query MDX seguente vengono esaminate le vendite in unità dei vari vini Chardonnay e Chablis in FoodMart 2000, il database di esempio per Microsoft SQL Server 2000 Analysis Services. Questa query, anche se abbastanza semplice in termini di set di risultati, è lunga e difficile quando è necessario gestire una query di questo tipo.

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  

Per semplificare la manutenzione della query MDX precedente, è possibile creare un set denominato per la query usando la parola chiave WITH. Il codice seguente illustra come usare la parola chiave WITH per creare un set denominato, [ChardonnayChablis]e come il set denominato rende l'istruzione SELECT più breve e più semplice da gestire.

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  

Uso di funzioni insieme alla parola chiave WITH

Sebbene sia possibile definire in modo esplicito ogni membro di un insieme nominato, questo approccio può produrre una dichiarazione lunga. Per semplificare la creazione e la manutenzione di un set denominato, è possibile usare le funzioni MDX per definire i membri.

L'esempio di query MDX seguente, ad esempio, usa le funzioni MDX Filter, CurrentMember e Name MDX e la funzione InStr VBA per creare il [ChardonnayChablis] set denominato. Questa versione del [ChardonnayChablis] set denominato corrisponde alla versione definita in modo esplicito illustrata in precedenza in questo argomento.

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  
  

Vedere anche

Istruzione SELECT (MDX)
Creazione di set denominati Session-Scoped (MDX)