Looker 可將時間資料轉換為不同時區,方便您瞭解。使用者可以查看查詢結果,並使用轉換為當地時區的時間資料建立篩選器。舉例來說,如果紐約的使用者查看加州建立的資料,就不必手動減去三小時來篩選或解讀查詢。
在查詢 Look、探索或資訊主頁時,Looker 會在產生 SQL 時轉換時間資料。基礎資料不會受到影響,而是查詢結果會使用 Looker 的時區設定進行轉換。這也表示使用 SQL Runner 執行的查詢不會轉換時間型資料。
Looker 內有幾項設定可指定如何轉換時間資料:
系統時區
系統時區是指執行 Looker 的伺服器所設定的時區。Looker 的內部資料庫會儲存「系統活動」探索中提供的資訊,並以系統時區儲存時間相關資料。
您無法透過 Looker 應用程式設定系統時區。如果是 Looker 代管的執行個體,系統時區一律設為世界標準時間。客戶託管的執行個體可能位於不同的系統時區。變更系統時區並非易事,因此不建議這麼做。
如要在系統活動的「探索」中調整時間戳記,請使用資料表計算建立調整過時間的資料欄。舉例來說,如要從世界標準時間轉換為美東時間,可以建立含有資料表計算 add_hours(-5, ${time}) 的資料欄。
請注意,資料表計算是在查詢結果傳回後執行,因此無法用於依特定時間元件 (例如時段或星期幾) 分組或透視資料。如要調整需要依時間元件透視或分組的視覺化資料系統活動時間戳記,請改用自訂維度。系統會在視覺化之前處理自訂維度,以便正確分組。舉例來說,如要將資料從世界標準時間調整為 GMT-3,請先使用 Looker 運算式 add_hours(-3, ${user_facts.last_ui_login_hour}) 建立調整後的時區自訂維度。然後建立後續的自訂維度,根據調整後的「時間」欄位擷取所需的工作日或小時。
資料庫時區
將連線新增至資料庫時,請在「連線設定」頁面中,設定「資料庫時區」的值。
這項設定代表資料庫所在的時區,通常是世界標準時間 (UTC)。如果將這個值設為資料庫時區以外的任何時區,可能會導致非預期的結果。
使用者專屬時區
以時間為準的資料轉換最重要的一項設定是「使用者專屬時區」選項,位於 Looker「管理」部分的「一般設定」頁面。
您可以啟用或停用「使用者專屬時區」:
啟用「使用者專屬時區」後,使用者可以在「帳戶」頁面設定時區,Looker 管理員則可以在「使用者」頁面為使用者指派時區。如果未設定使用者的時區,帳戶會預設為 Looker「應用程式時區」設定。
使用者建立查詢時,系統會依據使用者的時區建立查詢。因此,當查詢傳回以時間為準的資料時,Looker 會將資料從「資料庫時區」轉換為使用者的時區。使用者在查詢中採用時間相關的篩選值時,Looker 會將篩選值轉換為資料庫時區。
此外,啟用這個選項後,Looker 會在「探索」和「資料夾」中顯示「時區」下拉式選單。

這個下拉式選單的選項包括:
- 每個圖塊的時區 (僅限資訊主頁):所有查詢都會在儲存時的時區中執行。
- 檢視者時區:所有查詢都會在使用者目前的時區設定中執行。
- 列出所有時區,使用者可手動選擇。
所有查詢預設都會使用建立查詢時的時區。換句話說,如果愛麗絲建立查詢時使用的時區是「美國/洛杉磯」,並將查詢傳送給小明,即使小明的時區設為「美國/紐約」,小明也會看到時區為「美國/洛杉磯」的查詢。同樣地,系統一律會根據查詢建立時的時區,預設進行向下鑽取。
查看查詢時,使用者可以透過下拉式選單覆寫時區,為該查詢或該儀表板的一組查詢選取「檢視者時區」或任何其他時區。
使用使用者專屬時區的注意事項
啟用「使用者專屬時區」後,不同時區的使用者可能會看到不同的資料。
舉例來說,不同時區的確切時數構成的時間範圍 last month 會有所不同,因此如果使用者位於不同時區,但都篩選 last month,可能會看到不同的資料值。
應用程式時區
您可以在 Looker 的「管理」部分,透過「一般設定」頁面設定「應用程式時區」。
「應用程式時區」是內容交付的預設時區。內容傳送時使用的時區不會影響查詢傳回的時間相關資料,只會影響資料傳送時間。
如果啟用「使用者專屬時區」選項,系統會將「應用程式時區」設為預設時區,供帳戶未設定時區值的使用者使用。
查詢時區
只有在停用「使用者專屬時區」時,系統才會顯示「查詢時區」選項。在這種情況下,您可以在「連線設定」頁面新增資料庫連線時,設定「查詢時區」值。
如果停用「使用者專屬時區」,所有以時間為準的資料查詢都會使用「查詢時區」,且 Looker 會將所有以時間為準的資料從「資料庫時區」轉換為「查詢時區」。
convert_tz LookML 參數
Looker 預設會轉換時區。如要停用個別欄位的時區轉換功能,可以使用 convert_tz LookML 參數。例如:
dimension_group: created {
type: time
timeframes: [time, date]
convert_tz: no
}
詳情請參閱 convert_tz 參數說明文件頁面。
sql LookML 參數
您也可以在 LookML 維度的 sql 參數中,使用資料庫方言的函式手動定義時區轉換。舉例來說,如要在 MySQL 中手動定義時區轉換,可以使用下列 LookML:
dimension_group: created {
type: time
timeframes: [time, date]
sql: CONVERT_TZ(${TABLE}.created_at,'UTC','PST') ;;
}
MySQL 方言注意事項
MySQL 必須先有時區資料表,時區轉換函式才能運作。這項作業可由管理員執行。詳情請參閱 MySQL 說明文件。
Postgres 方言注意事項
Looker 會使用驅動程式設定選取目標時區。這可能會影響 SQL Runner 處理查詢的方式 (與 pgAdmin 相比),因為 Looker 會使用所選時區的目前日期時間。
支援時區轉換的資料庫方言
如要讓 Looker 轉換 Looker 專案中的時區,資料庫方言必須支援時區轉換。下表列出最新版 Looker 中支援時區轉換的方言:
| 方言 | 是否支援? |
|---|---|
| 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 | |
| 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 |