インデックス

用途

view: my_view {
  derived_table: {
    indexes: ["order_id"]
    ...
  }
}
階層
indexes

または

indexes
デフォルト値
なし

許可
PDT またはサマリー表内の 1 つ以上の列の名前

特別なルール
indexes は、特定の言語でのみサポートされています。

定義

indexes パラメータを使用すると、永続的な派生テーブル(PDT)またはサマリー表の列にインデックスを適用できます。複数の列を追加すると、Looker は指定した列ごとに 1 つのインデックスを作成します。単一の複数列インデックスは作成されません。クエリに indexes パラメータがない場合、Looker はクエリのパフォーマンスを改善するために indexes パラメータを追加するよう警告します。永続的な派生テーブルのインデックス登録について詳しくは、Looker の派生テーブルのドキュメント ページをご覧ください。

indexes をサポートする言語のリストについては、このページの indexes の言語サポートセクションをご覧ください。

indexes パラメータは、PDT やサマリー表など、永続的なテーブルでのみ機能します。indexes は、永続性戦略のない派生テーブルではサポートされていません。

また、create_process または sql_create を使用して定義された派生テーブルでは、indexes パラメータはサポートされていません。

Redshift で indexes を使用すると、インターリーブされたソートキーが作成されます。sortkeys を使用して通常の並べ替えキーを作成することもできますが、両方を同時に使用することはできません。分散キーは distribution で作成できます。

一般的に、インデックスは主キーと日付または時刻の列に適用する必要があります。

例

従来のデータベース(MySQL や Postgres など)の場合は、customer_order_facts 永続的な派生テーブルを作成します。PDT は、order_datagroup データグループがトリガーされたときに再構築され、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_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_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"]
  }
}

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
ClickHouse 26+
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+
Dremio 26+ with Arrow Flight SQL
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