distribution

Utilisation

view: my_view {
  derived_table: {
    distribution: "customer_id"
    ...
  }
}
Hiérarchie
distribution

- ou -

distribution
Valeur par défaut
Aucun

Acceptation
Nom d'une colonne dans une table dérivée ou agrégée

Règles spéciales
distribution n'est compatible qu'avec les bases de données Redshift et Aster.

Définition

Le paramètre distribution vous permet de spécifier la colonne d'une table dérivée persistante (PDT) ou d'une table agrégée sur laquelle appliquer une clé de distribution. La clé de distribution répartit les données dans un cluster. Lorsque deux tables sont jointes par la colonne spécifiée dans le paramètre distribution, la base de données peut trouver les données jointes sur le même nœud pour minimiser les E/S entre les nœuds. Le paramètre distribution ne fonctionne qu'avec les bases de données Redshift et Aster. Pour les autres dialectes SQL (tels que MySQL et Postgres), utilisez plutôt indexes.

Le paramètre distribution ne fonctionne qu'avec les tables persistantes, telles que les PDT et les tables agrégées. distribution n'est pas compatible avec les tables dérivées sans stratégie de persistance.

De plus, le paramètre distribution n'est pas compatible avec les tables dérivées définies à l'aide de create_process ou sql_create.

En règle générale, une clé de distribution doit être appliquée à la colonne qui servira de clé étrangère (la colonne que vous utilisez pour joindre votre table à d'autres). Pour connaître les bonnes pratiques, consultez la documentation de votre dialecte.

Exemples

Créez une table dérivée persistante customer_order_facts avec une clé de distribution sur 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"
  }
}

Créez une table dérivée customer_order_facts basée sur une requête SQL avec une clé de distribution sur 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"
  }
}