distribution

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 distribution funktioniert nur mit Tabellen, die persistent sind, z. B. PDTs und aggregierte 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 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"
  }
}