Looker 可將時間資料轉換為不同時區,讓您更容易瞭解資料。使用者可以查看查詢結果,並建立篩選器,將以時間為依據的資料轉換為當地時區。舉例來說,如果紐約的使用者要查看加州建立的資料,就不需要手動減去三小時來篩選或解讀查詢。
在查詢 Look、探索或資訊主頁時,Looker 會在產生 SQL 時轉換時間資料。基礎資料不會受到影響,而是使用 Looker 的時區設定轉換查詢結果。這也表示使用 SQL Runner 執行的查詢不會轉換以時間為準的資料。
Looker 中的多個設定可指定如何轉換以時間為準的資料:
系統時區
系統時區是指執行 Looker 的伺服器所使用的時區。Looker 的內部資料庫會儲存「系統活動」探索中提供的資訊,並以系統時區儲存時間相關資料。
您無法透過 Looker 應用程式設定系統時區。對於由 Looker 代管的例項,系統時區一律設為世界標準時間。客戶代管的執行個體可能位於不同的系統時區。變更系統時區並非易事,因此不建議這麼做。如果您需要調整系統活動探索中的時間戳記,請使用表格計算來建立經過時間調整的資料欄。舉例來說,如要將 UTC 轉換為 EST,您可以使用資料表計算 add_hours(-5, ${time})
建立資料欄。
資料庫時區
新增資料庫連線時,請在「連線設定」頁面中設定「資料庫時區」的值。
這個設定代表資料庫所在的時區,通常為世界標準時間 (UTC)。如果將這個值設為資料庫所在時區以外的任何值,可能會導致意外結果。
使用者專屬時區
以時間為準的資料轉換最關鍵的設定是「使用者專屬時區」選項,位於 Looker 的「管理」部分的「一般設定」頁面。
您可以啟用或停用使用者專屬時區:
- 啟用這項設定後,系統會為每位 Looker 使用者指派時區,並以該時區指定查詢結果的顯示方式。
- 停用後,使用者帳戶就不會指派個別時區。而是使用 查詢時區值執行所有查詢。
啟用「使用者專屬時區」後,使用者可以在「帳戶」頁面中設定時區,Looker 管理員也可以在「使用者」頁面中指派時區給使用者。如果使用者未設定時區,系統會將帳戶預設為 Looker 的應用程式時區設定。
每當使用者建立查詢時,系統都會依據使用者的時區建立該查詢。因此,當查詢傳回時間資料時,Looker 會將資料從資料庫時區轉換為使用者的時區。當使用者在查詢中使用與時間相關的篩選器值時,Looker 會將篩選器值轉換為資料庫時區。
此外,啟用這個選項後,Looker 會在「探索」和「Look」中顯示「時區」下拉式選單。
這個下拉式選單中的選項如下:
- 每個資訊方塊的時區 (僅限儀表板):所有查詢都會在儲存時指定的時區執行。
- 觀眾時區:所有查詢都會在使用者目前的時區設定中執行。
- 列出所有時區,使用者可視需要手動選擇。
所有查詢預設會使用建立查詢時的時區。換句話說,如果麗麗建立的查詢含有「美國/洛杉磯」時區,並傳送給小明,小明就會看到含有「美國/洛杉磯」時區的查詢,即使小明的時區設為「美國/紐約」也一樣。同樣地,鑽研作業一律會預設為使用查詢建立時所使用的時區。
查看查詢時,使用者可以使用下拉式選單覆寫時區,選擇「查看者時區」或任何其他時區,用於該查詢或儀表板的查詢。
使用者專屬時區的注意事項
啟用「使用者專屬時區」後,不同時區的使用者可能會看到不同的資料。
舉例來說,last month
時間範圍的確切時間會因時區而異,因此如果使用者位於不同時區,但都以 last month
做為篩選條件,他們可能會看到不同的資料值。
應用程式時區
您可以在 Looker 的「管理」部分,透過「一般設定」頁面設定「應用程式時區」設定。
「Application Time Zone」是內容提交的預設時區。用於內容提交作業的時區不會影響查詢傳回的時間資料,只會影響資料傳送的時間。
如果您啟用使用者專屬時區選項,則對於未為帳戶設定時區值的使用者,應用程式時區會是預設時區。
查詢時區
只有在停用使用者專屬時區時,系統才會顯示「查詢時區」選項。在這種情況下,您可以在「連線設定」頁面上新增資料庫連線時設定查詢時區值。
如果停用使用者專屬時區,所有以時間為準的資料查詢都會使用查詢時區,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+ | 是 |
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 | 否 |
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 | 否 |