Lezione 5-3 - Definizione di una relazione molti-a-molti
Si applica a: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium
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 SQL Server Analysis Services si definisce una relazione molti-a-molti tra una dimensione e un gruppo di misure specificando una tabella dei fatti intermedia unita 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 di dimensione molti-a-molti, è necessario definire una relazione chiave primaria-chiave esterna nella vista origine dati 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 altre informazioni, vedere Relazioni tra dimensionie 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 la vista origine dati Designer per la vista origine dati Adventure Works DW 2019.
Fare clic con il pulsante destro del mouse in un punto qualsiasi del riquadro Libreria diagrammi , scegliere Nuovo diagrammae 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 chiave primaria-esterna tra le tabelle coinvolte vengono stabilite automaticamente perché tali relazioni vengono 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 Formatoe quindi fare clic su Diagramma.
Nella finestra Proprietà cambiare la proprietà FriendlyName della tabella DimSalesReason in SalesReasone quindi cambiare la proprietà FriendlyName della tabella FactInternetSalesReason in InternetSalesReason.
Nel riquadro Tabelle espandere InternetSalesReason (dbo.FactInternetSalesReason), fare clic su SalesOrderNumbere 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 a Cubo Designer per il cubo SQL Server Analysis Services Tutorial e quindi fare clic sulla scheda Struttura 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 altre informazioni, vedere Creare 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. SQL Server Analysis Services scelto Conteggio perché il tipo di dati sottostante è un tipo di dati stringa. Le altre due colonne della tabella dei fatti sottostante non sono state selezionate come misure perché SQL Server Analysis Services rilevate come chiavi numeriche anziché come misure effettive. Per altre informazioni, vedere Definire una funzione semiadditiva.
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 Dimensionie quindi scegliere Nuova dimensione.
Nella pagina iniziale di Creazione guidata dimensione fare clic su Avanti.
Nella pagina Selezione metodo di creazione verificare che la pagina Usa una tabella esistente sia selezionata e fare clic su Avanti.
Nella pagina Specifica informazioni origine verificare che sia selezionata la vista origine dati Adventure Works DW 2019.
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 Sales Reason.
Scegliere Salva tutti dal menu File.
Nel riquadro Attributi di Progettazione dimensioni per la dimensione Sales Reason , selezionare Sales Reason Keye 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 SQL Server Analysis Services Tutorial come dimensione del cubo, passare a Cube Designer. Fare clic con il pulsante destro del mouse nel riquadro Dimensioni della scheda Struttura cubo e selezionare Aggiungi dimensione al cubo.
Nella finestra di dialogo Aggiungi dimensione al cubo selezionare Sales Reason e quindi fare clic su OK.
Scegliere Salva tutti dal menu File.
Definizione della relazione molti-a-molti
Passare a Cubo Designer per il cubo SQL Server Analysis Services Tutorial e quindi fare clic sulla 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 e 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 della distribuzione, passare alla scheda Browser in Cube Designer per il cubo SQL Server Analysis Services Tutorial e 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 Reasons dalla dimensione Sales Reason all'area riga del riquadro Dati.
Nel riquadro Metadati espandere Customer, Location, Customer Geography, Members, All Customerse 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 esaminare i valori del dollaro associati a ogni motivo per cui un cliente del Queensland ha dato 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
Utilizzare diagrammi in Progettazione vista origine dati (Analysis Services)
Relazioni tra dimensioni
Definire una relazione molti-a-molti e le relative proprietà