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