用量
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 草圖,您可以在測量指標中加入 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} ;;
}
支援匯總感知不重複計數的方言
Looker 可使用不重複計數,透過支援 HyperLogLog 草圖的資料庫方言匯總感知。在最新版 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 | |
| ClickHouse 26+ | |
| 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+ | |
| Dremio 26+ with Arrow Flight SQL | |
| 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 方言說明文件,瞭解這個方法在速度和準確度之間的取捨。