Funzionamento dell’analisi nelle origini dati multi-tabella che utilizzano relazioni

L’utilizzo di un’origine dati con più tabelle correlate influisce sul funzionamento dell’analisi in Tableau. Poiché le varie tabelle correlate hanno domini indipendenti e mantengono il proprio livello di dettaglio nativo, quando si trascinano i campi nella vista:

  • Vengono eseguite query dei dati al relativo livello di dettaglio naturale.
  • Vengono interrogati solo i dati rilevanti per una vista.
  • Le relazioni tra le tabelle influenzano i risultati della query. Il flusso di creazione di una vista può variare a seconda del modo in cui le tabelle dei campi sono correlate tra loro nel modello di dati o se non sono correlate direttamente.

Per una panoramica dei miglioramenti delle origini dati e un’introduzione all’utilizzo delle relazioni, guarda questo video di 5 minuti.

Nota: l’interfaccia per la modifica delle relazioni mostrata in questo video e in questo argomento è leggermente diversa dalla versione corrente ma presenta le stesse funzionalità.

Scopri di più sul funzionamento delle relazioni in Non temere le relazioni e questi post di blog di Tableau:

Guarda anche i podcast video sulle relazioni di Action Analytics(Il collegamento viene aperto in una nuova finestra), ad esempio Why did Tableau Invent Relationships?(Il collegamento viene aperto in una nuova finestra) Fai clic su "Video Podcast" nella sezione Library(Il collegamento viene aperto in una nuova finestra) per vederne altri.

Nota: puoi comunque creare origini dati a tabella singola in Tableau. Puoi creare una tabella logica utilizzando una combinazione di join, unioni, SQL personalizzato e così via. Il comportamento di analisi delle tabelle singole in Tableau non è cambiato. L’analisi di una singola tabella logica che contiene una combinazione di dimensioni e misure funziona come in Tableau prima della versione 2020.2.

Considerazioni per l’analisi

Convalida delle relazioni

Sono disponibili diverse opzioni per la convalida del modello di dati per l’analisi. Durante la creazione del modello per l’origine dati, è consigliabile passare a un foglio, selezionare l’origine dati e quindi creare una vista per esplorare i conteggi dei record, i dati previsti, i valori non corrispondenti, i valori Null o i valori delle misure ripetuti. Prova a utilizzare i campi di tabelle diverse per assicurarti che tutti gli elementi si presentino come previsto.

Cosa cercare:

  • Le relazioni nel modello di dati utilizzano i campi corrispondenti corretti per le relative tabelle?
  • L’aggiunta di più coppie di campi corrispondenti renderebbe la relazione più accurata?
  • Quali sono i risultati del trascinamento di dimensioni e misure diverse nella vista?
  • Viene visualizzato il numero previsto di righe?
  • Se hai modificato le impostazioni predefinite per le impostazioni delle opzioni per le prestazioni, vengono visualizzati i valori previsti nella vista? In caso contrario, puoi controllare le impostazioni o ripristinare le impostazioni predefinite.

Opzioni per la convalida delle relazioni e del modello di dati:

  • Ogni tabella include un conteggio dei relativi record, in un campo denominato NomeTabella(Conteggio), al livello di dettaglio per tale tabella. Per visualizzare il conteggio per una tabella, trascina il relativo campo Conteggio nella vista. Per visualizzare il conteggio per tutte le tabelle, seleziona il campo Conteggio per ogni tabella nel riquadro Dati e quindi fai clic su Tabella di testo in Mostra.
  • Fai clic su Visualizza dati nel riquadro Dati per visualizzare il numero di righe e dati per ogni tabella. Inoltre, prima di iniziare a creare le relazioni, la visualizzazione dei dati dall’origine dati prima o durante l’analisi può essere utile per avere un’idea dell’ambito di ogni tabella. Per ulteriori informazioni, consulta Visualizzare i dati sottostanti.
  • Trascina le dimensioni in Righe per visualizzare il numero di righe nella barra di stato. Per visualizzare i valori non corrispondenti, fai clic sul menu Analisi, quindi seleziona Layout tabella > Mostra righe vuote o Mostra colonne vuote. Puoi anche trascinare misure diverse nella vista, ad esempio <Tabella>(Conteggio), da una delle tabelle rappresentate nella vista. In questo modo, verranno visualizzati tutti i valori delle dimensioni di tale tabella.

