用法
view: my_view { derived_table: { distribution: "customer_id" ... } }
|
层次结构
distribution- 或 - distribution |
默认值
无
接受
派生表或汇总表中的列的名称
特殊规则
distribution 仅支持 Redshift 和 Aster 数据库。
|
定义
借助 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"
}
}
基于 SQL 查询创建一个 customer_order_facts 派生表,该查询在 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"
}
}