allow_approximate_optimization

用途

view: view_name {
  measure: field_name {
    allow_approximate_optimization: yes 
  }
}
階層
allow_approximate_optimization
使用可能なフィールドタイプ
測定

デフォルト値
no

許可
ブール値(はい / いいえ)

定義

HyperLogLog スケッチをサポートする言語の場合、Looker では HyperLogLog アルゴリズムを利用して、集約テーブルの個別カウントを概算できます。

allow_approximate_optimization: yes ステートメントを使用すると、Looker は HyperLogLog スケッチをサマリー表に保存できます。つまり、Looker は集約テーブルの自動認識に個別カウントの近似値を使用できます。

HyperLogLog スケッチを使用してサマリー表の個別カウントをサポートする言語のリストについては、このページの集約テーブルの自動認識を使用した個別カウントの言語サポートセクションをご覧ください。

一般に、個別のカウントを集計しようとすると、正確なデータが得られないため、集約テーブルの自動認識では個別のカウントはサポートされていません。ウェブサイト上で個別のユーザー数をカウントしている場合、たとえば、3 週間空けて 2 回ウェブサイトにアクセスしたユーザーがいる場合があります。週次集約テーブルを適用して、ウェブサイト上の個別ユーザーの月次カウントを取得しようとした場合、そのユーザーは、月次個別カウントのクエリで 2 回カウントされるため、データは不正確になります。

回避策の 1 つは、集約テーブルの自動認識のドキュメント ページで説明されているように、Explore クエリと完全に一致する集約テーブルを作成することです。Explore のクエリと集約テーブルのクエリが同じである場合、個別カウントメジャーが正確なデータを提供するため、集約テーブルの自動認識に使用できます。

もう 1 つの方法は、個別のカウントに概算を使用することです。HyperLogLog アルゴリズムには、約 2% の潜在的なエラーがあることがわかっています。allow_approximate_optimization パラメータでは、メジャーが集約テーブルから概算で計算できるように、メジャーに対して概算データを使用しても構わないということをデベロッパーが認識する必要があります。

集約テーブルの自動認識では、個別のカウントが関係するケースが 2 つあります。

  • 最初のケースは、type: count_distinct のメジャーを使用する場合です。
  • 2 つ目のケースは、Looker によって count_distinct メジャータイプとして実際にレンダリングされている type: count のメジャーです。集約テーブルの自動認識のドキュメント ページで説明されているように、Looker は count メジャーを count_distinct としてレンダリングし、複数のデータベース テーブルを結合する Explore でファンアウトの誤計算を回避します。

どちらの場合も、使用している言語が HyperLogLog スケッチをサポートしていれば、メジャーに allow_approximate_optimization: yes ステートメントを追加して、近似値を有効にできます。その後、これらのメジャーをサマリー表に含めることができます。

allow_approximate_optimization: yes で定義されたメジャーであっても、Looker は可能な限り正確なデータを返します。たとえば、Explore クエリのディメンションがサマリー表のディメンションと完全に一致する場合、Looker は近似値を使用せずに、個別カウントの正確なデータを提供できます。この場合、Explore の [SQL] タブに、HyperLogLog アルゴリズムを使用せずに、個別のカウント メジャーが集約認識に使用されていることが表示されます。

例

この例に示す apx_unique_count メジャーは allow_approximate_optimization: yes に設定されています。つまり、このメジャーは aggregate_table で使用できます。

measure: apx_unique_count {
  type: count_distinct
    allow_approximate_optimization: yes   # default value is no
  sql: ${id} ;;
}

集約テーブルの自動認識を使用した個別カウントの言語サポート

Looker では、HyperLogLog スケッチをサポートするデータベース言語で、集約テーブルの自動認識に個別カウントを使用できます。Looker の最新リリースでは、集約テーブルの自動認識を使用した個別カウントで次の SQL 言語がサポートされています。

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

この方法の速度と精度のトレードオフについては、SQL 言語のドキュメントをご覧ください。