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 草图支持汇总表唯一计数的方言列表,请参阅本页面的方言支持汇总感知唯一计数部分。

一般来说,汇总感知不支持唯一计数,因为如果您尝试汇总唯一计数,则无法获得准确的数据。例如,如果您要统计网站上的唯一用户数,则可能有一位用户在相隔三周的时间内两次访问该网站。如果您尝试应用每周汇总表格来获取网站的每月唯一用户数,则该用户将在您的每月唯一计数查询中被统计两次,并且数据将不正确。

一种解决方法是创建一个与探索查询完全匹配的汇总表格,如汇总感知文档页面中所述。当探索查询和汇总表格查询相同时,唯一计数度量确实会提供准确的数据,因此可用于汇总感知。

另一种方法是使用唯一计数的近似值。众所周知,HyperLogLog 算法的潜在误差约为 2%。allow_approximate_optimization 参数要求 Looker 开发者确认可以对测量使用近似数据,以便可以根据汇总表大致计算测量。

借助汇总感知,在以下两种情况下会用到唯一计数:

  • 第一种情况是使用 type: count_distinct 测量。
  • 第二种情况是使用 type: count 测量,Looker 实际上将其呈现为 count_distinct 测量类型。如 汇总感知 文档页面中所述,Looker 将 count 测量呈现为 count_distinct,以避免在联联接多个数据库表的探索中出现扇出错误计算。

在这两种情况下,如果您的方言支持 HyperLogLog 草图,则可以将 allow_approximate_optimization: yes 语句添加到测量中以启用近似值。然后,您可以将这些测量包含在汇总表中。

即使对于使用 allow_approximate_optimization: yes 定义的测量,Looker 也会尽可能返回确切的数据。例如,如果探索查询中的维度与汇总表格中的维度完全匹配,则 Looker 可以提供唯一计数的准确数据,而无需进行估算。在这种情况下,您会在 探索的 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} ;;
}

方言支持汇总感知唯一计数

对于支持 HyperLogLog 草图的数据库方言,Looker 可以使用唯一计数来实现汇总感知。在最新版本的 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 方言的文档,了解此方法的速度和准确性权衡。