Loading

Rimozione dei dati duplicati da Tableau Prep

Data pubblicazione: Jan 31, 2024
Operazione
Come rimuovere i dati duplicati in Tableau Prep. 

La presenza di dati duplicati può verificarsi per diversi motivi. Il miglior modo per risolvere tale può variare. Di seguito sono indicati gli scenari trattati in questo articolo:
  • Quando si uniscono due tabelle che hanno una relazione 1:many o many:many allora i valori misure dell'output sono duplicati.
  • Quando si uniscono due o più tabelle, alcuni record possono essere ripetuti tra le tabelle e quindi vengono duplicati nell'output.
Fasi
Per tutti gli scenari, è possibile rimuovere manualmente i duplicati utilizzando il metodo in Rimozione (correzione) delle variazioni dello stesso valore

FAI CLIC PER ESPANDERE LA PROCEDURA
Scenario 1: misure duplicate da un join
Nella cartella di lavoro di Tableau Prep "duplicati da join.tfl", la tabella "Inventario gennaio" elenca ogni prodotto una sola volta, con il relativo inventario totale. La tabella "Ordini di gennaio" può avere più righe per un prodotto se più ordini sono stati effettuati per lo stesso prodotto. Dopo aver creato un join della tabella "Vendite" e "Inventario", la misura [Inventario] è stata duplicata. Il primo flusso dimostra il problema.

Opzione 1: Utilizza un'Unione invece di un Join

Nota: Nessuno dei valori di [Inventario] sarà direttamente correlato con i dati di "Ordini di Gennaio". Ciò può causare problemi quando si creano calcoli senza aggregazioni, o in viste che mostrano un livello di granularità più elevato rispetto ai campi della clausola di join, che in questo esempio sarebbe [Prodotto].

Opzione 2: crea un calcolo per distribuire i Valori misure in modo uniforme

Possiamo utilizzare un passaggio di aggregazione per individuare il numero di ordini per prodotto, quindi dividere l'inventario per il numero di ordini. Il risultato finale comporterà la rappresentazione di una porzione uguale dell'inventario per ogni ordine. Ad esempio, sono presenti due ordini per cappelli. [Inventario] sarà pari a 100 per ogni ordine di cappelli. [Nuovo inventario] sarà pari a 50 per ogni ordine.

Nota: potrebbe causare informazioni imprecise sull'inventario in una vista se alcuni ordini di un prodotto vengono filtrati.
  1. Crea un join INNER "Inventario gennaio" e "Ordini gennaio" su [Prodotto] = [Prodotto]
  2. Aggiungi Aggregato dal join 2
  3. Nel passaggio Aggregato 1, procedi come segue:
    1. Trascina [Prodotto] su Campi raggruppati
    2. Trascina [ID ordine] in Campi aggregati
    3. Modifica l'aggregazione per ID ordine in Count Distinct
    4. Rinomina ID ordine con qualcosa simile a Ordini per prodotto
      • Anziché [ID ordine], utilizza il campo dell'altra tabella che ha un valore unico per ogni riga.
      • Se non è presente un identificatore univoco, prima di creare il passaggio di aggregazione aggiungi un passaggio per creare un campo calcolato e concatenare le dimensioni richieste affinché presentino un valore univoco per ogni riga.
      • Ad esempio, STR([ID Ordine])+STR([Data])
  4. Trascina Join 2 su Aggregato 1 e rilascia Join 2 in Nuovo join
  5. Nel passaggio Join 3, crea un join LEFT su [Prodotto] = [Prodotto]
  6. Aggiungi un passaggio dal join 3
  7. Nel passaggio Pulizia 1, fai clic sul pulsante Crea campo calcolato...
  8. Nella finestra di dialogo Campo calcolato che si apre, esegui le seguenti operazioni, quindi fai clic su OK:
    1. Attribuisci un nome al campo calcolato. In questo esempio, il campo calcolato è denominato "Nuovo inventario"
    2. Nel campo Formula, crea un calcolo simile a quello riportato di seguito:
      [Inventory]/[Orders per Product]

