Clusterschlüssel

Nutzung

view: view_name {
derived_table: {
cluster_keys: ["customer_city", "customer_state"]
...
}
}
Hierarchie
cluster_keys

– oder –

cluster_keys
Standardwert
None

Akzeptiert
Mindestens ein Name für geclusterte Spalten

Sonderregeln
cluster_keys wird nur für bestimmte Dialekte unterstützt

Definition

Beim Clustering einer partitionierten Tabelle werden die Daten in einer Partition basierend auf den Werten in den geclusterten Spalten sortiert und die geclusterten Spalten werden in Speicherblöcken von optimaler Größe organisiert. Clustering kann die Leistung verbessern und die Kosten von Abfragen senken, die nach den geclusterten Spalten filtern oder aggregieren.

Eine Liste der Dialekte, die cluster_keys unterstützen, finden Sie weiter unten im Abschnitt Dialektunterstützung für cluster_keys.

Der Parameter cluster_keys funktioniert nur bei Tabellen, die persistent sind, z. B. PDTs und zusammengefasste Tabellen. cluster_keys wird für abgeleitete Tabellen ohne Persistenzstrategie nicht unterstützt.

Außerdem wird der Parameter cluster_keys nicht für abgeleitete Tabellen unterstützt, die mit create_process oder sql_create definiert sind.

Schließlich unterstützt Google BigQuery das Clustering nur für partitionierte Tabellen. Der Parameter cluster_keys funktioniert nur mit PDTs oder aggregierten Tabellen, die auch mit dem Parameter partition_keys partitioniert sind.

Wenn Sie einer persistenten abgeleiteten Tabelle (PDT) oder einer zusammengefasste Tabelle eine geclusterte Spalte hinzufügen möchten, verwenden Sie den Parameter cluster_keys und geben Sie die Namen der Spalten an, die in der Datenbanktabelle geclustert werden sollen.

Beispiele

Erstellen Sie eine native abgeleitete Tabelle für eine Google BigQuery-Datenbank, die nach der Spalte date partitioniert und in den Spalten city, age_tier und gender geclustert wird, um Abfragen zu optimieren, die nach diesen Spalten gefiltert oder aggregiert werden:

view: customer_order_facts {
  derived_table: {
    explore_source: order {
      column: customer_id { field: order.customer_id }
      column: date { field: order.order_time }
      column: city { field: users.city}
      column: age_tier { field: users.age_tier }
      column: gender { field: users.gender }
      derived_column: num_orders {
        sql: COUNT(order.customer_id) ;;
      }
    }
    partition_keys: [ "date" ]
    cluster_keys: [ "city", "age_tier", "gender" ]
    datagroup_trigger: daily_datagroup
  }
}

Wichtige Punkte

Google BigQuery-Tabellen können nur nach Datumsfeldern partitioniert werden

Google BigQuery-Tabellen können nur nach einer Datums- oder Zeitstempelspalte partitioniert werden. Wenn Sie geclusterte Spalten zu einer PDT oder aggregierten Tabelle hinzufügen möchten, die keine datums- oder zeitbasierten Daten enthält, können Sie eine Datumsspalte mit einer SQL-Anweisung wie SELECT CURRENT_DATETIME() as now hinzufügen und dann partition_keys verwenden, um eine Partition für die neue Spalte zu erstellen. Sie können das Clustering dann für andere Spalten in Ihrer PDT- oder Aggregattabelle verwenden.

Dialektunterstützung für cluster_keys

Die Möglichkeit, cluster_keys zu verwenden, hängt vom Datenbankdialekt ab, den Ihre Looker-Verbindung verwendet. In der neuesten Version von Looker unterstützen die folgenden Dialekte cluster_keys: