Condividi tramite


Query MDX di base

La query MDX (Multidimensional Expressions) di base corrisponde all'istruzione SELECT, la query eseguita più di frequente in MDX. Se si conosce la sintassi dell'istruzione MDX SELECT, si sa creare una semplice query tramite questa istruzione e si capisce perché in un'istruzione SELECT è necessario specificare un set di risultati, si avrà la padronanza dell'utilizzo di MDX per l'esecuzione di query in dati multidimensionali.

Impostazione di un set di risultati

In MDX l'istruzione SELECT specifica un set di risultati contenente un subset dei dati multidimensionali di un cubo che sono stati restituiti. Per specificare un set di risultati, una query MDX deve contenere le informazioni seguenti:

  • Numero di assi o set di gerarchie. In una query MDX è possibile specificare un massimo di 128 assi.
  • I membri di ogni dimensione da includere in ogni asse della query MDX.
  • Il nome del cubo che definisce il contesto della query MDX.
  • I membri di un asse di sezionamento in base a cui vengono sezionati i dati per i membri degli assi della query. Per ulteriori informazioni su asse di sezionamento e asse della query, vedere Restrizione della query con gli assi della query e di sezionamento (MDX).

Per identificare gli assi della query, il cubo che imposta il contesto della query e l'asse di sezionamento, è necessario specificare nell'istruzione MDX SELECT le clausole seguenti:

  • Clausola SELECT che determina gli assi della query di un'istruzione MDX SELECT. Per ulteriori informazioni sulla formulazione degli assi della query in una clausola SELECT, vedere Impostazione del contenuto di un asse della query (MDX).
  • Clausola FROM che determina l'origine dei dati multidimensionale da utilizzare durante l'estrazione dei dati per il popolamento del set di risultati dell'istruzione MDX SELECT. Per ulteriori informazioni sulla clausola FROM, vedere Istruzione SELECT (MDX).
  • Clausola WHERE che, se specificata, determina la dimensione o il membro da utilizzare come asse di sezionamento per limitare l'estrazione dei dati a una dimensione o un membro specifico. Per ulteriori informazioni sulla formulazione di un asse di sezionamento in una clausola WHERE, vedere Impostazione del contenuto di un asse di sezionamento (MDX).

[!NOTA] Per ulteriori informazioni sulle varie clausole dell'istruzione SELECT, vedere Istruzione SELECT (MDX).

Sintassi dell'istruzione SELECT

La sintassi seguente illustra un'istruzione SELECT di base in cui sono specificate le clausole SELECT, FROM e WHERE:

[ 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> ]

L'istruzione MDX SELECT supporta sintassi facoltativa, ad esempio la parola chiave WITH, l'utilizzo di funzioni MDX per la creazione di membri tramite il calcolo per l'inclusione di un asse o asse di sezionamento e la restituzione dei valori di proprietà di celle specifiche come parte della query. Per ulteriori informazioni sull'istruzione MDX SELECT, vedere Istruzione SELECT (MDX).

Confronto tra la sintassi dell'istruzione MDX SELECT e SQL

Il formato della sintassi di un'istruzione MDX SELECT è simile alla sintassi SQL. Esistono tuttavia alcune differenze:

  • La sintassi MDX separa i set racchiudendo le tuple o i membri tra parentesi graffe, ovvero tra i caratteri { e }. Per ulteriori informazioni sulla sintassi di membri, tuple e set vedere Utilizzo di membri, tuple e set (MDX).
  • Le query MDX possono includere nell'istruzione SELECT un massimo di 128 assi della query, tuttavia solo i primi cinque di questi ultimi hanno un alias. È possibile fare riferimento a un asse in base alla sua posizione ordinale nella query MDX o in base all'alias, se disponibile. In modo analogo a una query SQL, la clausola FROM indica l'origine dei dati per la query MDX. La clausola FROM di MDX tuttavia è limitata a un solo cubo. Le informazioni di altri cubi possono essere recuperate per singoli valori tramite la funzione LookupCube.
  • La clausola WHERE descrive l'asse di sezionamento. Se nella clausola WHERE non è specificata alcuna gerarchia, in Microsoft SQL Server 2005 Analysis Services (SSAS) viene presunto che le gerarchie non incluse in modo esplicito in un asse della query siano incluse in modo implicito nell'asse di sezionamento e viene applicato un filtro ai membri predefiniti della gerarchia. La clausola WHERE può modificare il processo di filtraggio per la gerarchia specificata, consentendo un controllo accurato dei dati inclusi.

Esempio di istruzione SELECT

Nell'esempio seguente viene illustrata una query MDX di base in cui è utilizzata l'istruzione SELECT. Questa query restituisce un set di risultati contenente le vendite e le imposte relative agli anni 2002 e 2003 per le aree di vendita della zona sudoccidentale.

SELECT
    { [Measures].[Sales Amount], 
        [Measures].[Tax Amount] } ON COLUMNS,
    { [Date].[Fiscal].[Fiscal Year].&[2002], 
        [Date].[Fiscal].[Fiscal Year].&[2003] } ON ROWS
FROM [Adventure Works]
WHERE ( [Sales Territory].[Southwest] )

Nell'esempio la query definisce le informazioni del set di risultati seguenti:

  • La clausola SELECT imposta le assi della query come membri Sales Amount e Tax Amount della dimensione Measures e i membri 2002 e 2003 della dimensione Date.
  • La clausola FROM indica che l'origine dei dati è il cubo Adventure Works.
  • La clausola WHERE definisce l'asse di sezionamento come membro Southwest della dimensione Sales Territory.

Si noti che nella query di esempio sono utilizzati anche gli alias di asse COLUMNS e ROWS. In alternativa è possibile specificare la posizione ordinale degli assi. Nell'esempio seguente viene illustrata la stessa query MDX in cui è tuttavia specificata la posizione ordinale dei vari assi:

SELECT
    { [Measures].[Sales Amount], 
        [Measures].[Tax Amount] } ON 0,
    { [Date].[Fiscal].[Fiscal Year].&[2002], 
        [Date].[Fiscal].[Fiscal Year].&[2003] } ON 1
FROM [Adventure Works]
WHERE ( [Sales Territory].[Southwest] )
ms144785.note(it-it,SQL.90).gifImportante:
I set vengono in genere valutati nel contesto più ampio del cubo. È tuttavia possibile forzare la valutazione dei set all'interno del contesto corrente utilizzando la parola chiave EXISTING (MDX).

Vedere anche

Riferimento

Istruzione SELECT (MDX)

Concetti

Concetti di base su MDX (MDX)

Guida in linea e informazioni

Assistenza su SQL Server 2005