Opzione 3: aggrega i dati in modo da ottenere una relazione 1:1 per le tabelle

  1. Aggiungi un passaggio Aggregato da Ordini gennaio 4
  2. Nel passaggio Aggregato 2, procedi come segue:
    1. Trascina [Prodotto] nel riquadro Campi raggruppati
    2. Trascina [Vendite], [Quantità], [ID ordine] e [Cliente] nel riquadro Campi aggregati
    3. Fai clic su CNT nel campo [Cliente] per selezionare Count Distinct
    4. Fai clic su SUM nel campo [ID ordine] per selezionare Count Distinct
  3. Trascina Aggregato 2 su Inventario gennaio 4 per creare un join INNER su Prodotto = Prodotto
NOTA: Il campo [Prodotto] è stato trascinato nel riquadro Campi raggruppati in quanto è l'unico campo utilizzato per creare un join. La tabella finale avrà una sola riga per prodotto, il che significa che i dettagli di ogni ordine andranno persi.



Opzione 4: Utilizza un'espressione FIXED in Tableau Desktop

Per ulteriori istruzioni, consulta Rimozione dei dati duplicati con i calcoli LOD.

Il vantaggio di usare un'espressione FIXED in Tableau Desktop è che le espressioni Level of Detail (LOD) hanno regole di aggregazione speciali. Pertanto, un campo di inventario deduplicato usando FIXED poteva mostrare l'inventario completo e non duplicato per un prodotto, sia che si trattasse di un solo ordine da quel prodotto nella vista, sia che si trattasse di un ordine multiplo.
 
FAI CLIC PER ESPANDERE LA PROCEDURA
Scenario 2: dati duplicati dopo l'unione di origini dati con gli stessi dati
Nella cartella di lavoro di Tableau Prep "duplicati da union.tfl", "Ordini gennaio" è il primo report degli ordini effettuati a gennaio. La tabella "Ordini di gennaio (correzioni)" è un rapporto pubblicato successivamente con alcuni nuovi ordini, ma anche correzioni su ordini già esistenti in "Ordini di gennaio". Quando le due tabelle sono unificate, tutte le righe di entrambe le tabelle vengono mantenute, creando misure duplicate.

Il primo flusso in "duplicati da union.tfl" dimostra questo problema.

Opzione 1: Conserva tutti i dati di una tabella e i dati non corrispondenti dell'altra tabella.

Per questo esempio, desideriamo ottenere tutti i dati da "Ordini gennaio (correzioni)" e, da "Ordini gennaio", solo quelli non presenti in "Ordini gennaio (correzioni)".
  1. Crea un nuovo join tra "Ordini gennaio" e "Ordini gennaio (correzioni)"
  2. Nel 1 passaggio Join, esegui le seguenti operazioni:
    1. Per Clausole join applicate, crea una clausola join in [ID Ordine] = [ID Ordine]
    2. Per Tipo di join, fai clic sulle selezioni del diagramma di Venn in modo da riempire solo il segmento più a sinistra. In Tableau Prep questa opzione è denominata join "Solo a sinistra senza corrispondenza".
  3. Trascina "Ordini gennaio (correzioni)" su Join 1 e rilascia la tabella su Nuova unione

Opzione 2: Conserva i record con la data più recente

