allow_approximate_optimization

用量

view: view_name {
  measure: field_name {
    allow_approximate_optimization: yes 
  }
}
階層
allow_approximate_optimization
可能的欄位類型
度量

預設值
no

接受
布林值 (yes 或 no)

定義

對於支援 HyperLogLog 草圖的方言,Looker 可以運用 HyperLogLog 演算法,估算匯總資料表的相異計數。

allow_approximate_optimization: yes 陳述式可讓 Looker 將 HyperLogLog 草圖儲存在匯總資料表中,也就是說,Looker 可以使用近似值來計算匯總感知的不重複計數。

如需支援使用 HyperLogLog 草圖計算匯總資料表不重複值的方言清單,請參閱本頁面的「支援使用匯總感知計算不重複值的方言」一節。

一般來說,匯總認知度無法支援不重複計數,因為如果您嘗試匯總不重複計數,就無法取得準確的資料。舉例來說,如果您要計算網站上的不重複使用者人數,某位使用者可能在間隔三週後造訪網站兩次。如果您嘗試套用每週匯總表格,取得網站上每月不重複使用者人數,該使用者會在每月不重複計數查詢中計入兩次,資料就會不正確。

其中一個解決方法是建立與 Explore 查詢完全相符的匯總資料表,如「匯總品牌意識」說明文件頁面所述。如果「探索」查詢和匯總表格查詢相同,不重複計數指標就會提供準確的資料,因此可用於匯總認知度。

另一種做法是使用不重複計數的近似值。HyperLogLog 演算法的潛在錯誤率約為 2%。allow_approximate_optimization 參數需要 Looker 開發人員確認可使用指標的近似資料,以便從匯總資料表大約計算指標。

在匯總認知度中,有兩種情況會用到不重複計數:

  • 第一個案例是使用 type: count_distinct 的指標。
  • 第二種情況是 Looker 實際算繪為 count_distinct 評估類型的type: count 評估。如「匯總感知」說明文件頁面所述,Looker 會將 count 測量指標算繪為 count_distinct,避免在join多個資料庫資料表的探索中,發生擴散傳遞誤算。

在這兩種情況下,如果方言支援 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 方言的說明文件,瞭解這個方法的速度和準確度取捨。