用法
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 方言的文档,了解此方法的运行速度和准确性之间的权衡。