KNOWLEDGE BASE

Combinazione di campi di dati multipli


Pubblicato: 24 Apr 2017
Data dell'ultima modifica: 09 Apr 2024

Domanda

Come combinare più campi data in un unico asse o in una singola intestazione della data.

Ad esempio, ogni ordine presenta una [Data ordine] e una [Data spedizione]. L'obiettivo finale è mostrare su ogni mese un grafico a linee o campi incrociati del numero di ordini effettuati e spediti. Se utilizzi [Order Date] come asse o intestazione, il numero di ordini spediti ogni mese sarà errato e viceversa.

Ambiente

Tableau Desktop

Risposta

Nella cartella di lavoro di esempio allegata viene utilizzato un set di dati campione Superstore per dimostrare tutte le opzioni.
FAI CLIC PER ESPANDERE LA SOLUZIONE
Opzione 1: pivot dei campi data
  1. Trasforma tramite pivot i campi data in modo che sia presente un solo campo con i dati delle date e un secondo campo, ad esempio "Evento", che descriva se si tratta di un "ordine effettuato" o di un "ordine spedito". Nota: puoi trasformare tramite pivot alcune origini dati direttamente in Tableau Desktop. Per istruzioni dettagliate, vedi Trasformare dati da colonne a righe
  2. Fai clic con il pulsante destro del mouse e trascina [Valori campi pivot] nello spazio Righe
  3. Nella finestra di dialogo Elimina campo, seleziona MY(Valori campo pivot) e fai clic su OK
  4. Nel riquadro Dati fai clic su [Nomi campi pivot] e seleziona Alias…
  5. Nella finestra di dialogo Modifica alias, fornisci un alias più descrittivo a Data ordine e Data spedizione e fai clic su OK
  6. Trascina [Nomi campi pivot] nello spazio Colonne
  7. Fai clic con il pulsante destro del mouse e trascina [ID ordine] in Testo nella scheda Indicatori
  8. Nella finestra di dialogo Elimina campo, seleziona CNTD(Order ID) e fai clic su OK
FAI CLIC PER ESPANDERE LA SOLUZIONE
Opzione 2: usa un calcolo LOD
Questa opzione richiede che ogni campo data contenga almeno un record per ogni contenitore di date nella vista. In questo esempio, ogni riga corrisponde a un mese, pertanto sia [Data ordine] sia [Data spedizione] devono contenere almeno un ordine per ciascun mese.
  1. Scegli un campo data per creare l'asse delle date o le intestazioni. In questo esempio viene utilizzato [Data ordine]
  2. Fai clic con il pulsante destro del mouse e trascina [Data ordine] nello spazio Righe
  3. Nella finestra di dialogo Elimina campo, seleziona MY(Data ordine) con l'icona # e fai clic su OK
  4. Fai clic con il pulsante destro del mouse e trascina [ID ordine] in Testo nella scheda Indicatori
  5. Nella finestra di dialogo Elimina campo, seleziona CNTD(ID ordine)
  6. Fai clic con il pulsante destro del mouse sull'intestazione "Numero distinto di ID ordine" nella vista e seleziona Modifica alias…
  7. Nella finestra di dialogo Modifica alias, digita un nuovo nome e fai clic su OK
  8. Crea un campo calcolato con un nome come "Ordini spediti" con un calcolo simile a quello riportato di seguito:

    MIN(
    IF DATETRUNC('month', [Order Date]) = DATETRUNC('month', [Ship Date])
    THEN { FIXED DATETRUNC('month', [Ship Date]) : COUNTD([Order ID]) }
    END
    )


    9. Nel riquadro Dati, fai doppio clic su [Ordini spediti] per aggiungere il campo alla vista

     
