索引

用量

view: 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 參數。

如果您搭配 Redshift 使用 indexes,系統會建立交錯排序鍵。您也可以使用 sortkeys 建立一般排序鍵,但不能同時使用兩者。您可以使用 distribution 建立發行金鑰。

一般來說,索引應套用至主鍵和日期/時間資料欄。

範例

如果是傳統資料庫 (例如 MySQL 或 Postgres),請建立customer_order_facts持續性衍生資料表。當 order_datagroup 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+
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 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
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