Nutzung
derived_table: {
cluster_keys: ["customer_city", "customer_state"]
...
}
}
Hierarchie
cluster_keys – oder – cluster_keys |
Standardwert
None Akzeptiert
Mindestens ein Name für geclusterte SpaltenSonderregeln
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ürcluster_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 mitcreate_process
odersql_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 Parameterpartition_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
: