用量
derived_table:{
indexes: ["order_id"]
...
}
}
层次结构
indexes - 或 - indexes |
默认值
无接受
PDT 或汇总表格中的一个或多个列的名称特殊规则
indexes 仅适用于特定方言
|
定义
借助 indexes
参数,您可以将索引应用于永久性派生表 (PDT) 或汇总表的列。当您添加多个列时,Looker 会为您指定的每一列创建一个索引,而不是创建一个多列索引。如果查询中缺少 indexes
参数,Looker 会提醒您添加 indexes
参数以提高查询性能。如需详细了解如何将永久性派生表编入索引,请参阅 Looker 中的派生表文档页面。
请参阅此页面上的对
indexes
的方言支持部分,了解支持indexes
的方言列表。
indexes
参数仅适用于永久性表,例如 PDT 和汇总表。没有持久性策略的派生表不支持indexes
。此外,使用
create_process
或sql_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_id
和 date
索引的 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_id
和 date
构建的交错排序键:
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
: