aggregate_table

用途

explore: explore_name {
  aggregate_table: table_name {

    query:  {
      dimensions: [dimension1, dimension2, ... ]
      measures: [measure1, measure2, ... ]
      sorts: [field1: asc, field2: desc, ... ]
      filters: [field1: "value1", field2: "value2", ... ]
      timezone: timezone
    }

    materialization:  {
      ...
    }
  }

  ...

}
階層
aggregate_table
デフォルト値
なし

許可
サマリー表の名前、テーブルを定義する query サブパラメータ、テーブルの 永続性戦略 を定義する materialization サブパラメータ

特別なルール
  • table_name は、指定された explore 内で一意である必要があります。
  • materialization サブパラメータで、サマリー表の 永続性戦略 を指定する必要があります。

定義

aggregate_table パラメータは、データベース内の大きなテーブルに必要なクエリの数を最小限に抑える集約テーブルを作成するために使用されます。

Looker は、集約テーブルの自動認識ロジックを使用して、データベース内で最も小規模の効率的なサマリー表を検出し、正確性を維持しながらクエリを実行します。(集約テーブルの自動認識のドキュメント ページで、集約テーブルの概要と作成戦略をご覧ください)。

データベース内の非常に大きなテーブルの場合は、さまざまな属性の組み合わせでグループ化された、より小さな集約テーブルを作成できます。集約テーブルは、元の大きなテーブルの代わりに、Looker が可能であれば常にクエリに使用できるロールアップまたはサマリー テーブルとして機能します。

集約テーブルを作成したら、Explore でクエリを実行して、Looker がどの集約テーブルを使用するかを確認できます。詳細については、集約テーブルの自動認識のドキュメント ページのクエリに使用されるサマリー表を決定するをご覧ください。

集約テーブルが使用されない一般的な理由については、集約テーブルの自動認識のドキュメント ページのトラブルシューティングをご覧ください。

LookML でサマリー表を定義する

aggregate_table パラメータには、指定された explore 内で一意の名前が必要です。

aggregate_table パラメータには、query サブパラメータと materialization サブパラメータがあります。

query

query パラメータは、使用するディメンションとメジャーなど、サマリー表のクエリを定義します。query パラメータには、次のサブパラメータが含まれています。

パラメータ名 説明
dimensions 集約テーブルに含める Explore のディメンションのカンマ区切りリスト。dimensions フィールドは次の形式を使用します。

dimensions: [dimension1, dimension2, ...]

このリストの各ディメンションは、クエリの Explore のビューファイルで dimension として定義する必要があります。Explore クエリで filter フィールドとして定義されているフィールドを含める場合は、集約テーブルのクエリの filters リストに追加できます。
dimensions:

  [orders.created_month, orders.country]
measures サマリー表に含める Explore のメジャーのカンマ区切りのリスト。measures フィールドは次の形式を使用します。

measures: [measure1, measure2, ...]

集約テーブルの自動認識でサポートされているメジャータイプについては、メジャータイプの要因のセクションを集約テーブルの自動認識のドキュメント ページでご覧ください。
measures:

  [orders.count]
filters 必要に応じて、query にフィルタを追加します。フィルタは、サマリー表を生成する SQL の WHERE 句に追加されます。

filters フィールドは次の形式を使用します。

filters: [field1: "value1", field2: "value2", ...]

フィルタによってサマリー表が使用されなくなる可能性がある方法については、集計テーブルの自動認識のドキュメント ページのフィルタの要因のセクションをご覧ください。
filters: [orders.country: "United States", orders.state: "California"]
sorts 必要に応じて、query の並べ替えフィールドと並べ替え方向(昇順または降順)を指定します。

sorts フィールドは次の形式を使用します。

sorts: [field1: asc|desc, field2: asc|desc, ...]
[orders.country: asc, orders.state: desc]
timezone query のタイムゾーンを設定します。タイムゾーンが指定されていない場合、サマリー表はタイムゾーン変換を行わず、データベースのタイムゾーンを使用します。

集約テーブルがクエリソースとして使用されるようにタイムゾーンを設定する方法については、タイムゾーンの要因のセクションで集約テーブルの自動認識のドキュメント ページをご覧ください。

IDE で timezone パラメータを入力すると、IDE でタイムゾーンの値が 自動補完されます。IDE の [クイック ヘルプ] パネルには、サポートされているタイムゾーン値のリストも表示されます。
timezone: America/Los_Angeles

materialization

materialization パラメータは、サマリー表の永続性戦略と、SQL 言語でサポートされている可能性のある分散、パーティショニング、インデックス、クラスタリングのその他のオプションを指定します。

サマリー表の自動認識にアクセスするには、サマリー表がデータベースに保持されている必要があります。集約テーブルの materialization パラメータには、永続性戦略を指定する次のいずれかのサブパラメータが必要です。

また、SQL 言語によっては、サマリー表で次の materialization サブパラメータがサポートされる場合があります。

増分サマリー表を作成するには、次の materialization サブパラメータを使用します。

datagroup_trigger

datagroup_trigger パラメータを使用して、モデルファイルで定義されている既存の データグループ に基づいてサマリー表の再生成をトリガーします。


explore: event {
  aggregate_table: monthly_orders {
    materialization: {
      datagroup_trigger: order_datagroup
    }
    query: {
      ...
    }
  }
  ...
}

sql_trigger_value

sql_trigger_value パラメータを使用して、指定した SQL ステートメントに基づいてサマリー表の再生成をトリガーします。SQL ステートメントの結果が前の値と異なる場合、テーブルが再生成されます。次の sql_trigger_value ステートメントは、日付が変更されたときに再生成をトリガーします。

explore: event {
  aggregate_table: monthly_orders {
    materialization: {
      sql_trigger_value: SELECT CURDATE() ;;
    }
    query: {
      ...
    }
  }
  ...
}

persist_for

persist_for パラメータは、集約テーブルでもサポートされています。ただし、persist_for 戦略では、集約テーブルの自動認識で最高のパフォーマンスが得られない可能性があります。これは、ユーザーが persist_for テーブルに依存するクエリを実行すると、Looker がテーブルの経過時間を persist_for 設定と比較するためです。テーブルが persist_for 設定よりも古い場合、クエリの実行前にテーブルが再生成されます。経過時間が persist_for 設定よりも短い場合は、既存のテーブルが使用されます。したがって、ユーザーが persist_for 時間内にクエリを実行しない限り、サマリー表の自動認識に使用する前にサマリー表を再構築する必要があります。

explore: event {
  aggregate_table: monthly_orders {
    materialization: {
      persist_for: "90 minutes"
    }
    query: {
      ...
    }
  }
  ...
}

persist_for 実装の制限事項を理解し、特定のユースケースがない限り、集約テーブルの永続性戦略として datagroup_trigger または sql_trigger_value を使用することをおすすめします。

cluster_keys

cluster_keys パラメータを使用すると、BigQuery または Snowflake の パーティション分割 テーブルにクラスタ列を追加できます。クラスタリングでは、クラスタ列の値に基づいてパーティション内のデータが並べ替えられ、クラスタ列が最適なサイズのストレージ ブロックに整理されます。

詳細については、cluster_keys パラメータのドキュメント ページをご覧ください。

distribution

distribution パラメータを使用すると、分散キーを適用するサマリー表の列を指定できます。distribution は、Redshift データベースと Aster データベースでのみ機能します。他の SQL 言語(MySQL や Postgres など)の場合は、代わりに indexes を使用します。

詳細については、distribution パラメータのドキュメント ページをご覧ください。

distribution_style

distribution_style パラメータを使用すると、サマリー表のクエリを Redshift データベースのノードに分散する方法を指定できます。

  • distribution_style: all は、すべての行が各ノードに完全にコピーされることを示します。
  • distribution_style: even は均等分散を指定します。これにより、行がラウンドロビン方式で異なるノードに分散されます。

詳細については、distribution_style パラメータのドキュメント ページをご覧ください。

indexes

indexes パラメータを使用すると、サマリー表の列にインデックスを適用できます。

詳細については、indexes パラメータのドキュメント ページをご覧ください。

partition_keys

partition_keys パラメータは、サマリー表のパーティショニングに使用される列の配列を定義します。partition_keys は、列をパーティショニングできるデータベース言語をサポートしています。パーティション分割された列でフィルタされたクエリを実行すると、データベースはテーブル全体をスキャンするのではなく、フィルタされたデータを含むパーティションのみをスキャンします。partition_keys は、Presto 言語と BigQuery 言語でのみサポートされています。

詳細については、partition_keys パラメータのドキュメント ページをご覧ください。

publish_as_db_view

publish_as_db_view パラメータを使用すると、Looker の外部でクエリを実行するサマリー表にフラグを設定できます。publish_as_db_viewyes に設定されているサマリー表の場合、Looker はサマリー表のデータベースに安定したデータベース ビューを作成します。安定したデータベース ビューはデータベース自体に作成されるため、Looker の外部でクエリを実行できます。

詳細については、publish_as_db_view パラメータのドキュメント ページをご覧ください。

sortkeys

sortkeys パラメータを使用すると、通常の並べ替えキーを適用するサマリー表の 1 つ以上の列を指定できます。

詳細については、sortkeys パラメータのドキュメント ページをご覧ください。

increment_key

言語がサポートしている場合は、プロジェクトで増分 PDTを作成できます。増分 PDT は永続的な派生テーブル(PDT)です。Looker はテーブル全体を再構築するのではなく、テーブルに新しいデータを追加して構築します。詳細については、増分 PDT のドキュメント ページをご覧ください。

集約テーブルは PDT の一種であり、increment_key パラメータを追加することで増分的に構築できます。increment_key パラメータは、新しいデータをクエリしてサマリー表に追加する時間増分を指定します。

詳細については、increment_key パラメータのドキュメント ページをご覧ください。

increment_offset

increment_offset パラメータは、集約テーブルにデータを追加するときに再構築される過去の期間の数(増分キーの粒度)を定義します。increment_offset パラメータは、増分 PDT と集約テーブルでは省略可能です。

詳細については、increment_offset パラメータのドキュメント ページをご覧ください。

Explore からサマリー表の LookML を取得する

ショートカットとして、Looker デベロッパーは Explore クエリを使用してサマリー表を作成し、LookML を LookML プロジェクトにコピーできます。

  1. Explore で、サマリー表に含めるすべてのフィールドとフィルタを選択します。
  2. [実行] をクリックして結果を取得します。
  3. Explore の歯車メニューから [LookML を取得] を選択します。このオプションは、Looker デベロッパーのみが使用できます。
  4. [集約テーブル] タブをクリックします。
  5. Looker は、サマリー表を Explore に追加する Explore の 絞り込み の LookML を提供します。LookML をコピーして、Explore の絞り込みの前のコメントに示されている関連するモデルファイルに貼り付けます。Explore がモデルファイルではなく 別の Explore ファイルで定義されている場合は、モデルファイルではなく Explore のファイルに絞り込みを追加できます。どちらの場所でも機能します。

サマリー表の LookML を変更する必要がある場合は、このページのLookML でサマリー表を定義するで説明されているパラメータを使用して変更できます。サマリー表の名前を変更しても、元の Explore クエリへの適用性は変わりません。ただし、サマリー表に対する他の変更は、Looker が Explore クエリにサマリー表を使用する機能に影響する可能性があります。集約テーブルの自動認識に使用されるように集約テーブルを最適化する方法については、集約テーブルの自動認識 のドキュメント ページの集約テーブルの設計をご覧ください。

