Condividi tramite


Creazione di set denominati in MDX (MDX)

Un'espressione set può essere costituita da una dichiarazione lunga e complessa e risultare pertanto difficile da seguire o comprendere oppure essere utilizzata con una frequenza tale che la necessità di definire ripetutamente il set può risultare gravosa. Per semplificare l'utilizzo di espressioni lunghe, complesse o utilizzate di frequente, le espressioni MDX consentono di definire un'espressione di questo tipo come set denominato.

Un set denominato è essenzialmente un'espressione set a cui è stato assegnato un alias. Un set denominato può incorporare qualsiasi funzione o membro che è normalmente possibile incorporare in un set. Poiché in MDX gli alias dei set denominati vengono gestiti come espressioni set, è possibile utilizzare tali alias in tutte le situazioni in cui è consentito utilizzare un'espressione set.

Un set denominato può essere definito con uno dei contesti seguenti:

  • Ambito query   Per creare un set denominato definito come parte di una query MDX, pertanto con ambito limitato alla query, è necessario utilizzare la parola chiave WITH. Tale set denominato può essere quindi utilizzato in un'istruzione MDX SELECT. In questo modo il set denominato creato utilizzando la parola chiave WITH può essere modificato senza alterare l'istruzione SELECT.

    Per ulteriori informazioni sull'utilizzo della parola chiave WITH per la creazione di set denominati, vedere Creazione di set denominati con ambito query (MDX).

  • **Ambito sessione   **Per creare un set denominato con ambito più ampio rispetto al contesto della query, ovvero con ambito corrispondente alla durata della sessione MDX, è possibile utilizzare l'istruzione CREATE SET. Un set denominato definito utilizzando un'istruzione CREATE SET è disponibile per tutte le query MDX in tale sessione. L'istruzione CREATE SET risulta utile, ad esempio, in un'applicazione client che riutilizza in modo consistente un set in vari tipi di query.

    Per ulteriori informazioni sull'utilizzo dell'istruzione CREATE SET per la creazione di set denominati in una sessione, vedere Creazione di set denominati con ambito sessione (MDX).

  • **Ambito globale   **Per creare un set denominato con ambito più ampio rispetto al contesto della sessione dell'utente, ovvero con ambito corrispondente alla durata dell'istanza in esecuzione, è possibile utilizzare l'istruzione CREATE SET nello script MDX predefinito. Per ulteriori informazioni, vedere Script MDX di base (MDX). Un set denominato definito utilizzando l'istruzione CREATE SET nello script MDX predefinito è disponibile per tutti gli utenti in tutte le query MDX in qualsiasi sessione.

Il contenuto dei set denominati può essere valutato al momento della creazione (modalità statica) o in qualsiasi momento durante l'utilizzo in una query (modalità dinamica). La sintassi CREATE SET [STATIC|DYNAMIC] definisce quando il set viene valutato. Per ulteriori informazioni, vedere Istruzione CREATE SET (MDX)Istruzione CREATE SET (MDX). Per impostazione predefinita, i set vengono creati come STATIC se nell'istruzione di creazione non viene specificata alcuna parola chiave.

I set denominati con un comportamento dinamico possono essere definiti globalmente (nello script MDX predefinito) o nell'ambito di una sessione. Questi set denominati vengono tuttavia valutati solo al momento della risoluzione di una query (ambito query). Se viene effettuato un tentativo di valutare un set dinamico in un ambito sessione o globale, viene generato un errore. Questo comportamento è valido anche per i riferimenti indiretti ai set dinamici. Di seguito è riportato un elenco di calcoli, definiti globalmente o nell'ambito sessione, che possono fare riferimento a set denominati dinamici.

  • Membri calcolati

  • Set denominati dinamici

  • Indicatori di prestazioni chiave (KPI)

  • Espressioni sul lato destro (RHS, Right Hand Side) di un'espressione di assegnazione

  • Espressione di condizione della formula per il calcolo di celle

  • Espressione valore della formula per il calcolo di celle

In una query MDX è possibile fare riferimento a un set dinamico, poiché quest'ultimo verrà valutato nell'ambito query.

Nota di attenzioneAttenzione

Poiché i set dinamici non vengono valutati durante l'esecuzione del comando CREATE SET, viene creato un collegamento a tutti gli oggetti, statici o dinamici, da cui dipende il set dinamico. È pertanto possibile eliminare tutti gli oggetti a cui viene fatto riferimento, o alcuni di essi, solo in seguito all'eliminazione del set dinamico. Se, ad esempio, viene creato un set denominato dinamico nella sessione che fa riferimento a un membro calcolato della sessione, non è possibile eliminare il membro calcolato fino a quando esiste il set denominato dinamico.

Risoluzione di set denominati dinamici

In qualsiasi momento possono essere presenti fino a tre versioni di un set dinamico:

  • Una versione nell'ambito globale utilizzata nello script del cubo

  • Una versione nell'ambito sessione utilizzata nei calcoli di sessione

  • Una versione nell'ambito query utilizzata nei calcoli della query

La versione utilizzata nel calcolo dipende interamente dal contesto dell'espressione e dalla modalità con cui viene fatto riferimento al set denominato dinamico. Questo è valido soprattutto per i riferimenti indiretti.

Nel caso, ad esempio, di un membro calcolato della sessione che utilizza un set denominato dinamico di sessione, se si utilizza tale membro calcolato in una query, il set denominato viene valutato nel'ambito sessione e la clausola WHERE della query non ha alcun effetto sul set denominato. Se tuttavia si utilizza lo stesso set denominato dinamico direttamente nella query, il set denominato viene valutato nell'ambito query e la clausola WHERE potrebbe influire sui risultati del set denominato.