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 的衡量标准。
  • 第二种情况是,Looker 实际上将 type: count 的衡量指标呈现为 count_distinct 衡量指标类型。如汇总感知文档页面中所述,Looker 会将 count 度量呈现为 count_distinct,以避免在联接多个数据库表的探索中出现扇出误算。

在这两种情况下,如果您的方言支持 HyperLogLog sketch,您可以向度量添加 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 sketch 的数据库方言,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+
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 方言的文档,了解此方法的运行速度和准确性之间的权衡。