ダッシュボードからサマリー表の LookML を取得する

Looker デベロッパー向けのもう 1 つのオプションは、ダッシュボードのすべてのタイルのサマリー表 LookML を取得し、LookML を LookML プロジェクトにコピーすることです。

集約テーブルを作成すると、特に大量のデータセットに対してクエリを実行するタイルの場合、ダッシュボードのパフォーマンスを大幅に向上させることができます。

develop 権限がある場合は、ダッシュボードを開き、ダッシュボードのその他メニューから [LookML を取得] を選択して [集約テーブル] タブを選択すると、ダッシュボードの集約テーブルを作成する LookML を取得できます。

集約認識でまだ最適化されていないタイルごとに、Looker は集約テーブルを Explore に追加する Explore の絞り込みの LookML を提供します。ダッシュボードに同じ Explore の複数のタイルが含まれている場合、Looker はすべての集約テーブルを 1 つの Explore の絞り込みに配置します。生成されるサマリー表の数を減らすため、Looker は生成されたサマリー表を複数のタイルで使用できるかどうかを判断し、使用できない場合は、より少ないタイルで使用できる冗長なサマリー表を削除します。

各 Explore の絞り込みをコピーして、Explore の絞り込みの前のコメントに示されている関連するモデルファイルに貼り付けます。Explore がモデルファイルではなく 別の Explore ファイルで定義されている場合は、モデルファイルではなく Explore のファイルに絞り込みを追加できます。どちらの場所でも機能します。

ダッシュボード フィルタがタイルに適用されている場合、Looker はフィルタのディメンションをタイルのサマリー表に追加して、サマリー表をタイルに使用できるようにします。これは、クエリのフィルタがサマリー表のディメンションとして使用可能なフィールドを参照している場合にのみ、サマリー表をクエリに使用できるためです。詳細については、集約テーブルの自動認識のドキュメント ページをご覧ください。

サマリー表の LookML を変更する必要がある場合は、このページのLookML でサマリー表を定義するで説明されているパラメータを使用して変更できます。集約テーブルの名前を変更しても、元のダッシュボード タイルへの適用性は変わりませんが、集約テーブルに対する他の変更は、Looker がダッシュボードに集約テーブルを使用する機能に影響する可能性があります。集約テーブルの自動認識に使用されるように集約テーブルを最適化する方法については、集約テーブルの自動認識 のドキュメント ページの集約テーブルの設計をご覧ください。

次の例では、event Explore の monthly_orders サマリー表を作成します。サマリー表は、注文数の月次カウントを作成します。Looker は、年次、四半期、月次の注文数などの月次粒度を活用できる注文数クエリにサマリー表を使用します。

サマリー表は、データグループ orders_datagroupを使用して永続化するように設定されています。また、集約テーブルは publish_as_db_view: yes で定義されています。これは、Looker が集約テーブルのデータベースに安定したデータベース ビューを作成することを意味します。

サマリー表の定義は次のようになります。

explore: event {
  aggregate_table: monthly_orders {
    materialization: {
      datagroup_trigger: orders_datagroup
      publish_as_db_view: yes
    }
    query: {
      dimensions: [orders.created_month]
      measures: [orders.count]
      filters: [orders.created_date: "1 year", orders.status: "fulfilled"]
      timezone: America/Los_Angeles
    }
  }
}

注意点

集約テーブルを戦略的に作成する方法については、集約テーブルの自動認識 のドキュメント ページの集約テーブルの設計をご覧ください。

集計テーブルの自動認識向けの言語サポート

集約テーブルの自動認識を使用できるかどうかは、Looker 接続で使用しているデータベース言語によって異なります。Looker の最新リリースでは、次の言語が集約テーブルの自動認識をサポートしています。

言語 サポート対象
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