Creazione di bucket in Looker

Se disponi dell'autorizzazione per creare campi personalizzati, puoi creare gruppi personalizzati ad hoc per le dimensioni senza utilizzare funzioni logiche nelle espressioni di Looker o sviluppare la logica CASE WHEN nei parametri sql o nei campi type: case.
Puoi anche creare bin personalizzati ad hoc per dimensioni di tipo numerico senza dover utilizzare funzioni logiche nelle espressioni di Looker o sviluppare type: tier campi LookML se disponi dell'autorizzazione per creare campi personalizzati.

Il bucketing può essere molto utile per creare dimensioni di raggruppamento personalizzate in Looker.

Esistono tre modi per creare bucket in Looker:

  1. Utilizzo del tipo dimension tier
  2. Utilizzo del parametro case
  3. Utilizzo di un'istruzione CASE WHEN SQL nel parametro SQL di un campo LookML

Utilizzo di tier per il bucketing

Per creare bucket di numeri interi, possiamo semplicemente definire il tipo dimension come tier:

dimension: users_lifetime_orders_tier {
  type: tier
  tiers: [0,1,2,5,10]
  sql: ${users_lifetime_orders} ;;
}

Puoi utilizzare il parametro style per personalizzare la visualizzazione dei livelli durante l'esplorazione. Le quattro opzioni per style sono le seguenti:

  1. classic
  2. integer
  3. interval
  4. relational

Ad esempio:

dimension: age_tier {
  type: tier
  tiers: [0,10,20,30,40,50,60,70,80]
  style: integer
  sql: ${age} ;;
}

Il parametro style classic è il valore predefinito e ha il formato Tx[x,x], dove Tx indica il numero del livello e [x,x] indica l'intervallo. L'immagine seguente mostra una tabella di dati di esplorazione con Conteggio utenti raggruppato per Età utenti:

Il livello di età degli utenti più alto disponibile nella tabella di dati è T02[10,20] che indica un conteggio di 808 utenti di età compresa tra 10 e 20 anni.

L'immagine seguente mostra esempi delle altre opzioni del parametro style:

  • interval: con il formato [x,x], che indica il valore più basso e il valore più alto di un livello
  • integer: con il formato x to x, che indica il valore più basso e il valore più alto di un livello
  • relational: con il formato >= x and <x, che indica che un valore è maggiore o uguale al valore del livello più basso e inferiore al valore del livello più alto

Aspetti da considerare

L'utilizzo di tier insieme al riempimento delle dimensioni può causare bucket di livelli imprevisti.

Ad esempio, una dimensione type: tier, Fascia d'età, mostrerà i bucket di fascia per Meno di 0 e 0-9 quando il completamento delle dimensioni è abilitato, anche se i dati non includono i valori di età per questi bucket:

Quando il riempimento delle dimensioni è disattivato per Fascia d'età, i bucket riflettono in modo più accurato i valori dell'età disponibili nei dati, a partire dal bucket da 10 a 19:

Puoi attivare o disattivare il completamento delle dimensioni passando il mouse sopra il nome della dimensione nell'esplorazione, facendo clic sull'icona a forma di ingranaggio a livello di campo e selezionando Rimuovi valori di livello compilati per disattivare o Completa valori di livello mancanti per attivare.

Per saperne di più su Looker tiers, consulta la pagina della documentazione Tipi di dimensioni, filtri e parametri.

Utilizzo di case per il bucketing

Puoi utilizzare il parametro case per creare bucket con nome personalizzato mediante l'ordinamento personalizzato. Il parametro case è consigliato per un insieme fisso di bucket, in quanto può aiutare a controllare il modo in cui i valori vengono presentati, ordinati e utilizzati nei filtri e nelle visualizzazioni dell'interfaccia utente. Ad esempio, con case, un utente potrà selezionare solo i valori del bucket definiti in un filtro.

Per creare bucket con case, puoi definire una dimensione, ad esempio un bucket per gli importi degli ordini:

  dimension: order_amount_bucket {
    case: {
      when: {
        sql: ${order_amount} <= 50;;
        label: "Small"
      }
      when: {
        sql: ${order_amount} > 50 AND ${order_amount} <= 150;;
        label: "Medium"
      }
      when: {
        sql: ${order_amount} > 150;;
        label: "Large"
      }
      else:"Unknown"
    }
  }

In genere, il parametro case ordina i valori nell'ordine in cui sono elencati i bucket. Per la dimensione order_amount_bucket, l'ordine dei bucket è Piccolo, Medio e Grande:

Se vuoi ordinare in modo alfanumerico, aggiungi il parametro alpha_sort alla dimensione, in questo modo:

  dimension: order_amount_bucket {
    alpha_sort: yes
    case: {
      when: {
        sql: ${order_amount} <= 50;;
        label: "Small"
      }
      when: {
        sql: ${order_amount} > 50 AND ${order_amount} <= 150;;
        label: "Medium"
      }
      when: {
        sql: ${order_amount} > 150;;
        label: "Large"
      }
      else:"Unknown"
    }
  }

Per le dimensioni in cui nell'output sono necessari molti valori distinti (questo richiederebbe la definizione di ogni output con un'istruzione WHEN o ELSE) oppure quando vuoi implementare un'istruzione ELSE più complessa, ti consigliamo di utilizzare un CASE WHEN SQL, di cui parleremo nella prossima sezione.

Scopri di più sul parametro case nella pagina della documentazione Parametri di campo.

Utilizzo di SQL CASE WHEN per il bucketing

Un'istruzione CASE WHEN SQL è consigliata per un raggruppamento più complesso o per l'implementazione di un'istruzione CASE WHEN più sfumata.

Ad esempio, potresti voler utilizzare metodi di raggruppamento diversi a seconda della destinazione di un ordine. Si potrebbe utilizzare un'istruzione SQL CASE WHEN per creare una dimensione di bucket composta, in cui l'istruzione THEN restituisce dimensioni anziché stringhe:

dimension: compound_buckets {
  sql:
    CASE
      WHEN ${orders.destination} = 'US' THEN ${us_buckets}
      WHEN ${orders.destination} = 'CA' THEN ${canada_buckets}
    ELSE ${intl_buckets}
    END ;;
}