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 は、複数のデータベース テーブルを結合する Explore でファンアウトの誤計算を避けるために、count メジャーを count_distinct としてレンダリングします。

どちらの場合も、言語が 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+
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

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