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 實際以 count_distinct 評估類型算繪的type: count 評估。如「匯總感知」說明文件頁面所述,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+
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 方言的說明文件,瞭解這個方法的速度和準確度取捨。