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 star classico e supportano analisi complesse quando le dimensioni non sono direttamente associate a una tabella dei fatti.
In Analysis Services è 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, le tabelle 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 Definire una relazione molti-a-molti e le 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
Aprire Progettazione vista origine dati per la vista origine dati Adventure Works DW 2012.
Fare clic con il pulsante destro del mouse in un punto qualsiasi del riquadro Libreria diagrammi, scegliere Nuovo diagramma e specificare Internet Sales Order Reasons come nome per il nuovo diagramma.
Trascinare la tabella InternetSales dal riquadro Tabelle al riquadro Diagramma.
Fare clic con il pulsante destro del mouse su un punto qualsiasi all'interno del riquadro Diagramma e quindi scegliere Aggiungi/Rimuovi tabelle.
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.
Scegliere Layout automatico dal menu Formato e quindi fare clic su Diagramma.
Nella finestra Proprietà cambiare la proprietà FriendlyName della tabella DimSalesReason in SalesReason e quindi cambiare la proprietà FriendlyName della tabella FactInternetSalesReason in InternetSalesReason.
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.
Controllare i tipi di dati delle altre colonne della tabella InternetSalesReason.
Si noti che i tipi di dati delle altre due colonne della tabella sono tipi di dati numerici.
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.
Definizione del gruppo di misure intermedio
Passare allo strumento Progettazione cubi per il cubo Analysis Services Tutorial, quindi selezionare la scheda Struttura del cubo.
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 Misure e gruppi di misure nei modelli multidimensionali.
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.
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.
Selezionare Internet Sales Reason Count e controllare le proprietà della misura della finestra Proprietà.
Si noti che la proprietà AggregateFunction per questa misura è definita come Conteggio anziché come Somma. Analysis Services sceglie Conteggio 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 Definire un comportamento semiadditivo.
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.
Definizione della dimensione molti-a-molti
In Esplora soluzioni fare clic con il pulsante destro del mouse su Dimensioni, quindi scegliere Nuova dimensione.
Nella pagina iniziale di Creazione guidata dimensione fare clic su Avanti.
Nella pagina Selezione metodo di creazione verificare che l'opzione Utilizza una tabella esistente sia selezionata, quindi fare clic su Avanti.
Nella pagina Impostazione informazioni origine verificare che la vista origine dati Adventure Works DW 2012 sia selezionata.
Nell'elenco Tabella principale selezionare SalesReason.
Verificare che l'elenco Colonne chiave contenga SalesReasonKey.
Nell'elenco Colonna nome selezionare SalesReasonName.
Fare clic su Avanti.
Nella pagina Selezione attributi dimensione l'attributo Sales Reason Key è selezionato automaticamente, perché è l'attributo chiave. Selezionare la casella di controllo accanto all'attributo Sales Reason Reason Type, impostare il nome su Sales Reason Type, quindi fare clic su Avanti.
Nella pagina Completamento procedura guidata fare clic su Fine per creare la dimensione di Sales Reason.
Scegliere Salva tutti dal menu File.
Nel riquadro Attributi di Progettazione dimensioni per la dimensione Sales Reason, selezionare Sales Reason Key e impostare la proprietà Name nella finestra Proprietà su Sales Reason.
Nel riquadro Gerarchie di Progettazione dimensioni creare una gerarchia utente Sales Reasons contenente i livelli Sales Reason Type e Sales Reason, in quest'ordine.
Nella finestra Proprietà definire All Sales Reasons come valore per la proprietà AllMemberName della gerarchia Sales Reasons.
Definire All Sales Reasons come valore per la proprietà AttributeAllMemberName della dimensione Sales Reason.
Per aggiungere la dimensione appena creata al cubo Analysis Services Tutorial, come una dimensione del cubo, passare a Progettazione cubi. Fare clic con il pulsante destro del mouse nel riquadro Dimensioni della scheda Struttura cubo, quindi scegliere Aggiungi dimensione al cubo.
Nella finestra di dialogo Aggiungi dimensione al cubo selezionare Sales Reason, quindi fare clic su OK.
Scegliere Salva tutti dal menu File.
Definizione della relazione molti-a-molti
Passare allo strumento Progettazione cubi per il cubo Analysis Services Tutorial, 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.
Fare clic sulla cella nel punto di intersezione tra il gruppo di misure Internet Sales e la dimensione Sales Reason, quindi fare clic sul pulsante con i puntini di sospensione (…).
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.
Nell'elenco Gruppo di misure intermedio selezionare Internet Sales Reason.
Nella figura seguente vengono illustrate le modifiche apportate alla finestra di dialogo Definisci relazione.
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.
Visualizzazione del cubo e della dimensione molti-a-molti
Scegliere Distribuisci Analysis Services Tutorial dal menu Compila.
Al termine delle operazioni di distribuzione, passare alla scheda Esplorazione in Progettazione cubi per il cubo Analysis Services Tutorial, quindi fare clic su Riconnetti.
Aggiungere la misura Internet Sales-Sales Amount all'area dati del riquadro Dati.
Aggiungere la gerarchia definita dall'utente Sales Reason dalla dimensione Sales Reason all'area riga del riquadro Dati.
Nel riquadro Metadati espandere Customer, Location, Customer Geography, Members, All Customers e Australia, fare clic con il pulsante destro del mouse su Queensland, quindi scegliere Aggiungi a filtro.
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.
Attività successiva della lezione
Definizione della granularità della dimensione in un gruppo di misure
Vedere anche
Concetti
Utilizzare diagrammi in Progettazione vista origine dati (Analysis Services)
Definire una relazione molti-a-molti e le relative proprietà