Condividi tramite


Definizione di una relazione molti-a-molti

Quando si definisce una dimensione, generalmente ogni fatto viene unito in join a un solo membro della dimensione, mentre un singolo membro della dimensione può essere associato a molti fatti. A ogni cliente possono essere ad esempio associati più ordini, ma ogni ordine appartiene a un unico cliente. Nella terminologia dei database relazionali, questa viene definita una relazione uno-a-molti. A volte, tuttavia, è possibile che un singolo fatto venga unito in join a più membri della dimensione. Nella terminologia dei database relazionali, questa viene definita una relazione molti-a-molti. Ad esempio, i motivi che determinano un acquisto da parte di un cliente possono essere diversi e un motivo per l'acquisto può essere associato a più acquisti. Una tabella di join viene utilizzata per definire i motivi di vendita correlati a ogni acquisto. Una dimensione Sales Reason creata a partire da relazioni di questo tipo può disporre quindi di più membri che corrispondono a una singola transazione di vendita. Le dimensioni molti-a-molti consentono di espandere la modellazione dimensionale oltre lo schema a stella classico e supportano analisi complesse quando le dimensioni non sono direttamente associate a una tabella dei fatti.

In Microsoft SQL Server 2005 Analysis Services (SSAS) è possibile definire una relazione molti-a-molti tra una dimensione e un gruppo di misure specificando una tabella dei fatti intermedia unita in join alla tabella delle dimensioni. Una tabella dei fatti intermedia viene a sua volta unita in join a una tabella delle dimensioni intermedia alla quale è associata la tabella dei fatti. Le relazioni molti-a-molti che intercorrono tra la tabella dei fatti intermedia, la tabella delle dimensioni nella relazione e la dimensione intermedia determinano la creazione delle relazioni molti-a-molti tra i membri della dimensione primaria e il gruppo di misure specificato dalla relazione. Per definire relazioni molti-a-molti tra una dimensione e un gruppo di misure tramite un gruppo di misure intermedio, quest'ultimo deve condividere una o più dimensioni con il gruppo di misure originale.

Con una dimensione molti-a-molti, i valori sono di tipo distinct sommati, ovvero non verranno aggregati più di una volta nel membro Totale.

[!NOTA] Per supportare una relazione delle dimensioni molti-a-molti, nella vista origine dati è necessario definire una relazione tra chiave primaria e chiave esterna tra tutte le tabelle coinvolte. In caso contrario, non sarà possibile selezionare il gruppo di misure intermedio corretto quando la relazione viene stabilita nella scheda Utilizzo dimensioni di Progettazione cubi.

Per ulteriori informazioni, vedere Relazioni tra dimensioni e Definizione di una relazione molti-a-molti e delle relative proprietà.

Nelle attività di questo argomento vengono definiti la dimensione Sales Reasons e il gruppo di misure Sales Reasons nonché una relazione molti-a-molti tra la dimensione Sales Reasons e il gruppo di misure Internet Sales tramite il gruppo di misure Sales Reasons.

Aggiunta delle tabelle necessarie alla vista origine dati

Per aggiungere le tabelle necessarie alla vista origine dati

  1. Aprire Progettazione vista origine dati per la vista origine dati di Adventure Works DW.

  2. Fare clic con il pulsante destro del mouse su un punto qualsiasi all'interno del riquadro Libreria diagrammi, scegliere Nuovo diagramma e specificare Internet Sales Order Reasons come nome per il nuovo diagramma. Per ulteriori informazioni, vedere Utilizzo di diagrammi in una vista origine dati (Analysis Services).

    Verrà creato un nuovo diagramma senza tabelle, il quale sarà visualizzato nel riquadro Diagramma.

  3. Trascinare la tabella InternetSales (dbo.FactInternetSales) nel riquadro Diagramma dal riquadro Tabelle.

  4. Fare clic con il pulsante destro del mouse su un punto qualsiasi all'interno del riquadro Diagramma e quindi scegliere Aggiungi/Rimuovi tabelle.

  5. Nella finestra di dialogo Aggiungi/Rimuovi tabelle aggiungere le tabelle DimSalesReason e FactInternetSalesReason all'elenco Oggetti inclusi e quindi fare clic su OK.

    Si noti che le relazioni tra chiave primaria e chiave esterna tra le tabelle coinvolte vengono stabilite automaticamente poiché le relazioni sono definite nel database relazionale sottostante. Se le relazioni non fossero definite nel database relazionale sottostante, sarebbe necessario definirle nella vista origine dati.

  6. Scegliere Layout automatico dal menu Formato e quindi fare clic su Diagramma.

  7. Nella finestra Proprietà cambiare la proprietà FriendlyName della tabella DimSalesReason in SalesReason e quindi cambiare la proprietà FriendlyName della tabella FactInternetSalesReason in InternetSalesReason.

  8. Nel riquadro Tabelle espandere InternetSalesReason (dbo.FactInternetSalesReason), fare clic su SalesOrderNumber e quindi controllare la proprietà DataType per questa colonna dati nella finestra Proprietà.

    Si noti che la colonna SalesOrderNumber è di tipo stringa.

  9. Controllare i tipi di dati delle altre colonne della tabella FactInternetSalesReason.

    Si noti che i tipi di dati delle altre due colonne della tabella sono tipi di dati numerici.

  10. Nel riquadro Tabelle fare clic con il pulsante destro del mouse su InternetSalesReason (dbo.FactInternetSalesReason) e quindi scegliere Esplora dati.

    Si noti che per ogni numero di riga all'interno di ogni ordine un valore chiave identifica il motivo della vendita per l'acquisto di quell'elemento di riga, come illustrato nella figura seguente.

    Valore chiave per l'identificazione del motivo di vendita per gli acquisti