Suggerimento: se desideri visualizzare le query generate per le relazioni, puoi utilizzare la registrazione delle prestazioni in Tableau Desktop.

  1. Fai clic sul menu Guida, quindi seleziona Impostazioni e prestazioni > Avvia registrazione delle prestazioni.
  2. Trascina i campi nella vista per creare la visualizzazione.
  3. Fai clic sul menu Guida, quindi seleziona Impostazioni e prestazioni > Interrompi registrazione delle prestazioni. Verrà aperta automaticamente la cartella di lavoro Registrazione delle prestazioni.
  4. Nella dashboard Riepilogo delle prestazioni, in Eventi ordinati in base al tempo, fai clic su una barra "Esecuzione della query" e visualizza la query sottostante.

Un’altra opzione più avanzata consiste nell’utilizzare il Visualizzatore di log Tableau(Il collegamento viene aperto in una nuova finestra) su GitHub. Puoi applicare filtri in base a una parola chiave specifica utilizzando end-protocol.query. Per altre informazioni, inizia con la pagina wiki del Visualizzatore di log Tableau(Il collegamento viene aperto in una nuova finestra) su GitHub.

Visualizzazioni solo con dimensioni

Quando usi un’origine dati multi-tabella con tabelle correlate, se crei una visualizzazione solo con dimensioni, Tableau utilizza inner join e non sarà visibile l’intero dominio senza corrispondenza.

Per visualizzare combinazioni parziali dei valori delle dimensioni, puoi procedere come segue:

  • Utilizza Mostra righe/colonne vuote per visualizzare tutte le righe possibili. Fai clic sul menu Analisi, quindi seleziona Layout tabella > Mostra righe vuote o Mostra colonne vuote. Tieni presente che questa impostazione attiverà anche la densificazione per i campi Data e Contenitore numerico, che potrebbe essere indesiderata.
  • Aggiungi una misura alla vista, ad esempio <Tabella>(Conteggio), da una delle tabelle rappresentate nella vista. In questo modo, verranno visualizzati tutti i valori delle dimensioni di tale tabella.

Per maggiori informazioni, consulta anche Comportamento dei valori non corrispondenti per le dimensioni che potrebbero sorprendere e Risoluzione dei problemi relativi all’analisi multi-tabella.

Quando usare i calcoli e le espressioni LOD

Poiché Tableau riconosce il livello di dettaglio (LOD) delle tabelle di input, non è necessario usare i calcoli LOD per rimuovere la duplicazione indesiderata dovuta ai join.

Puoi comunque utilizzare calcoli LOD per:

  • Gestire la duplicazione indesiderata nelle tabelle di origine.
  • Calcolare aggregazioni a più livelli (ad esempio, una media su una somma)
  • Per eseguire analisi di coorti (ad esempio, per calcolare la data del primo ordine per ogni cliente)

Se la dimensionalità di un calcolo LOD include campi di una singola tabella, tale calcolo LOD verrà visualizzato nella relativa tabella nel riquadro Dati.

Esempi di analisi multi-tabella

La seguente serie di esempi mostra come eseguire query dei dati in più tabelle correlate. Questa origine dati multi-tabella contiene un breve elenco di parti interpretate da vari attori in diversi film.

Una riga nella tabella Interpretazioni indica che un attore ha interpretato un particolare personaggio in un film specifico. In questo set di dati, un attore può avere zero o più interpretazioni.

Scopri di più sul funzionamento delle relazioni in questi post di blog di Tableau:

Esempio 1: analisi di una singola domanda con dati sottoposti a join e dati correlati

Quando ti connettevi ai dati in Tableau prima della versione 2020.2, l’origine dati era costituita da una singola tabella o da più tabelle unite tramite join in una singola tabella denormalizzata. A partire dalla versione 2020.2, Tableau riconosce e preserva i dati normalizzati per le origini dati multi-tabella, in cui i dati delle tabelle rimangono separati e ogni tabella mantiene il proprio livello di dettaglio nativo. Gli esempi seguenti mostrano le differenze a livello di analisi tra le origini dati con una tabella singola e quelle con più tabelle.