Ad esempio, la Sig.ra. Mouse ha cambiato il suo ordine per aggiungere un altro cappotto, ma questo cambiamento è stato accidentalmente registrato in "Ordini di gennaio". L'ordine corretto è quello con la data più recente.
  1. Crea un join FULL OUTER tra "Ordini gennaio" e "Ordini gennaio (correzioni)" su [ID Ordine] = [ID Ordine]
  2. Aggiungi un passaggio dal join 2
  3. Unisci tutti i campi corrispondenti, a eccezione dei campi data e dei valori di misura:
    1. Fai clic sul campo i cui valori devono sostituire gli altri nel riquadro di profilo
    2. Premi CTRL+clic sul campo corrispondente
    3. Fai clic con il pulsante destro del mouse su uno dei due campi e seleziona Unisci campi
      • Quando i campi sono uniti, Tableau Prep non mantiene entrambi i valori (se ci sono due valori diversi), ma piuttosto mantiene il valore del campo selezionato per primo se ce n'è uno.
      • Ad esempio, il nome della Sig.ra Horse è stato accidentalmente registrato come Sig.ra House nella tabella "Ordini gennaio" e il suo nome corretto appare in "Ordini gennaio (correzioni). Quando si uniscono [Cliente] e [Cliente-1] voglio prima selezionare [Cliente-1].
      • È possibile verificare quale campo sostituirà l'altro dal nome del campo unito. Il nome deve essere formattato come [nome del primo campo e nome del secondo campo]. Il nome del campo elencato per primo sarà il campo che sostituirà l'altro.
      • Se hai unito i campi nell'ordine sbagliato, puoi annullare l'unione facendo clic con il pulsante destro del mouse sull'icona dell'unione (situata sopra al nome del campo unito nel riquadro di profilo) e selezionando Rimuovi.
    4. Fai clic sul pulsante Crea campo calcolato...
    5. Nella finestra di dialogo Campo calcolato che si apre, esegui le seguenti operazioni, quindi fai clic su OK:
      1. Attribuisci un nome al campo calcolato. In questo esempio, il campo calcolato si chiama "Data più recente".
      2. Nel campo Formula, crea un calcolo simile a quello riportato di seguito:
        IF [Date] > [Date-1]
        THEN [Date]
        ELSE IFNULL( [Date-1], [Date] )
        END
      3. Il calcolo precedente restituirà [Data] se è "più grande" o, nel caso di date più recenti, [Data-1]. Altrimenti il calcolo restituirà [Data-1].
      4. Se uno dei campi è NULL, la prima condizione sarà sempre falsa. La funzione IFNULL() sostituisce [Data-1] con [Data] quando [Data-1] è NULL. Ciò significa che il calcolo restituirà sempre un valore non NULL se esiste.
      5. Rimuovi [Date] e [Date-1]
    6. Crea un campo calcolato con un nome simile a "Nuovo costo" con un calcolo simile al seguente:
      IF [Date] > [Date-1]
      THEN [Cost]
      ELSE IFNULL( [Cost-1], [Cost] )
      END
      
    7. Rimuovi [Costo] and [Costo-1]
    8. Ripeti i passaggi 6-7 per ogni misura

Opzione 3: tratta ogni duplicato in modo diverso

  1. Crea un join FULL OUTER tra "Ordini gennaio" e "Ordini gennaio (correzioni)" su [ID Ordine] = [ID Ordine]
  2. Aggiungi un passaggio dal join 3
  3. Unisci tutti i campi che a) hanno gli stessi valori in entrambe le tabelle, oppure b) i valori di una tabella dovrebbero sempre sostituire i valori di una tabella.
  4. Fai clic sul pulsante Crea campo calcolato...
  5. Nella finestra di dialogo Campo calcolato che si apre, esegui le seguenti operazioni, quindi fai clic su OK:
    1. Attribuisci un nome al campo calcolato. In questo esempio, il campo calcolato è denominato "Nuovo costo"
    2. Nel campo Formula, crea un calcolo simile a quello riportato di seguito:
      CASE [Order ID-1 & Order ID]
      WHEN 5 THEN [Date]
      WHEN 9 THEN [Date]
      ELSE IFNULL([Date-1],[Date])
      END
      
    • Il calcolo precedente leggerà ogni valore di [ID ordine-1 e ID ordine] e restituirà il campo data specificato. Per semplificare la procedura, ho solo specificato quali ID devono restituire [Data] e poi tutto il resto restituirà [Data-1], o [Data] se [Data-1] è NULL, a causa della dichiarazione ELSE.
    • Il valore [ID ordine-1 e ID ordine] è usato nella dichiarazione CASE perché questo campo avrà un valore unico per ogni riga di dati.
    • In questo modo, ogni nuovo ID aggiunto restituirà [Data-1] quando questo flusso verrà ripetuto in futuro.
  6. Rimuovi [Date] e [Date-1]
  7. Ripeti i passaggi 4-6 per tutti i campi in cui i duplicati devono essere gestiti su base individuale.
Numero articolo Knowledge

001453799

Allegati

duplicates from join.tflx

11 KB

duplicates from union.tflx

12 KB

 
Caricamento
Salesforce Help | Article