Definizione delle proprietà UnknownMember e NullProcessing
Quando Microsoft SQL Server 2005 Analysis Services (SSAS) elabora una dimensione, tutti i valori distinti delle colonne sottostanti delle tabelle o viste incluse nella vista origine dati popolano gli attributi della dimensione. Se Analysis Services rileva un valore Null durante l'elaborazione, per impostazione predefinita, quest'ultimo viene convertito in un valore zero per le colonne di tipo numerico o in una stringa vuota per le colonne di tipo stringa senza che venga generato alcun errore. È possibile modificare l'impostazione predefinita oppure convertire i valori Null nell'eventuale processo di estrazione, trasformazione e caricamento del data warehouse relazionale sottostante. È inoltre possibile configurare Analysis Service in modo che converta il valore Null in un valore designato impostando tre proprietà, ovvero UnknownMember e UnknownMemberName per la dimensione e NullProcessing per l'attributo chiave della dimensione.
La Creazione guidata dimensione e la Creazione guidata cubo consentono di abilitare tali proprietà in modo appropriato a seconda che l'attributo chiave di una dimensione supporti valori Null oppure che l'attributo principale di una dimensione con schema a fiocco di neve sia basato su una colonna che supporta valori Null. In questi casi, la proprietà NullProcessing dell'attributo chiave viene impostata su UnknownMember e la proprietà UnknownMember su Visible.
[!NOTA] Il valore predefinito per il membro sconosciuto è Unknown. È possibile specificare un valore diverso impostando un valore per la proprietà UnknownMemberName.
Quando si generano dimensioni con schema a fiocco di neve in modo incrementale, come per la dimensione Product di questa esercitazione, oppure se si definiscono le dimensioni mediante Progettazione dimensioni e quindi si incorporano le dimensioni esistenti in un cubo, potrebbe tuttavia essere necessario impostare le proprietà UnknownMember e NullProcessing manualmente.
Come verrà illustrato nell'attività seguente, se Analysis Services elabora una dimensione con schema a fiocco di neve, Analysis Services rimuove i membri dell'attributo i cui valori sono Null per la colonna collegata alle tabelle con schema a fiocco di neve, a meno che non si modifichino le impostazioni di determinate proprietà. Non si verifica alcun errore poiché, per impostazione predefinita, Analysis Services ignora questo tipo di errore in quanto la proprietà NullKeyCovertedToUnknown è impostata su IgnoreError. Analysis Services rimuove il membro dell'attributo con il valore Null poiché esegue un inner join tra le due tabelle con schema a fiocco di neve.
È possibile controllare la modalità di elaborazione da parte di Analysis Services in questa situazione mediante la procedura seguente:
- Attivare la proprietà UnknownMember per la dimensione.
- Specificare un valore per la proprietà UnknownMemberName per la dimensione.
- Impostare le relazioni tra attributi che collegano gli attributi delle dimensioni in modo appropriato.
- Definire la gestione personalizzata degli errori per la colonna chiave che collega tra loro le tabelle con schema a fiocco di neve.
Nelle attività di questo argomento si aggiungeranno gli attributi della categoria Product e della sottocategoria Product alla dimensione Product proveniente dalle tabelle con schema a fiocco di neve che si aggiungeranno alla vista origine dati di Adventure Works DW. Verrà quindi attivata la proprietà UnknownMember della dimensione Product, verrà specificato Assembly Components come valore per la proprietà UnknownMemberName, verrà stabilita la correlazione tra gli attributi Subcategory e Category e l'attributo del nome del prodotto e quindi si definirà la gestione personalizzata degli errori per l'attributo chiave membro che collega le tabelle con schema a fiocco di neve.
[!NOTA] Se gli attributi Subcategory e Category sono stati aggiunti durante la definizione iniziale del cubo dell'esercitazione di Analysis Services mediante la Creazione guidata cubo, questi passaggi verranno eseguiti automaticamente.
Esame delle proprietà ErrorHandling e UnknownMember nella dimensione Product
Per esaminare le proprietà ErrorHandling e UnknownMember nella dimensione Product
Passare a Progettazione dimensioni per la dimensione Product, fare clic sulla scheda Struttura dimensione e quindi selezionare Product nel riquadro Attributi.
In questo modo è possibile visualizzare e modificare le proprietà della dimensione stessa.
Nella finestra Proprietà controllare le proprietà UnknownMember e UnknownMemberName.
Si noti che la proprietà UnknownMember non è attivata poiché il relativo valore è impostato su None invece di Visible o Hidden e che non è specificato alcun nome per la proprietà UnknownMemberName.
Nella finestra Proprietà selezionare (personalizzata) nella cella della proprietà ErrorConfiguration e quindi espandere l'insieme delle proprietà ErrorConfiguration.
Se si imposta la proprietà ErrorConfiguration su (personalizzata) è possibile visualizzare le impostazioni di configurazione predefinite degli errori. Nessun'altra impostazione viene modificata.
Esaminare le proprietà di configurazione Key e NullKeyError, ma non apportare modifiche.
Si noti che per impostazione predefinita quando chiavi Null vengono convertite nel valore di UnknownMember, l'errore di elaborazione associato alla conversione stessa viene ignorato.
Nella figura seguente vengono illustrate le impostazioni delle proprietà per l'insieme di proprietà ErrorConfiguration.
Fare clic sulla scheda Esplorazione, verificare che Product Model Lines sia selezionato nell'elenco Gerarchia e quindi espandere All Products.
Si notino i cinque membri del livello Product Line.
Espandere Components e quindi espandere il membro senza etichetta del livello Model Name.
Il livello contiene i componenti di assembly che vengono utilizzati nella creazione di altri componenti, a partire dal prodotto Adjustable Race, come illustrato nella figura seguente.
Definizione di attributi provenienti da tabelle con schema a fiocco di neve e di una gerarchia definita dall'utente Product Category
Per definire gli attributi provenienti da tabelle con schema a fiocco di neve e una gerarchia definita dall'utente Product Category
Aprire Progettazione vista origine dati per la vista origine dati Adventure Works DW, selezionare Reseller Sales nel riquadro Libreria diagrammi e quindi scegliere Aggiungi/Rimuovi tabelle dal menu Vista origine dati di Business Intelligence Development Studio.
Verrà visualizzata la finestra di dialogo Aggiungi/Rimuovi tabelle.
Nell'elenco Oggetti inclusi, selezionare dbo.DimProduct e quindi fare clic su Aggiungi tabelle correlate.
La tabella dbo.DimProductSubcategory viene aggiunta all'elenco Oggetti inclusi.
Con la tabella dbo.DimProductSubcategory selezionata per impostazione predefinita come ultima tabella aggiunta, fare di nuovo clic su Aggiungi tabelle correlate.
La tabella dbo.DimProductCategory viene aggiunta all'elenco Oggetti inclusi.
Fare clic su OK.
Scegliere Layout automatico dal menu Formato di BI Development Studio e quindi fare clic su Diagramma.
Si noti che la tabella dbo.DimProductSubcategory e la tabella dbo.DimProductCategory sono collegate tra loro e alla tabella ResellerSales attraverso la tabella Product, come mostrato nella figura seguente.
Passare a Progettazione dimensioni per la dimensione Product e fare clic sulla scheda Struttura dimensione.
Fare clic in un punto qualsiasi del riquadro Vista origine dati e quindi fare clic su Mostra tutte le tabelle.
Nel riquadro Vista origine dati individuare la tabella DimProductCategory, fare con il pulsante destro del mouse su ProductCategoryKey nella tabella stessa e quindi fare clic su Nuovo attributo da colonna.
Nel riquadro Attributi, modificare il nome di questo nuovo attributo in Category.
Nella finestra Proprietà, fare clic sulla cella di proprietà NameColumn, selezionare (nuovo) e quindi specificare DimProductCategory nel campo Tabella di origine e EnglishProductCategoryName nel campo Colonna di origine nella finestra di dialogo Associazione oggetto e quindi fare clic su OK.
Nel riquadro Vista origine dati individuare la tabella DimProductSubcategory, fare clic con il pulsante destro del mouse su ProductSubcategoryKey nella tabella stessa e quindi fare clic su Nuovo attributo da colonna.
Nel riquadro Attributi, modificare il nome di questo nuovo attributo in Subcategory.
Nella finestra Proprietà, fare clic sulla cella di proprietà NameColumn, selezionare (nuova) e quindi specificare DimProductSubcategory nel campo Tabella di origine e EnglishProductSubcategoryName nel campo Colonna di origine nella finestra di dialogo Associazione oggetto e quindi fare clic su OK.
Creare una nuova gerarchia definita dall'utente denominata Product Categories con i seguenti livelli, nell'ordine dall'alto verso il basso: Category, Subcategory e Product Name.
Specificare All Products come valore per la proprietà AllMemberName della gerarchia definita dall'utente Product Categories.
Esplorazione delle gerarchie definite dall'utente nella dimensione Product
Per esplorare le gerarchie definite dall'utente nella dimensione Product
Nella barra degli strumenti della scheda Struttura dimensione di Progettazione dimensioni per la dimensione Product fare clic su Elabora.
Fare clic su Sì per creare il progetto e distribuirlo e quindi fare clic su Esegui per elaborare la dimensione Product.
Al termine dell'elaborazione, espandere Elaborazione di Dimensione 'Product' completata nella finestra di dialogo Stato elaborazione, espandere Elaborazione di Attributo dimensione 'Product Name' completata e quindi espandere Query SQL 1.
Fare clic sulla query SELECT DISTINCT e quindi su Visualizza dettagli.
Si noti che alla clausola SELECT DISTINCT è stata aggiunta una clausola WHERE che rimuove i prodotti privi di valore nella colonna ProductSubcategoryKey, come illustrato nella figura seguente.
Fare clic su Chiudi tre volte per chiudere tutte le finestre di dialogo di elaborazione.
Fare clic sulla scheda Esplorazione in Progettazione dimensioni per la dimensione Product e quindi fare clic su Riconnetti.
Verificare che Product Model Lines sia visualizzato nell'elenco Gerarchia, espandere All Products e quindi espandere Components.
Si noti che tutti gli elenchi di componenti di assembly mancano a causa della clausola WHERE nell'istruzione SELECT DISTINCT, come mostrato nella figura seguente.
Selezionare Product Categories nell'elenco Gerarchia, espandere All Products e quindi espandere Components.
Si noti che non viene visualizzato nessun componente dell'assembly.
Per modificare il comportamento citato nell'attività precedente, si attiverà la proprietà UnknownMember della dimensione Product, si imposterà il valore della proprietà UnknownMemberName, si imposterà la proprietà NullProcessing per gli attributi Subcategory e Model Name su UnknownMember, si definirà l'attributo Category come attributo correlato di Subcategory e quindi si definirà l'attributo Product Line come attributo correlato di Model Name. Con questa procedura, Analysis Services utilizzerà il valore di UnknownMemberName per ogni prodotto che non presenta un valore nella colonna SubcategoryKey, come si vedrà nell'attività successiva.
Attivazione della proprietà UnknownMember, definizione delle relazioni tra attributi e specifica di proprietà di elaborazione personalizzata per i valori Null
Per abilitare la proprietà UnknownMember, definire le relazioni tra attributi e specificare le proprietà di elaborazione personalizzata per i valori Null
Fare clic sulla scheda Esplorazione in Progettazione dimensioni per la dimensione Product.
Nella finestra Proprietà, modificare la proprietà UnknownMember per la dimensione Product in Visible e quindi modificare il valore della proprietà UnknownMemberName per questa dimensione in Assembly Components.
Modificando la proprietà UnknownMember in Visible o Hidden viene attivata la proprietà UnknownMember per la dimensione.
Nel riquadro Attributi, espandere i seguenti attributi:
- Product name
- Subcategory
- Model Name
Si noti che Product Line è correlato all'attributo Model Name ed è pertanto collegato indirettamente all'attributo chiave Product Name. Si noti che per l'attributo Subcategory non sono state definite relazioni tra attributi e che l'attributo Category è collegato all'attributo Product Name direttamente tramite l'attributo chiave.
Trascinare la relazione tra attributi Category dall'attributo Product Name all'attributo Subcategory.
L'attributo Category è ora collegato alle righe nella tabella dei fatti tramite l'attributo Subcategory, il quale è a sua volta collegato alle righe della tabella dei fatti tramite l'attributo Product Name.
Nel riquadro Attributi, selezionare Subcategory e quindi fare clic sul pulsante con i puntini di sospensione (…) nella cella di proprietà KeyColumns della finestra Proprietà.
Nella finestra di dialogo Editor dell'insieme DataItem modificare la proprietà NullProcessing in UnknownMember, come mostrato nella figura seguente.
Fare clic su OK.
Nel riquadro Attributi, selezionare Model Name e quindi fare clic sul pulsante con i puntini di sospensione (…) nella cella di proprietà KeyColumns della finestra Proprietà.
Nella finestra di dialogo Editor dell'insieme DataItem modificare la proprietà NullProcessing in UnknownMember quindi fare clic su OK.
Grazie a queste modifiche, quando Analysis Services rileva un valore Null per l'attributo Subcategory o l'attributo Model Name durante l'elaborazione, il valore UnknownMember verrà sostituito come valore chiave e le gerarchie definite dall'utente verranno create correttamente.
Nuova esplorazione della dimensione Product
Per esplorare la dimensione Product
Scegliere Distribuisci Analysis Services Tutorial dal menu Genera.
Al termine della distribuzione fare clic sulla scheda Esplorazione in Progettazione dimensioni per la dimensione Product e quindi fare clic su Riconnetti.
Verificare che Product Categories sia selezionato nell'elenco Gerarchia e quindi espandere All Products.
Si noti che Assembly Components appare come nuovo membro del livello Category.
Espandere il membro Assembly Components del livello Category e quindi espandere il membro Assembly Components del livello Subcategory.
Si noti che tutti i componenti di assembly vengono ora visualizzati nel livello Product Name, come illustrato nella figura seguente.
Selezionare Product Model Lines nell'elenco Gerarchia, espandere All Products, espandere il membro Assembly Components del livello Product Line e quindi espandere il membro Assembly Components del livello Model Name.
Si noti che tutti i componenti di assembly vengono ora visualizzati nel livello Product Name.
[!NOTA] Un progetto completato fino alla lezione 4 è incluso con il download e l'installazione degli esempi aggiornati. Per ulteriori informazioni, vedere la sezione relativa a come ottenere esempi aggiornati in Installazione degli esempi.
Lezione successiva
Lezione 5: Definizione delle relazioni tra dimensioni e gruppi di misure