Questo esempio mostra tre tabelle di dati relativi ai film: Interpretazioni, Attori e Film.

È possibile eseguire il join di queste tabelle, unendo la tabella Interpretazioni con la tabella Attori in base a Attore = Attore e la tabella Interpretazioni con la tabella Film in base a Film = Film. Se i join sono join esterni completi, in modo da evitare la perdita di righe, l’output finale si presenta come segue. Puoi notare che i campi utilizzati nelle clausole di join appaiono due volte.

I dati che vengono riuniti in un’unica tabella in questo modo vengono definiti denormalizzati o "appiattiti".

Questi dati ottenuti tramite join sono dati appiattiti. Ogni riga è formata dall’interpretazione di un attore come personaggio in un film (ad esempio, John Rhys-Davies ha due righe per Il ritorno del re perché ha interpretato due personaggi). La granularità dei dati è quindi a livello di un personaggio in un film. Le informazioni rilevanti in più righe vengono duplicate. La data di uscita di Il ritorno del re è presente due volte perché nel set di dati ci sono due personaggi relativi a tale film. L’altezza di John Rhys-Davies è elencata cinque volte perché ci sono 5 combinazioni univoche di personaggio/film per questo attore.

Questi dati appiattiti presentano alcune caratteristiche che è importante tenere in considerazione. Se ad esempio volessi tracciare l’altezza dell’attore in base alla media dell’incasso lordo dei suoi film, potresti ipotizzare di ottenere tale risultato spostando l’altezza nelle colonne e l’incasso lordo nelle righe, quindi calcolando la media dell’incasso lordo. Tuttavia, eseguendo tale operazione, la vista predefinita non sembra corretta. Viene indicato che John Rhys-Davies dovrebbe essere alto 925 cm, ovvero più di 9 metri!

Questo perché l’aggregazione predefinita è SUM. Ci sono 5 righe nei dati per questo attore, quindi otteniamo cinque volte la sua altezza reale di 185 cm. Si potrebbe risolvere il problema modificando l’aggregazione per l’altezza, ad esempio su media o minima. Questo effettivamente restituisce il valore per una sola riga (poiché sono tutte uguali).

Quando cambi l’aggregazione, le altezze sono molto più realistiche. Ma ora devi fare attenzione alla media dell’incasso lordo. Ricorda che Tableau considera tutte e cinque le righe per l’altezza di John Rhys-Davies. Se pensiamo all’incasso lordo medio dei film in cui ha recitato, non dobbiamo calcolare la media di cinque righe, ma la media di tre film. Non vogliamo conteggiare due volte l’incasso lordo per Il ritorno del re solo perché l’attore ha interpretato due personaggi. Ma è quello che sta succedendo?

Facendo qualche calcolo, i film della saga Il Signore degli Anelli dovrebbero avere una media di (869 + 923 + 1119)/3, ovvero 970,3 dollari. Tuttavia, il valore nel grafico a dispersione è di 990,6 dollari. La media attuale è relativa alle cinque righe (869 + 923 + 923 + 1119 + 1119)/5.

Questo problema non è così facile da risolvere come quello dell’altezza con la modifica dell’aggregazione. È necessario utilizzare un’espressione Level of Detail (LOD) per modificare il livello di dettaglio considerato da Tableau, passando dall’impostazione predefinita (interpretazione) al livello del film. Potremmo creare un calcolo Incasso lordo LOD come {FIXED [Movie] : MIN([Gross (USD millions)])} e quindi prendere la media del nuovo campo Incasso lordo LOD per la nostra vista.

L’espressione LOD può essere interpretata come "per ogni film, restituisci l’incasso lordo minimo". Questo elimina il problema della duplicazione perché l’incasso lordo viene sempre restituito per ogni film, anche se la vista è costruita con film e attore.

Ora i dati sono corretti. John Rhys-Davies è alto 185 cm e l’incasso lordo medio dei suoi film in questo set di dati è di 970,3. Per poter garantire la restituzione dei valori corretti, è necessario capire come venivano replicati i dati e come Tableau aggregava i dati per la visualizzazione.

