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 Ad-hoc-benutzerdefinierte Klassen für Dimensionen des numerischen Typs erstellen, ohne logische Funktionen in Looker-Ausdrücken verwenden oder type: tier LookML-Felder entwickeln zu müssen, wenn Sie berechtigt sind, benutzerdefinierte Felder zu erstellen.

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

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

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

tier für Bucketing verwenden

Zum Erstellen von Ganzzahl-Buckets können Sie 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 die Stufen in explorativen Datenanalysen dargestellt werden. Für style gibt es vier Optionen:

  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, in der die Nutzerzahl nach Nutzeralter gruppiert ist:

Die am stärksten verfügbare Altersstufe der Nutzer in der Datentabelle ist T02[10,20], was eine Anzahl von 808 Nutzern im Alter von 10 bis 20 Jahren angibt.

Auf der nächsten Abbildung sehen Sie 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 – im 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 Ebenen-Buckets führen.

Wenn beispielsweise die Dimensionsfüllung für die type: tier-Dimension Altersgruppe aktiviert ist, werden die Stufen Unter 0 und 0 bis 9 angezeigt, obwohl die Daten keine Alterswerte für diese Stufen enthalten:

Wenn die Dimensionsfüllung für Altersgruppe deaktiviert ist, spiegeln die Buckets die in den Daten verfügbaren Alterswerte genauer wider, beginnend mit dem Bucket 10 bis 19:

Sie können die Dimensionsergänzung aktivieren oder deaktivieren, indem Sie im Explore den Mauszeiger auf den Namen der Dimension bewegen, auf das Zahnradsymbol auf Feldebene klicken und entweder Ausgefüllte Ebenenwerte entfernen oder Fehlende Stufenwerte zum Aktivieren auswählen.

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

case für Bucketing verwenden

Mit dem Parameter case können Sie benutzerdefinierte Buckets mit benutzerdefinierter Sortierung erstellen. Der Parameter case wird für eine feste Anzahl von Bucket empfohlen, da er die Darstellung, Sortierung und Verwendung von Werten in UI-Filtern und -Visualisierungen beeinflussen kann. Mit case kann ein Nutzer beispielsweise nur die definierten Bucket-Werte in einem Filter auswählen.

Um Buckets mit case zu erstellen, können Sie eine Dimension wie einen Bucket für Bestellmengen definieren:

  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 Werte in der Regel in der Reihenfolge sortiert, in der die Buckets aufgeführt sind. Für die Dimension order_amount_bucket sind die Buckets Klein, Mittel und Groß:

Wenn Sie alphanumerisch sortieren möchten, fügen Sie den Parameter alpha_sort hinzu. mit der Dimension verknüpfen. Beispiel:

  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 gewünscht werden (dazu müsste jede Ausgabe mit einer WHEN- oder ELSE-Anweisung definiert werden), oder wenn Sie eine komplexere ELSE-Anweisung implementieren möchten, empfehlen wir die Verwendung einer SQL-CASE WHEN. Diese wird im nächsten Abschnitt erläutert.

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

SQL-CASE WHEN für das Bucketing verwenden

Für ein komplexeres Bucketing oder für die Implementierung einer differenzierteren ELSE-Anweisung wird eine SQL-CASE WHEN-Anweisung empfohlen.

So können Sie beispielsweise je nach Zielort einer Bestellung unterschiedliche Bucketing-Methoden verwenden. Mit einer SQL-CASE WHEN-Anweisung können Sie eine zusammengesetzte Bucket-Dimension erstellen, bei der die THEN-Anweisung Dimensionen anstelle von 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 ;;
}