分区键

用量

视图:view_name {
derived_table: {
partition_keys: [ "created_date" ]
...
}
}
层次结构
partition_keys

- 或 -

partition_keys
默认值
None

接受
一个或多个分区列名称

特殊规则
partition_keys 仅适用于特定方言

定义

partition_keys 参数支持能够对列进行分区的数据库方言。如果运行查询时对分区列进行过滤,数据库将仅扫描包含已过滤数据的分区,而不是扫描整个表。由于系统扫描表的较小子部分,因此可以显著减少指定相应分区和过滤条件时查询大型表所需的时间和费用。

partition_keys 参数仅适用于永久性表,例如 PDT 和汇总表。没有持久性策略的派生表不支持 partition_keys

此外,使用 create_processsql_create 定义的派生表不支持 partition_keys 参数。

当您创建永久性派生表 (PDT) 或汇总表时,如果底层数据库表使用了分区,Looker 就可以使用该分区。

请参阅下文中的partition_keys 的方言支持部分,了解支持 partition_keys 的方言。

如需向 PDT 或汇总表添加分区列,请使用 partition_keys 并提供数据库表中相应分区的名称。

示例

在包含 date 列的分区键的 BigQuery 数据库上创建 customer_day_facts PDT:

view: customer_order_facts {
  derived_table: {
    explore_source: order {
      column: customer_id { field: order.customer_id }
      column: date { field: order.order_time }
      derived_column: num_orders {
        sql: COUNT(order.customer_id) ;;
      }
    }
    partition_keys: [ "date" ]
    datagroup_trigger: daily_datagroup
  }
}

在 Presto 数据库上创建一个基于 customer_day_facts 的派生表,并在 datestate 列上使用分区键:

view: customer_day_facts {
  derived_table: {
    sql:
      SELECT
        customer_id,
        DATE(order_time) AS date,
        COUNT(*) AS num_orders
      FROM
        order
      GROUP BY
        customer_id ;;
    partition_keys: [ "date", "state" ]
    datagroup_trigger: daily_datagroup
  }
}

方言支持partition_keys

能否使用 partition_keys 取决于 Looker 连接的数据库方言。在最新版 Looker 中,以下方言支持 partition_keys

在 BigQuery 中,只能对一个列(必须是日期/时间列)使用分区,因此基于 BigQuery 表的 Looker PDT 只能对一个日期/时间列使用分区。