Dati normalizzati in più tabelle

Creare relazioni tra tabelle logiche può sembrare simile alla creazione di join, ma invece di appiattire i dati in un’unica tabella, con tutte le duplicazioni che questo può comportare, Tableau rimane consapevole delle relazioni tra le tabelle. Le informazioni sono estratte da ogni tabella al livello di dettaglio appropriato e correlate ad altri dati.

Nella pagina Origine dati non verrà mostrata la vista a griglia "completa" della tabella appiattita. Questa vista non esiste. Tableau mantiene tutte e tre le tabelle così come sono e si limita a stabilire le relazioni, recuperando i dati richiesti in base alle esigenze della vista.

Per creare lo stesso grafico a dispersione, è sufficiente trascinare Altezza e Incasso lordo nella vista e impostare Incasso lordo sulla media. Non occorre fare altro. Tableau esamina il modo in cui i dati di ogni tabella sono collegati ai dati delle altre tabelle correlate e indica come deve essere visualizzata l’altezza (per ogni attore) e come deve essere calcolato l’incasso lordo medio (per ogni film).

Esempio 2: dimensione da una singola tabella

Se le dimensioni nella visualizzazione provengono da un’unica tabella, Tableau esegue una query solo su tale tabella e mostra i risultati per l’intero dominio. Puoi aggiungere misure e visualizzare comunque l’intero dominio.

Ad esempio, utilizzando l’origine dati per le interpretazioni nei film presentata in precedenza, aggiungendo il campo Attore a una visualizzazione, si ottiene la seguente visualizzazione:

Poiché l’unica dimensione nella visualizzazione proveniva dalla tabella Attori, Tableau eseguirà una query solo su questa tabella. Tutti gli attori che compaiono nella tabella Attori sono mostrati nella visualizzazione, indipendentemente dal fatto che abbiano o meno delle interpretazioni.

Introducendo nella vista il campo Attore interpretazione come misura e quindi applicando un’aggregazione COUNT, viene creata una vista che mostra il numero di interpretazioni in base agli attori. Puoi notare che Sigourney Weaver non ha alcuna interpretazione, ma il suo nome è ancora presente nella vista.

Esempio 3: dimensioni da più tabelle

Se le dimensioni nella vista provengono da più tabelle, Tableau trova la tabella che mette in relazione tutte le dimensioni e mostra il dominio di quella tabella. Di conseguenza, alcuni valori delle dimensioni che sono stati illustrati nell’esempio 1 cambiano.

Ad esempio, trascinando un campo dalla tabella Film nella vista, cambia la query. Poiché le tabelle Film e Attori sono correlate dalla tabella Interpretazioni, la query restituisce solo le coppie di attore/film che esistono nella tabella delle interpretazioni.

Dato che Sigourney Weaver non ha alcuna interpretazione in questo set di dati (e quindi non è correlata ad alcun film nel set di dati), la vista con le coppie di attore/film non la mostra:

Esempio 4: misure che non possono essere divise in base a una dimensione

Se una misura non può essere divisa in base a una dimensione, Tableau replica la misura in tale dimensione.

La visualizzazione successiva mostra l’incasso lordo totale per film. Poiché entrambi i campi provengono dalla tabella Film, Tableau eseguirà una query solo su tale tabella.

La tabella Film include gli incassi lordi già aggregati per ogni film, come mostrato nella seguente visualizzazione (l’incasso lordo per Infinity War non era disponibile al momento della creazione di questo set di dati e viene mostrato come zero).

Se aggiungi Attore a questa visualizzazione, Tableau è consapevole di non poter suddividere gli incassi lordi del film per attore, poiché questa informazione più granulare non è disponibile nel modello di dati. Vengono invece mostrati gli incassi lordi di ogni film, replicati tra gli attori.

Esempio 5: dimensione non gerarchicamente correlata a una misura

Rimuovendo la dimensione Film dalla visualizzazione precedente, viene eseguita una query della somma della misura dell’incasso lordo del film per ogni attore. Il risultato è l’incasso lordo aggregato per ogni film in cui è apparso l’attore.

