Nutzung
view: my_view { derived_table: { distribution: "customer_id" ... } }
|
Hierarchie
distribution– oder – distribution |
Standardwert
Keine
Akzeptiert
Der Name einer Spalte in einer abgeleiteten Tabelle oder einer Aggregattabelle
Besondere Regeln
distribution wird nur für Redshift- und Aster-Datenbanken unterstützt.
|
Definition
Mit dem Parameter distribution können Sie die Spalte aus einer persistent derived table (PDT) oder einer aggregierten Tabelle angeben, auf die ein Verteilungsschlüssel angewendet werden soll. Mit dem Verteilungsschlüssel werden die Daten in einem Cluster verteilt. Wenn zwei Tabellen über die im Parameter distribution angegebene Spalte verknüpft werden, kann die Datenbank die verknüpften Daten auf demselben Knoten finden, um die I/O zwischen Knoten zu minimieren. Der Parameter distribution funktioniert nur mit Redshift- und Aster-Datenbanken. Verwenden Sie für andere SQL-Dialekte (z. B. MySQL und Postgres) stattdessen indexes.
Der Parameter
distributionfunktioniert nur mit Tabellen, die persistent sind, z. B. PDTs und aggregierte Tabellen.distributionwird für abgeleitete Tabellen ohne Persistenzstrategie nicht unterstützt.Außerdem wird der Parameter
distributionnicht für abgeleitete Tabellen unterstützt, die mitcreate_processodersql_createdefiniert werden.
Im Allgemeinen sollte ein Verteilungsschlüssel auf die Spalte angewendet werden, die als Fremdschlüssel fungiert (die Spalte, mit der Sie Ihre Tabelle mit anderen Tabellen verknüpfen). Best Practices für Ihren Dialekt finden Sie in der entsprechenden Dokumentation.
Beispiele
So erstellen Sie eine persistente abgeleitete Tabelle vom Typ customer_order_facts mit einem Verteilungsschlüssel für customer_id:
view: customer_order_facts {
derived_table: {
explore_source: order {
column: customer_id { field: order.customer_id }
column: lifetime_orders { field: order.lifetime_orders }
}
datagroup_trigger: order_datagroup
distribution: "customer_id"
}
}
Erstellen Sie eine abgeleitete Tabelle customer_order_facts basierend auf einer SQL-Abfrage mit einem Verteilungsschlüssel für customer_id:
view: customer_order_facts {
derived_table: {
sql:
SELECT
customer_id,
COUNT(*) AS lifetime_orders
FROM
order ;;
persist_for: "24 hours"
distribution: "customer_id"
}
}