Utilizzo dell'istruzione DRILLTHROUGH per il recupero di dati di origine (MDX)
Nel linguaggio MDX (Multidimensional Expressions) è disponibile l'istruzione DRILLTHROUGH, che consente di recuperare i dati di origine per una cella di un cubo.
Per eseguire un'istruzione DRILLTHROUGH su un cubo, è necessario definire un'azione drill-through per tale cubo. Per definire un'azione drill-through, in Progettazione cubi di SQL Server Data Tools (SSDT) nel riquadro Azioni fare clic sul pulsante Nuova azione drill-through della barra degli strumenti. Nella nuova azione drill-through specificare il nome, la destinazione e la condizione dell'azione, nonché le colonne restituite dall'istruzione DRILLTHROUGH.
Sintassi dell'istruzione DRILLTHROUGH
La sintassi dell'istruzione DRILLTHROUGH è la seguente:
<drillthrough> ::= DRILLTHROUGH [<Max_Rows>] [<First_Rowset>] <MDX select> [<Return_Columns>]
< Max_Rows> ::= MAXROWS <positive number>
<First_Rowset> ::= FIRSTROWSET <positive number>
<Return_Columns> ::= RETURN <member or attribute> [, <member or attribute>]
La clausola SELECT identifica la cella del cubo che contiene i dati di origine da recuperare. Questa clausola SELECT è identica a una normale istruzione SELECT MDX, con la differenza che in questo caso nella clausola SELECT è possibile specificare solo un membro per ogni asse. Se su un asse sono specificati più membri, verrà generato un errore.
La sintassi <Max_Rows> specifica il numero massimo di righe in ogni set di righe restituito. Se il provider OLE DB utilizzato per connettersi all'origine dei dati non supporta DBPROP_MAXROWS, l'impostazione <Max_Rows> verrà ignorata.
La sintassi <First_Rowset> identifica la partizione il cui set di righe viene restituito per primo.
La sintassi <Return_Columns> identifica le colonne del database sottostante da restituire.
Esempio di istruzione DRILLTHROUGH
Nell'esempio seguente viene illustrato l'utilizzo dell'istruzione DRILLTHROUGH. In questo esempio l'istruzione DRILLTHROUGH esegue una query sugli elementi foglia delle dimensioni Store, Product e Time, lungo la dimensione Stores (l'asse di sezionamento), e quindi restituisce il gruppo di misure del reparto, l'ID del reparto e il nome del dipendente.
DRILLTHROUGH
Select {Leaves(Store), Leaves(Product), Leaves(Time),*} on 0
From Stores
RETURN [Department MeasureGroup].[Department Id], [Employee].[First Name]