allow_approximate_optimization

用途

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

デフォルト値
no

許可
ブール値(yes または 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 つあります。

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

どちらの場合も、言語が HyperLogLog スケッチをサポートしている場合は、メジャーに allow_approximate_optimization: yes ステートメントを追加して、概算値を有効にできます。その後、これらのメジャーを集約テーブルに含めることができます。

allow_approximate_optimization: yes で定義されたメジャーでも、可能な場合は正確なデータが返されます。たとえば、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
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

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