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회 방문한 사용자가 있을 수 있습니다. 주간 집계 테이블을 적용하여 웹사이트의 월간 순 사용자 수를 계산하려고 하면 이 사용자는 월별 고유 개수 쿼리에 두 번 계산되며 데이터가 부정확해집니다.

한 가지 해결 방법은 집계 인식 문서 페이지에 설명된 대로 Explore 쿼리와 정확히 일치하는 총괄 표를 만드는 것입니다. Explore 쿼리와 집계 테이블 쿼리가 같으면 고유 개수 측정이 정확한 데이터를 제공하므로 집계 인식에 사용될 수 있습니다.

또 다른 옵션은 고유 개수의 근사값을 사용하는 것입니다. HyperLogLog 알고리즘은 약 2% 의 잠재적 오류가 있는 것으로 알려져 있습니다. allow_approximate_optimization 매개 변수를 사용하려면 Looker 개발자가 측정에 근사치 데이터를 사용해도 된다는 점을 인식하여 집계 테이블에서 측정을 대략적으로 계산할 수 있도록 해야 합니다.

집계 인식을 사용하면 고유 개수가 적용되는 두 가지 경우가 있습니다.

  • 첫 번째 경우는 type: count_distinct 측정항목입니다.
  • 두 번째 경우는 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
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 언어의 문서를 확인하세요.