Verteilung

Nutzung

view: my_view {
derived_table: {
Verteilung: "customer_id"
...
}
}
Hierarchie
distribution

– oder –

distribution
Standardwert
Keine

Akzeptiert
Der Name einer Spalte in einer abgeleiteten Tabelle oder aggregierten Tabelle

Sonderregeln
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 mit create_process oder sql_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"
  }
}