In questo caso non c’è un rapporto gerarchico tra la dimensione (Attore) e la misura (Incasso lordo): più attori possono essere apparsi nello stesso film. Ad esempio, sia Benedict Cumberbatch che Chris Hemsworth sono apparsi in Dr. Strange. In questo caso, Tableau include l’incasso lordo del film Dr. Strange nei totali di entrambi gli attori.

Poiché lo stesso valore per l’incasso lordo del film è incluso nei totali di più attori, Tableau non somma direttamente questi valori.

Tuttavia, quando vengono mostrati i totali per questa visualizzazione, puoi notare che Tableau calcola correttamente il totale dell’incasso lordo, senza includere i film duplicati.

 

Risoluzione dei problemi relativi all’analisi multi-tabella

Le situazioni seguenti sono possibili con le origini dati correlate multi-tabella. In questa tabella vengono descritti scenari noti e descrizioni generali per la risoluzione dei problemi relativi all’analisi.

Situazione di analisi Descrizione
Join interno per le viste con sole dimensioni Potresti non visualizzare immediatamente tutti i valori previsti quando aggiungi più dimensioni alla stessa vista. In alternativa, potresti notare che l’aggiunta di una nuova dimensione alla vista da una tabella diversa determina la scomparsa di alcuni valori dalla vista.

Tableau utilizzerà query che mantengono la combinazione di valori effettivamente presenti nei dati. Ciò significa che verranno visualizzate le righe che verrebbero prodotte da un join interno delle tabelle che forniscono le dimensioni alla vista.

Se desideri visualizzare combinazioni parziali dei valori di dimensione, puoi attivare Mostra righe/colonne vuote per visualizzare tutte le righe possibili oppure aggiungere una misura, ad esempio <Tabella>(Conteggio), da una delle tabelle rappresentate nella vista per assicurarti di visualizzare tutti i valori delle dimensioni di tale tabella.
Costanti nei calcoli In un’origine dati multi-tabella, i valori costanti si comportano come se provenissero dalla propria tabella con una singola riga. Se aggreghi un valore costante, questo si comporterà come se l’aggregazione fosse su una singola riga. Sum(10) sarà sempre uguale a 10. Avg(10) sarà sempre uguale a 10. Count(10) sarà sempre uguale a 1.

Per garantire la compatibilità con le versioni precedenti, i valori costanti in un’origine dati con una singola tabella logica si comporteranno come se il valore costante fosse replicato per ogni valore nella tabella.

Le costanti nei calcoli a livello di riga non modificano il livello di dettaglio della riga del calcolo. Il calcolo [Vendite] + 10 si comporterà come se provenisse dalla stessa tabella del campo [Vendite].
Forzatura del join esterno Tableau assicura che tutti i valori di misura siano rappresentati nella vista (insieme a tutte le combinazioni di valori di dimensione effettivamente presenti nei dati), quindi se vuoi essere certo di visualizzare tutti i valori possibili nei dati, tra cui i "valori Null non corrispondenti", puoi farlo inserendo le misure nella vista da ogni tabella nel foglio di lavoro.
Non vedo i valori di misura che mi aspetterei da un calcolo tra tabelle Il dominio di un calcolo è il join interno dei relativi input. Se non sono presenti valori corrispondenti da tutti gli input del calcolo della misura, questi non verranno inclusi nel calcolo della misura.

È consigliabile utilizzare un calcolo LOD per spostare i valori delle misure nello stesso oggetto prima di creare il calcolo a livello di riga.
Un calcolo per il passaggio tra campi di tabelle logiche diverse produce risultati imprevisti Se disponi di un calcolo che passa tra campi a livello di riga, utilizzando un’istruzione case, un’istruzione if o una funzione come "IFNULL", potrebbero essere visualizzati risultati imprevisti, poiché questo calcolo viene eseguito per ogni riga, dove la riga è il join interno tra gli input del calcolo.

Un approccio migliore consiste nel passare tra valori aggregati, anziché tentare di passare all’interno del calcolo a livello di riga. Ciò garantirà anche prestazioni superiori negli scenari a tabella singola.

In alternativa, dal momento che si tratta solo di un problema per i calcoli che riguardano diverse tabelle, sarà anche possibile utilizzare calcoli LOD per portare tutti i campi nella stessa tabella.

