索引

用量

视图:my_view {
derived_table:{
indexes: ["order_id"]
...
}
}
层次结构
indexes

- 或 -

indexes
默认值


接受
PDT 或汇总表格中的一个或多个列的名称

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

定义

借助 indexes 参数,您可以将索引应用于永久性派生表 (PDT) 或汇总表的列。当您添加多个列时,Looker 会为您指定的每一列创建一个索引,而不是创建一个多列索引。如果查询中缺少 indexes 参数,Looker 会提醒您添加 indexes 参数以提高查询性能。如需详细了解如何将永久性派生表编入索引,请参阅 Looker 中的派生表文档页面。

请参阅此页面上的indexes 的方言支持部分,了解支持 indexes 的方言列表。

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

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

如果您将 indexes 与 Redshift 结合使用,则会创建交错排序键。您还可以使用 sortkeys 创建常规排序键,但不能同时使用这两个键。您可以使用 distribution 创建分发密钥。

一般而言,索引应应用于主键以及日期或时间列。

示例

对于传统数据库(例如 MySQL 或 Postgres),请创建一个 customer_order_facts 永久性派生表。当 order_datagroup datagroup 被触发并且 customer_id 上有一个索引时,PDT 应该进行重建:

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
    indexes: ["customer_id"]
  }
}

对于传统数据库,请创建基于 SQL 查询并在 customer_id 上应用索引的 customer_order_facts 永久性派生表:

view: customer_order_facts {
  derived_table: {
    sql:
      SELECT
        customer_id,
        COUNT(*) AS lifetime_orders
      FROM
        order
      GROUP BY
        customer_id ;;
    persist_for: "24 hours"
    indexes: ["customer_id"]
  }
}

对于传统数据库,请创建包含 customer_iddate 索引的 customer_day_facts 派生表:

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 ;;
    persist_for: "24 hours"
    indexes: ["customer_id", "date"]
  }
}

对于 Redshift 数据库,请创建 customer_day_facts 派生表,其中包含基于 customer_iddate 构建的交错排序键:

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 ;;
    persist_for: "24 hours"
    indexes: ["customer_id", "date"]
  }
}

方言支持indexes

能否使用 indexes 取决于 Looker 连接的数据库方言。如果您使用的不是传统数据库(例如 MySQL 或 Postgres),那么您的数据库可能不支持 indexes 参数。如果是这种情况,Looker 会向您发出警告。您可以将 indexes 参数替换为适合数据库连接的参数。如需详细了解此类参数,请参阅查看参数文档页面。

在最新版 Looker 中,以下方言支持 indexes