Nutzung
derived_table: {
Verteilung: "customer_id"
...
}
}
Hierarchie
distribution – oder – distribution |
Standardwert
KeineAkzeptiert
Der Name einer Spalte in einer abgeleiteten Tabelle oder aggregierten TabelleSonderregeln
distribution wird nur für Redshift- und Aster-Datenbanken unterstützt.
|
Definition
Mit distribution
können Sie die Spalte aus einer persistenten abgeleiteten Tabelle (PDT) oder einer zusammengefasste Tabelle angeben, auf die ein Verteilungsschlüssel angewendet werden soll, um die Daten auf einen Cluster zu verteilen. Wenn zwei Tabellen durch die im Parameter distribution
angegebene Spalte zusammengeführt werden, kann die Datenbank die zusammengeführten Daten auf demselben Knoten finden, um die E/A des Interknotens zu minimieren. Derzeit funktioniert distribution
nur mit Redshift- und Aster-Datenbanken. Verwenden Sie für andere SQL-Dialekte wie MySQL und Postgres stattdessen indexes
.
Der Parameter
distribution
funktioniert nur bei Tabellen, die persistent sind, z. B. PDTs und zusammengefasste Tabellen.distribution
wird für abgeleitete Tabellen ohne Persistenzstrategie nicht unterstützt.Außerdem wird der Parameter
distribution
nicht für abgeleitete Tabellen unterstützt, die mitcreate_process
odersql_create
definiert sind.
Im Allgemeinen sollte ein Verteilungsschlüssel auf die Spalte angewendet werden, die als Fremdschlüssel fungiert (die Spalte, die Sie zum Zusammenführen der Tabelle mit anderen verwenden). Die Best Practices finden Sie in der Dokumentation zu Ihrem Dialekt.
Beispiele
Erstellen Sie eine persistente customer_order_facts
-Tabelle 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 customer_order_facts
-Tabelle 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"
}
}