Non eseguire questa operazione:
SUM( IF [Parameter] == "Foo" THEN [Field 1] ELSE [Field 2] END )

Procedi come segue:
IF [Parameter] == "Foo" THEN SUM([Field 1]) ELSE SUM([Field 2]) END
Valori Null non corrispondenti imprevisti Potresti visualizzare valori di misura associati a un valore di dimensione Null imprevisto. Questo potrebbe un segno del fatto che le relazioni nell’origine dati non sono state configurate correttamente. Potrebbe anche indicare che sono effettivamente presenti valori non corrispondenti dalla tabella che contiene la misura, che non hanno una riga corrispondente nella tabella delle dimensioni.

In passato, questi dati potevano andare persi se veniva selezionato il tipo di join errato. Quando si utilizzano le relazioni, questi valori non corrispondenti vengono mantenuti. Se non desideri visualizzare i valori non corrispondenti, puoi escluderli utilizzando un filtro.
Valori aggregati errati Stai usando relazioni o join? Con le relazioni, le aggregazioni vengono calcolate correttamente per impostazione predefinita. Quando utilizzi i join, potrebbe essere necessario scrivere calcoli LOD per eseguire la deduplicazione dei valori.

Hai impostato in modo errato le opzioni relative alle prestazioni per le relazioni? Prova a ripristinare le impostazioni predefinite per le opzioni relative alle prestazioni e controlla se in questo modo le aggregazioni risultano corrette.
Le dimensioni replicano i valori di misura invece di partizionarli.

I filtri delle dimensioni non creano sottoinsiemi di misure.
 Verifica che i campi utilizzati per definire le relazioni siano corretti.
Tableau sta generando troppe query o query con molti join a sinistra Controlla i log o la registrazione delle prestazioni per vedere quante query vengono generate e quanti join a sinistra vengono utilizzati. Con le nuove funzionalità di modellazione dei dati, Tableau genera query con join a sinistra e/o query aggiuntive per assicurare che i valori delle misure non corrispondenti siano sempre inclusi nella visualizzazione. Se non è necessario visualizzare i valori non corrispondenti, utilizza i filtri per rimuovere i valori non corrispondenti (NULL) dalla visualizzazione. Ciò dovrebbe comportare un minor numero di query.

Se sai che nei dati non sono presenti valori non corrispondenti, puoi configurare l’impostazione Integrità referenziale per ogni relazione su "Tutti i valori corrispondono" in Opzioni per le prestazioni. Anche questo comporterà anche un minor numero di query.

Puoi inoltre ridurre la complessità della visualizzazione per ridurre il numero di query generate. Rimuovere le misure e nascondere i controlli filtro sono i principali modi per semplificare le query su più tabelle con dati correlati.
Le query hanno molte sottoquery Controlla i log o la registrazione delle prestazioni per verificare la complessità delle query generate da Tableau.

Tableau genera automaticamente sottoquery per deduplicare i dati, quando necessario, al fine di generare le aggregazioni corrette. È un comportamento simile alle query generate dai calcoli LOD.

Se sai che le relazioni tra le tabelle logiche nei dati dispongono di una cardinalità molti-a-uno o uno-a-uno, puoi impostare queste informazioni sulla cardinalità in Opzioni per le prestazioni per la relazione. Ciò consentirà a Tableau di eliminare le sottoquery non necessarie, poiché saprà che non può verificarsi alcuna duplicazione.
Usavo i join per filtrare i dati Nella versione 2020.2, Tableau si occupa di recuperare valori non corrispondenti. A volte ciò significa che utilizzerà un join a sinistra dove tu potresti aver specificato un join interno per filtrare intenzionalmente i dati.

Se escludi i valori non corrispondenti introdotti da questo join, Tableau sarà in grado di ottimizzare la query in un join interno.

A seconda dello specifico scenario, potrebbe essere opportuno modellare questo join interno come un join fisico all’interno di una tabella logica. Ciò è particolarmente efficace se una tabella contenente misure viene utilizzata per filtrare una tabella delle dimensioni, in quanto non introdurrà una replica aggiuntiva delle misure.
Grazie per il tuo feedback.Il tuo feedback è stato inviato. Grazie!