Definizione del gruppo di misure intermedio

Per definire il gruppo di misure intermedio

  1. Passare allo strumento Progettazione cubi per il cubo Analysis Services Tutorial e quindi selezionare la scheda Struttura del cubo.

  2. Fare clic con il pulsante destro del mouse su un punto qualsiasi all'interno del riquadro Misure e quindi scegliere Nuovo gruppo di misure. Per ulteriori informazioni, vedere Definizione e configurazione di un gruppo di misure.

  3. Nella finestra di dialogo Nuovo gruppo di misure selezionare InternetSalesReason nell'elenco Selezionare una tabella dalla vista origine dati e quindi fare clic su OK.

    Si noti che il gruppo di misure Internet Sales Reason viene visualizzato nel riquadro Misure.

  4. Espandere il gruppo di misure Internet Sales Reason.

    Si noti che per questo nuovo gruppo di misure è definita una sola misura, ovvero la misura Internet Sales Reason Count.

  5. Selezionare Internet Sales Reason Count e controllare le proprietà della misura della finestra Proprietà.

    Si noti che la proprietà AggregateFunction della misura è definita come Count invece che come Sum. Analysis Services sceglie Count poiché il tipo di dati sottostante è di tipo stringa. Le altre due colonne della tabella dei fatti sottostante non sono selezionate come misure poiché Analysis Services le ha rilevate come chiavi numeriche anziché come misure effettive. Per ulteriori informazioni, vedere Definizione delle funzioni semiadditive.

  6. Nella finestra Proprietà, impostare la proprietà Visible della misura Internet Sales Reason Count su False.

    Questa misura viene utilizzata solo per unire in join la dimensione Sales Reason che verrà definita successivamente con il gruppo di misure Internet Sales. Non sarà possibile visualizzare direttamente questa misura.

    Nella figura successiva vengono illustrate le proprietà della misura Internet Sales Reason Count.

    Proprietà della misura Internet Sales Reason Count

Definizione della dimensione molti-a-molti

Per definire la dimensione molti-a-molti

  1. Nella scheda Struttura del cubo di Progettazione cubi per il cubo Analysis Services Tutorial fare clic con il pulsante destro del mouse su un punto qualsiasi all'interno del riquadro Dimensioni e quindi scegliere Aggiungi dimensione al cubo.

  2. Nella finestra di dialogo Aggiungi dimensione al cubo fare clic su Nuova dimensione.

    Verrà avviata Creazione guidata dimensione.

  3. Nella pagina iniziale di Creazione guidata dimensione fare clic su Avanti.

  4. Nella pagina Selezione vista origine dati fare clic su Avanti per selezionare i dati per la dimensione dalla vista origine dati di Adventure Works DW.

  5. Nella pagina Selezione tipo di dimensione fare clic su Avanti per specificare che si tratta di una dimensione standard.

  6. Nella pagina Selezione tabella principale della dimensione selezionare dbo.DimSalesReason nell'elenco Tabella principale, selezionare SalesReasonName nell'elenco Colonna che contiene il nome del membro (facoltativa) e quindi fare clic su Avanti.

  7. Nella pagina Selezione attributi dimensione deselezionare la casella di controllo dell'attributo Sales Reason Alternate Key, rinominare l'attributo Sales Reason Reason Type in Sales Reason Type e quindi fare clic su Fine.

  8. Nella pagina Completamento procedura guidata fare clic su Fine per creare la dimensione Sales Reason e quindi su OK per aggiungere la dimensione del database appena creata al cubo Analysis Services Tutorial come una dimensione del cubo.

  9. Aprire Progettazione dimensioni per la dimensione Sales Reason.

  10. Nel riquadro Gerarchie e livelli creare una gerarchia Sales Reasons contenente i livelli Sales Reason Type e Sales Reason in questo ordine.

  11. Nella finestra Proprietà definire All Sales Reasons come valore per la proprietà AllMemberName della gerarchia Sales Reasons.

  12. Definire All Sales Reasons come valore per la proprietà AttributeAllMemberName della dimensione Sales Reason.

