distribution

用法

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_processsql_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"
  }
}