FAI CLIC PER ESPANDERE LA SOLUZIONE
Opzione 3: usa scaffolding delle date
Questa opzione richiede che un campo data sia sempre preceduto da un altro e funziona meglio quando i due campi data definiscono un intervallo.
  1. Crea una tabella che contenga un elenco principale di tutte le date possibili che verranno unite alla connessione dati originale. In questo esempio, tale tabella è denominata "Elenco date principale"
  2. Vai alla scheda Origine dati in Tableau Desktop
  3. Aggiungi la tabella "Foglio 1" nell'area Canvas
  4. Nella finestra di dialogo Join, esegui queste operazioni:
    1. Seleziona Sinistro
    2. In Origine dati, seleziona Data ordine
    3. In Foglio 1, seleziona Data
    4. Fai clic sul segno di uguale e seleziona <=
    5. In Origine dati, fai clic su Aggiungi nuova clausola di join e seleziona Data spedizione
    6. In Foglio 1, seleziona Data
    7. Fai clic sul segno di uguale e seleziona >=
  5. Seleziona Analisi > Crea campo calcolato
  6. Nella finestra di dialogo Campo calcolato che si apre, esegui queste operazioni, quindi fai clic su OK:
    1. Attribuisci un nome al campo calcolato. In questo esempio, il campo calcolato è denominato "Ordini effettuati"
    2. Nel campo Formula, crea un calcolo simile a quello riportato di seguito:
      COUNTD(
      IF DATETRUNC('month', [Order Date]) = DATETRUNC('month', [Date])
      THEN [Order ID]
      END
      )
  7. Crea un campo calcolato con un nome come "Ordini spediti" con un calcolo simile a quello riportato di seguito:
    COUNTD(
    IF DATETRUNC('month', [Ship Date]) = DATETRUNC('month', [Date])
    THEN [Order ID]
    END
    )
  8. Fai clic con il pulsante destro del mouse e trascina [Data] nello spazio Righe
  9. Nella finestra di dialogo Elimina campo, seleziona MY(Date) e fai clic su OK
  10. Trascina [Ordini effettuati] su Testo nella scheda Indicatori
  11. Nel riquadro Dati, fai doppio clic su [Ordini spediti] per aggiungere il campo alla vista
FAI CLIC PER ESPANDERE LA SOLUZIONE
Opzione 4: usa la combinazione dei dati
Questa opzione non funzionerà per un intervallo di date.
  1. Crea una tabella che contenga un elenco principale di tutte le date possibili e crea una nuova connessione a tale elenco. In questo esempio, tale connessione è denominata "Foglio1 (elenco date principale)"
  2. Vai a Dati > Sample - Superstore > Duplica. Per maggiore chiarezza, in questo esempio le due copie di "Sample - Superstore" sono denominate "Sample - Superstore (link a data ordine)" ed "Sample - Superstore (link a data spedizione)".
  3. Vai a Dati > Modifica relazioni…
  4. Nella finestra di dialogo Relazioni, esegui queste operazioni:
    1. Per l'origine dati primaria, seleziona Foglio1 (elenco date principale)
    2. Per l'origine dati secondaria, seleziona Sample - Superstore (link a data ordine)
    3. Seleziona il pulsante di opzione Personalizzato
    4. Fai clic su Aggiungi…
  5. Nella finestra di dialogo Aggiungi/Modifica mapping campo, esegui queste operazioni:
    1. Fai clic sulla freccia accanto al campo Data per espandere le opzioni relative alla data.
    2. Seleziona il livello di data che corrisponde a livello di data più granulare utilizzato nella vista. In questo esempio, nella vista viene utilizzato MY(Data).
    3. Nel riquadro destro, fai clic sulla freccia accanto a Data ordine.
    4. Seleziona il livello di data corrispondente per Data ordine.
    5. Fai clic su OK
  6. Ripeti i passaggi 4-5 con "Sample - Superstore (link a data spedizione)" come origine dati secondaria e aggiungi una relazione in MY(Data) = MY(Data spedizione)
  7. Fai clic su OK per chiudere la finestra di dialogo Relazioni
  8. In un nuovo foglio di lavoro, fai clic con il pulsante destro del mouse e trascina [Data] dalla connessione dati "Foglio1 (elenco date principale)" nella vista
  9. Nella finestra di dialogo Elimina campo, seleziona MY(Date) e fai clic su OK
  10. Fai clic con il pulsante destro del mouse sull'intestazione "Numero distinto di ID ordine" nella vista e seleziona Modifica alias…
  11. Nella finestra di dialogo Modifica alias, digita un nome più descrittivo e fai clic su OK
  12. Fai clic con il pulsante destro del mouse e trascina [ID ordine] dall'origine dati "Sample - Superstore (link a data ordine)" su Testo sull'etichetta Indicatori
  13. Nella finestra di dialogo Elimina campo, seleziona CNTD(Order ID) e fai clic su OK
  14. Fai clic con il pulsante destro del mouse e trascina [ID ordine] dall'origine dati "Sample - Superstore (link a data spedizione)" su Testo sull'etichetta Indicatori
  15. Nella finestra di dialogo Elimina campo, seleziona CNTD(Order ID) e fai clic su OK
  16. Trascina CNTD(ID ordine) da Dettagli nella scheda Indicatori sui numeri nella vista e rilascia il campo
  17. Nella finestra di dialogo Modifica alias, digita un nome più descrittivo e fai clic su OK

