索引

用法

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

- 或 -

indexes
默认值

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

特殊规则
indexes 仅在 特定方言中受支持

定义

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

如需查看支持 indexes 的方言列表,请参阅本页面的 Dialect support for indexes 部分。

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

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

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

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

示例

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

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_order_facts 永久性派生表,并在 customer_id 上应用索引:

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_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"]
  }
}

对于 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

方言 是否支持?
Actian Avalanche
Amazon Athena
Amazon Aurora MySQL
Amazon Redshift
Amazon Redshift 2.1+
Amazon Redshift Serverless 2.1+
Apache Druid
Apache Druid 0.13.x - 0.17.x
Apache Druid 0.18+
Apache Hive 2.3+
Apache Hive 3.1.2+
Apache Spark 3+
ClickHouse
Cloudera Impala 3.1+
Cloudera Impala 3.1+ with Native Driver
Cloudera Impala with Native Driver
DataVirtuality
Databricks
Denodo 7
Denodo 8 & 9
Dremio
Dremio 11+
Exasol
Google BigQuery Legacy SQL
Google BigQuery Standard SQL
Google Cloud AlloyDB for PostgreSQL
Google Cloud PostgreSQL
Google Cloud SQL
Google Spanner
Greenplum
HyperSQL
IBM Netezza
MariaDB
Microsoft Azure PostgreSQL
Microsoft Azure SQL Database
Microsoft Azure Synapse Analytics
Microsoft SQL Server 2008+
Microsoft SQL Server 2012+
Microsoft SQL Server 2016
Microsoft SQL Server 2017+
MongoBI
MongoSQL
MySQL
MySQL 8.0.12+
Oracle
Oracle ADWC
PostgreSQL 9.5+
PostgreSQL pre-9.5
PrestoDB
PrestoSQL
SAP HANA
SAP HANA 2+
SingleStore
SingleStore 7+
Snowflake
Teradata
Trino
Vector
Vertica