KNOWLEDGE BASE

Calcolo di un Count Distinct parziale o mobile


Pubblicato: 07 Nov 2015
Data dell'ultima modifica: 20 Jul 2023

Domanda

Come calcolare il valore distinto di un conteggio parziale, in movimento, di una dimensione.

Ad esempio, il totale parziale di clienti unici che hanno realizzato un ordine in tutto il periodo di tempo, o un totale mobile di clienti unici che hanno effettuato un ordine in un intervallo di tempo, come le ultime tre settimane.

Ambiente

Tableau Desktop

Risposta

La cartella di esempio allegata utilizza l'insieme di dati campione Superstore per dimostrare le seguenti indicazioni.
FAI CLIC PER ESPANDERE LA PROCEDURA
Opzione 1: usare FIXED per trovare il valore distinto del conteggio parziale.
Nota: questo metodo non funziona per effettuare un conteggio di valori distinti in movimento.
  1. Seleziona Analisi > Crea campo calcolato
  2. 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 "Primo ordine del cliente".
    2. Nel campo Formula, crea un calcolo simile a quello riportato di seguito:
      { FIXED [Customer Name], [Order Date] : MIN(
      IF [Order Date] = { EXCLUDE [Order Date] : MIN([Order Date])}
      THEN 1
      ELSE 0
      END
      ) }
      
  3.  Crea un campo calcolato denominato "COUNTD parziale preciso dei clienti" con un calcolo simile al seguente:
    RUNNING_SUM(SUM([Count Customer's 1st Order]))
  4. Fai clic con il pulsante destro del mouse e trascina [Data ordine] nella vista
  5. Nella finestra di dialogo Elimina campo, seleziona WEEK(Data ordine) con l'icona verde del calendario.
  6. Trascina [COUNTD parziale preciso dei clienti] sullo spazio Righe
FAI CLIC PER ESPANDERE LA PROCEDURA
Opzione 2: Usa le funzioni della tabella per trovare il conteggio mobile distinto
Nota: è probabile che questa soluzione causi problemi di rendimento in quanto la vista finale deve contenere tutte le dimensioni necessarie per calcolare il calcolo tabella.
Passaggio 1: Crea campi calcolati
  1. Seleziona Analisi > Crea campo calcolato
    1. Nella finestra di dialogo Campo calcolato che viene visualizzata, effettua le seguenti operazioni, quindi fai clic su OK:
    2. Attribuisci un nome al campo calcolato. In questo esempio, il campo calcolato è denominato "Periodo di ogni 3 settimane in cui si trova un cliente".
    3. Nel campo Formula, crea un calcolo simile a quello riportato di seguito:
      	WINDOW_MAX( MAX(1), -2, 0 )
    • I calcoli di Tableau dipendono in larga misura dalla vista. Quindi, senza il contesto della vista, questo calcolo restituirà prima il valore 1 per ogni indicatore (es. riga, punto, barra, ecc.) nella vista, e poi restituirà nuovamente il massimo di questi 1 da due indicatori a questo indicatore.
    • In questo esempio, la vista finale presenta un indicatore per ogni settimana di ciascun cliente. Quindi, in questo contesto, il calcolo restituirà 1 se il cliente ha effettuato un ordine questa settimana o nelle due settimane precedenti. Se un cliente ha effettuato un ordine per ogni settimana, questo calcolo restituirà comunque solo 1 perché stiamo usando WINDOW_MAX() anziché WINDOW_SUM().
    • Questo calcolo da solo restituirà solo un 1 o 0 per ogni cliente. Dobbiamo quindi inserire questo calcolo in una funzione WINDOW_SUM() per sommare tutti gli 1 per tutti i clienti. Questi calcoli devono trovarsi in campi calcolati separatamente, in modo da poter impostare il modo in cui le funzioni della tabella sono calcolate diversamente.
  2. Crea un campo calcolato denominato "Conteggio mobile dei clienti ogni 3 settimane" con un calcolo simile al seguente:
    WINDOW_SUM([Every 3 Week Period a Customer is In])
  3. Crea un campo calcolato con un nome come "Primo filtro" con un calcolo simile al seguente:
    FIRST() = 0
Passaggio 2: Crea la vista
  1. Fai clic con il pulsante destro del mouse e trascina [Data ordine] nello spazio Colonne.
  2. Nella finestra di dialogo Elimina campo, seleziona WEEK (Data ordine) con l'icona del calendario verde.
    1. Fai clic con il pulsante destro del mouse su WEEK(Data ordine) nello spazio Colonne e seleziona Discreto.
    2. Il campo data deve essere discreto, altrimenti il grafico a linee sarà interrotto da [Nome cliente].
  3. Trascina [Nome cliente] in Dettagli sulla scheda Indicatori.
    • Il campo [Nome cliente] deve essere nella vista in modo che i calcoli tabella siano calcolati correttamente. Filtreremo in seguito la vista per far sembrare che sia presente una sola linea
  4. Trascina [Conteggio mobile dei clienti ogni 3 settimane] sullo spazio Righe.
Passaggio 3: Modifica i calcoli tabella
  1. Fai clic con il pulsante destro del mouse su [Conteggio mobile dei clienti ogni 3 settimane] nello spazio Righe e seleziona Modifica calcolo tabella...
  2. Nella finestra di dialogo Calcolo tabella, procedi come segue e chiudi la finestra di dialogo:
    1. In Calcoli annidati, seleziona Periodo ogni 3 settimane in cui si trova un cliente.
    2. In Calcola usando, seleziona Dimensioni specifiche.
    3. Nell'elenco delle dimensioni, seleziona solo Settimana della data ordine.
    4. In Calcoli annidati, seleziona Conteggio mobile dei clienti ogni 3 settimane.
    5. In Calcola usando, seleziona Dimensioni specifiche.
    6. Nell'elenco delle dimensioni, seleziona solo Nome cliente.
      • For [Every 3 Week Period a Customer is In] we want Tableau Desktop to count every 3 week period a customer is in per customer. In altre parole, vogliamo che Tableau Desktop conti le settimane nell'ambito di ogni cliente. Quando viene selezionata una dimensione, il calcolo tabella verrà eseguito per ogni valore della dimensione. Disattivando una dimensione, Tableau Desktop inizierà il calcolo per ogni valore di quella dimensione.
      • Allo stesso modo, vogliamo che [Conteggio mobile dei clienti ogni 3 settimane] riassuma tutti i clienti all'interno di ogni settimana.
  3. Trascina [Primo filtro] sullo spazio Filtri e fai clic su OK per chiudere la finestra di dialogo
  4. Fai clic con il pulsante destro del mouse su [Primo filtro] nello spazio Filtri e seleziona Calcola usando > Nome cliente.
  5. Nella finestra di dialogo Filtro, seleziona Vero e fai clic su OK.

Ulteriori informazioni

Note sull'opzione 1:
  • Questo calcolo conta ogni cliente una volta sola (la prima volta che compare nell'insieme di dati). Questo significa che questo metodo non funzionerà per trovare un conteggio distinto in movimento, poiché l'espressione FIXED non riesce a trovare la data del primo ordine per un periodo di tempo mobile.
  • Il calcolo nel passaggio 2 realizza quanto segue:
    • Innanzitutto l'espressione { EXCLUDE [Data ordine] : MIN([Data ordine])} trova la prima data dell'ordine per cliente. Normalmente, useremmo l'espressione { FIXED [Nome cliente] : MIN([Data ordine])} per trovare il primo ordine. Tuttavia, l'ambito di EXCLUDE è fissato dall'istruzione FIXED esterna. In altre parole, l'istruzione EXCLUDE inizia con le dimensioni [Nome cliente] e [Data ordine] e quindi esclude [Data ordine].
    • Poi l'istruzione IF restituisce 1 nella data che è la prima data dell'ordine per quel cliente.
    • L'istruzione IF restituirà 1 su qualsiasi riga in cui la data corrisponde alla data del primo ordine. Ciò significa che se i dati sottostanti presentano più registri per il primo ordine, ciascuna di queste righe sarà 1. Poiché vogliamo contare ogni cliente una sola volta, il minimo dell'istruzione IF è fissato a [Nome cliente].
    • Dobbiamo anche aggiungere [Data ordine] alla dichiarazione di dimensione dell'istruzione FIXED in modo che la vista finale mostri il cambiamento nel tempo.
Note sull'opzione 2:
  • I calcoli di Tableau dipendono in larga misura dalla vista. Perciò, senza il contesto della vista, il calcolo del passaggio 2 restituirà prima il valore 1 per ogni indicatore (es. riga, punto, barra, ecc....) nella vista, e poi restituirà nuovamente il massimo di questi 1 da due indicatori a questo indicatore.
  • In questo esempio, la vista finale presenta un indicatore per ogni settimana di ciascun cliente. Quindi, in questo contesto, il calcolo restituirà 1 se il cliente ha effettuato un ordine questa settimana o nelle due settimane precedenti. Se un cliente ha effettuato un ordine per ogni settimana, questo calcolo restituirà comunque solo 1 perché stiamo usando WINDOW_MAX() anziché WINDOW_SUM().
  • Questo calcolo da solo restituirà solo un 1 o 0 per ogni cliente. Dobbiamo pertanto annidare questo calcolo in una funzione WINDOW_SUM() per sommare tutti gli 1 di tutti i clienti.
  • Questi calcoli devono trovarsi in campi calcolati separatamente, in modo da poter impostare il modo in cui le funzioni della tabella sono calcolate diversamente.
Con questo articolo hai risolto il problema?