分布

用量

视图:my_view {
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_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"
  }
}

基于 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"
  }
}