Definizione della relazione molti-a-molti

Per definire la relazione molti-a-molti

  1. Passare allo strumento Progettazione cubi per il cubo Analysis Services Tutorial e quindi scegliere la scheda Utilizzo dimensioni.

    Si noti che la dimensione Sales Reason ha una relazione di tipo Regolare definita con il gruppo di misure Internet Sales Reason ma nessuna relazione definita con i gruppi di misure Internet Sales o Reseller Sales. Si noti inoltre che la dimensione Internet Sales Order Details ha una relazione di tipo Regolare definita con la dimensione Internet Sales Reason, la quale a sua volta ha una relazione di tipo Fatti con il gruppo di misure Internet Sales. Se questa dimensione non è presente, oppure manca un'altra dimensione con una relazione con entrambi i gruppi di misure Internet Sales Reason e Internet Sales, non sarà possibile definire la relazione molti-a-molti.

  2. Fare clic sul pulsante con i puntini di sospensione (...) nella cella all'intersezione tra il gruppo di misure Internet Sales e la dimensione Sales Reason.

  3. Nella finestra di dialogo Definisci relazione selezionare Molti-a-molti nell'elenco Selezionare il tipo di relazione.

    È necessario definire il gruppo di misure intermedio di collegamento tra la dimensione Sales Reason e il gruppo di misure Internet Sales.

  4. Nell'elenco Gruppo di misure intermedio selezionare Internet Sales Reason.

    Nella figura seguente vengono illustrate le modifiche apportate alla finestra di dialogo Definisci relazione.

    Finestra di dialogo Definisci relazione

  5. Fare clic su OK.

    Si noti l'icona molti-a-molti che rappresenta la relazione tra la dimensione Sales Reason e il gruppo di misure Internet Sales, come illustrato nella figura seguente.

    Relazione tra la dimensione e il gruppo di misure

Visualizzazione del cubo e della dimensione molti-a-molti

Per visualizzare il cubo e la dimensione molti-a-molti

  1. Scegliere Distribuisci Analysis Services Tutorial dal menu Genera.

  2. Al termine delle operazioni di distribuzione, passare alla scheda Esplorazione in Progettazione cubi per il cubo Analysis Services Tutorial e quindi fare clic su Riconnetti.

  3. Rimuovere tutti i livelli della gerarchia utente Internet Sales Orders dall'area riga del riquadro Dati e sostituirli con la gerarchia utente Sales Reasons della dimensione Sales Reason.

  4. Verificare che la misura Internet Sales-Sales Amount sia ancora visualizzata nell'area dati del riquadro Dati e che il membro Adam Powell della dimensione Customer sia visualizzato nel riquadro Filtro. In caso contrario, aggiungere la misura Internet Sales-Sales Amount all'area dati e aggiungere il membro Adam Powell della gerarchia definita dall'utente Customer Geography all'area sottocubo (Australia-Queensland-Brisbane-4000).

  5. Nel riquadro Filtro, ovvero il riquadro superiore al centro dell'area di progettazione, cambiare Espressione filtro in Queensland deselezionando la casella di controllo relativa a Adam Powell e selezionando la casella di controllo relativa a Queensland nell'elenco Espressione filtro.

  6. Espandere ogni membro del livello Sales Reason Type per controllare i valori in dollari associati a ogni motivo dato dal cliente in Queensland per l'acquisto di un prodotto Adventure Works su Internet.

    Si noti che la somma dei totali associati a ciascun motivo di vendita risulta maggiore delle vendite totali. Ciò si spiega con il fatto che alcuni clienti danno più motivi per i loro acquisti.

    Nella figura seguente sono illustrati i riquadri Filtro e Dati di Progettazione cubi.

    Riquadri Filtro e Dati di Progettazione cubi

Attività successiva della lezione

Definizione della granularità della dimensione in un gruppo di misure

Vedere anche

Altre risorse

Relazioni tra dimensioni
Definizione di una relazione molti-a-molti e delle relative proprietà

Guida in linea e informazioni

Assistenza su SQL Server 2005