Looker 可將時間資料轉換為不同時區,方便您解讀。使用者可以查看查詢結果,並使用轉換為當地時區的時間資料建立篩選器。舉例來說,如果紐約的使用者查看加州建立的資料,就不必手動減去三小時,即可篩選或解讀查詢。
在查詢 Look、探索或資訊主頁時,Looker 會在產生 SQL 時轉換時間資料。基礎資料不會受到影響,而是查詢結果會使用 Looker 的時區設定進行轉換。這也表示使用 SQL Runner 執行的查詢不會轉換時間資料。
Looker 中有幾項設定可指定如何轉換時間資料:
系統時區
系統時區是指執行 Looker 的伺服器所設定的時區。Looker 的內部資料庫會儲存「系統活動」Explore 中提供的資訊,並以系統時區儲存時間資料。
您無法透過 Looker 應用程式設定系統時區。如果是 Looker 代管的執行個體,系統時區一律設為世界標準時間。客戶代管的執行個體可能位於不同的系統時區。變更系統時區並非易事,因此不建議這麼做。如要在「系統活動」探索中調整時間戳記,請使用表格計算建立時間調整欄。舉例來說,如要將 UTC 轉換為 EST,可以建立含有資料表計算 add_hours(-5, ${time})
的資料欄。
資料庫時區
將連線新增至資料庫時,請在「連線設定」頁面設定「資料庫時區」的值。
這項設定代表資料庫所在的時區,通常是世界標準時間 (UTC)。如果將這個值設為資料庫時區以外的任何時區,可能會導致非預期的結果。
使用者專屬時區
以時間為準的資料轉換最重要的一項設定是「使用者專屬時區」選項,位於 Looker「管理」部分的「一般設定」頁面。
您可以啟用或停用「使用者專屬時區」:
啟用「使用者專屬時區」後,使用者可以在「帳戶」頁面設定時區,Looker 管理員則可以在「使用者」頁面為使用者指派時區。如果未設定使用者的時區,帳戶會預設為 Looker 應用程式時區設定。
使用者建立查詢時,系統會依據使用者的時區建立查詢。因此,當查詢傳回以時間為準的資料時,Looker 會將資料從「資料庫時區」轉換為使用者的時區。使用者在查詢中採用與時間相關的篩選值時,Looker 會將篩選值轉換為資料庫時區。
此外,啟用這個選項後,Looker 會在「探索」和「資料檢視」中顯示「時區」下拉式選單。
這個下拉式選單的選項包括:
- 每個圖塊的時區 (僅限資訊主頁):所有查詢都會在儲存時的時區中執行。
- 檢視者時區:所有查詢都會在使用者目前的時區設定中執行。
- 列出所有時區,使用者可手動選擇。
所有查詢預設都會使用建立查詢時的時區。換句話說,如果 Alice 建立查詢時使用的時區是「美國/洛杉磯」,並將查詢傳送給 Bob,即使 Bob 的時區設為「美國/紐約」,Bob 看到的查詢時區仍是「美國/洛杉磯」。同樣地,系統一律會預設使用建立查詢時的時區進行向下切入。
查看查詢時,使用者可以透過下拉式選單覆寫時區,為該查詢或該儀表板的一組查詢選取「檢視者時區」或任何其他時區。
使用者專屬時區的注意事項
啟用「使用者專屬時區」後,不同時區的使用者可能會看到不同的資料。
舉例來說,不同時區的確切時數可能不同,因此如果使用者位於不同時區,但都篩選 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 會使用驅動程式設定選取目標時區。與 pgAdmin 相比,這可能會影響 SQL Runner 處理查詢的方式,因為 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+ | 是 |
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 | 否 |
Firebolt | 否 |
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 | 否 |