用途
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 言語のドキュメントをご覧ください。