Bucketing in Looker

Wenn Sie die Berechtigung zum Erstellen benutzerdefinierter Felder haben, können Sie Ad-hoc-benutzerdefinierte Gruppen für Dimensionen erstellen, ohne logische Funktionen in Looker-Ausdrücken zu verwenden oder CASE WHEN-Logik in sql-Parametern oder type: case-Feldern zu entwickeln.
Sie können auch benutzerdefinierte Bins für numerische Dimensionen erstellen, ohne logische Funktionen in Looker-Ausdrücken verwenden zu müssen oder type: tier LookML-Felder zu entwickeln, wenn Sie die Berechtigung zum Erstellen benutzerdefinierter Felder haben.

Bucketing kann sehr nützlich sein, um benutzerdefinierte Gruppierungsdimensionen in Looker zu erstellen.

Es gibt drei Möglichkeiten, Buckets in Looker zu erstellen:

  1. Mit dem dimension-Typ tier
  2. Parameter case verwenden
  3. Verwendung einer SQL-CASE WHEN-Anweisung im Parameter SQL eines LookML-Felds

tier für Bucketing verwenden

Zum Erstellen von Ganzzahl-Buckets können wir den Typ dimension einfach als tier definieren:

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

Mit dem Parameter style können Sie anpassen, wie Ihre Stufen beim Entdecken angezeigt werden. Die vier Optionen für style sind:

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

Beispiel:

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

Der style-Parameter classic ist die Standardeinstellung und hat das Format Tx[x,x], wobei Tx die Stufennummer und [x,x] den Bereich angibt. In der folgenden Abbildung sehen Sie eine Explore-Datentabelle mit Nutzerzahl, gruppiert nach Alter der Nutzer:

Die höchste verfügbare Stufe der Nutzeraltersstufe in der Datentabelle ist T02[10,20], was eine Anzahl von 808 Nutzern im Alter von 10 bis 20 Jahren angibt.

Die nächste Abbildung zeigt Beispiele für die anderen style-Parameteroptionen:

  • interval: mit dem Format [x,x], das den niedrigsten und den höchsten Wert einer Stufe angibt
  • integer: mit dem Format x to x, das den niedrigsten und den höchsten Wert einer Stufe angibt
  • relational: mit dem Format >= x and <x, das angibt, dass ein Wert größer oder gleich dem Wert der niedrigsten Stufe und kleiner als der Wert der höchsten Stufe ist

Wichtige Punkte

Die Verwendung von tier in Verbindung mit der Dimensionsergänzung kann zu unerwarteten Stufengruppen führen.

Beispielsweise werden mit der Dimension type: tier (Altersstufe) Gruppen für Unter 0 und 0 bis 9 angezeigt, wenn die Dimensionsergänzung aktiviert ist, obwohl die Daten keine Alterswerte für diese Gruppen enthalten:

Wenn die Dimensionsergänzung für die Altersstufe deaktiviert ist, spiegeln die Gruppen die in den Daten verfügbaren Alterswerte genauer wider, beginnend mit der Gruppe 10 bis 19:

Sie können die Dimensionsergänzung aktivieren oder deaktivieren. Bewegen Sie dazu den Mauszeiger auf den Namen einer Dimension im Explore, klicken Sie auf das Zahnradsymbol auf Feldebene und wählen Sie entweder Ausgefüllte Stufenwerte entfernen aus, um die Funktion zu deaktivieren, oder Fehlende Stufenwerte ausfüllen, um die Funktion zu aktivieren.

Weitere Informationen zu Looker tiers finden Sie auf der Dokumentationsseite Dimension, Filter und Parametertypen.

case für Bucketing verwenden

Mit dem Parameter case können Sie benutzerdefinierte Buckets mit benutzerdefinierter Sortierung erstellen. Der case-Parameter wird für eine feste Gruppe von Buckets empfohlen, da er festlegen kann, wie Werte dargestellt, sortiert und in UI-Filtern und Visualisierungen verwendet werden. Beispiel: Mit case kann ein Nutzer nur die definierten Bucket-Werte in einem Filter auswählen.

Zum Erstellen von Buckets mit case können Sie eine Dimension definieren, z. B. einen Bucket für Bestellbeträge:

  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"
    }
  }

Mit dem Parameter case werden die Werte normalerweise in der Reihenfolge sortiert, in der die Buckets aufgelistet sind. Für die Dimension order_amount_bucket sind die Buckets Klein, Mittel und Groß angeordnet:

Wenn Sie alphanumerisch sortieren möchten, fügen Sie der Dimension den Parameter alpha_sort hinzu:

  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"
    }
  }

Für Dimensionen, bei denen viele verschiedene Werte in der Ausgabe erwünscht sind (dazu müsstest du jede Ausgabe mit einer WHEN- oder ELSE-Anweisung definieren), oder wenn du eine komplexere ELSE-Anweisung implementieren möchtest, empfehlen wir die Verwendung einer SQL-CASE WHEN, wie im nächsten Abschnitt beschrieben.

Weitere Informationen zum Parameter case finden Sie auf der Dokumentationsseite Feldparameter.

SQL-CASE WHEN für Bucketing verwenden

Eine CASE WHEN-SQL-Anweisung wird für komplexere Buckets oder die Implementierung einer differenzierteren ELSE-Anweisung empfohlen.

Je nach Ziel eines Auftrags können Sie beispielsweise unterschiedliche Bucketing-Methoden verwenden. Mit einer SQL-CASE WHEN-Anweisung kann eine zusammengesetzte Bucket-Dimension erstellt werden, wobei die THEN-Anweisung Dimensionen statt Strings zurückgibt:

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