Ulteriori informazioni

Note sull'opzione 2 (livello dell'espressione di dettaglio):
  • Ciascun campo data deve disporre di almeno un record per il livello di data utilizzato nella vista.
  • L'espressione FIXED restituirà il numero totale distinto degli ordini spediti per ogni mese in [Data spedizione], indipendentemente dal mese della [Data spedizione] visualizzato nella vista. Ad esempio, gli ordini spediti a febbraio sono stati posizionati sia in Gennaio sia in Febbraio. Pertanto, l'espressione FIXED da sola restituirebbe 59 ordini sia in MY(Data ordine) = Gennaio sia in MY(Data ordine) = Febbraio.
  • L'istruzione IF è inclusa in MIN() per evitare un problema in cui le espressioni LOD (Level of Detail, Livello di dettaglio) restituiscono valori duplicati all'interno di un'istruzione IF.

Note sull'opzione 3 (scaffolding delle date):
  • Puoi inoltre elencare tutte le date a un livello superiore, come il primo giorno di ogni mese. Quindi, nei passaggi 4-2 e 4-5 usa un calcolo join che imposterà la data nella tabella originale al livello di data corretto, come DATETRUNC('month', [Data ordine]).
  • Se ti risulta impossibile aggiungere una tabella con tutte le date all'origine dati originale, crea un join tra database in una tabella esterna contenente tutte le date. Ciò richiede l'aggiornamento a Tableau Desktop 10.5 o versioni successive, al fine di utilizzare le disuguaglianze nelle clausole di join nella funzionalità di join tra database.
  • Con opzione duplicherai i dati e così facendo potresti influenzare le altre viste che utilizzano la stessa origine dati.
  • A partire da Tableau Prep 2021.3.1, è possibile creare lo scaffolding delle date in Tableau Prep senza creare un Elenco date. Per le indicazioni, consulta Colmare i gap nei dati sequenziali.
Note sull'opzione 4 (unione dei dati):
  • L'unione dei dati presenta molte limitazioni. Per assistenza con potenziali problemi, vedi Risoluzione dell'unione dei dati.
  • Le date collegate devono corrispondere esattamente al livello di data più granulare selezionato nella finestra di dialogo Relazioni
  • Durante la creazione di relazioni tra campi di origini dati diverse, puoi solo associare ciascun campo a un altro alla vota, per questo motivo è stato necessario duplicare l'origine dati originale.
  • Estrai tutti i campi associati a [Data ordine] dalla copia dell'origine dati originale collegata su MY(Data) = MY(Data ordine) e viceversa per tutti i campi associati a [Data spedizione].

Visualizzazione dei record attivi nel tempo
Combinare i dati
Creare espressioni di livello di dettaglio in Tableau
Le dichiarazioni CASE e IF contenenti l'espressione di livello di dettaglio restituiscono risultati inaspettati
Con questo articolo hai risolto il problema?