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
distributionne fonctionne qu'avec les tables persistantes, telles que les PDT et les tables agrégées.distributionn'est pas compatible avec les tables dérivées sans stratégie de persistance.De plus, le paramètre
distributionn'est pas compatible avec les tables dérivées définies à l'aide decreate_processousql_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"
}
}