用量
视图:my_view {
derived_table: {
distribution: "customer_id"
...
}
}
derived_table: {
distribution: "customer_id"
...
}
}
层次结构
distribution - 或 - distribution |
默认值
无接受
派生表或汇总表中的列名称特殊规则
只有 Redshift 和 Aster 数据库才支持 distribution 。 |
定义
distribution
可让您从永久性派生表 (PDT) 或要应用分布键的汇总表中指定列,以便将数据分布到整个集群。当两个表通过 distribution
参数中指定的列联接时,数据库可以在同一节点上查找联接后的数据,从而最大限度地减少节点间 I/O。目前,distribution
仅适用于 Redshift 和 Aster 数据库。对于其他 SQL 方言(例如 MySQL 和 Postgres),请改用 indexes
。
distribution
参数仅适用于永久性表,例如 PDT 和汇总表。没有持久性策略的派生表不支持distribution
。此外,使用
create_process
或sql_create
定义的派生表不支持distribution
参数。
一般而言,分布键应应用于充当外键的列(您用于联接其他人列的列)。有关最佳实践,请参阅您所用方言的文档。
示例
在 customer_id
上创建具有分布键的 customer_order_facts
永久性派生表:
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"
}
}
基于 customer_id
上具有分布键的 SQL 查询,创建一个 customer_order_facts
派生表:
view: customer_order_facts {
derived_table: {
sql:
SELECT
customer_id,
COUNT(*) AS lifetime_orders
FROM
order ;;
persist_for: "24 hours"
distribution: "customer_id"
}
}