使用时区设置

Looker 可以将基于时间的数据转换为不同的时区,以便您更轻松地理解这些数据。用户可以查看查询结果,并使用已转换为当地时区的基于时间的数据创建过滤条件。例如,纽约的用户查看在加利福尼亚州创建的数据时,无需手动减去 3 小时即可过滤或解读其查询。

在查询数据探索、探索或信息中心时,Looker 会在生成 SQL 时转换基于时间的数据。底层数据不会受到影响;而是使用 Looker 的时区设置转换查询结果。这也意味着,使用 SQL Runner 运行的查询不会转换基于时间的数据。

Looker 中的多个设置可指定如何转换基于时间的数据:

系统时区

系统时区是指运行 Looker 的服务器的配置时区。Looker 的内部数据库用于存储 i__looker系统活动探索中提供的信息,并会将基于时间的数据存储在系统时区中。

无法通过 Looker 应用配置系统时区。对于 Looker 托管的实例,系统时区始终设置为世界协调时间 (UTC)。客户托管的实例可能位于不同的系统时区。更改系统时区并非易事,也不建议这样做。如果您需要调整 i__looker 或“系统活动”探索中的时间戳,Looker 建议您使用表计算来创建经过时间调整的列。例如,如需从世界协调时间 (UTC) 转换为东部标准时间 (EST),您可以创建一个包含表格计算 add_hours(-5, ${time}) 的列。

数据库时区

添加数据库连接时,您可以在连接设置页面上为数据库时区设置值。

此设置表示数据库所在的时区,通常为世界协调时间 (UTC)。如果将此值设置为数据库所在时区以外的任何值,都可能会导致意外结果。

用户自选时区

基于时间的数据转换最重要的设置是用户自选时区选项,该选项位于 Looker 的管理部分中的常规设置页面。

您可以启用或停用用户自选时区

  • 启用后,系统会为每个 Looker 用户分配一个时区,该时区会指定其查询结果的外观。
  • 停用后,系统不会为用户的账号分配单独的时区。而是使用查询时区值运行所有查询。

启用用户专用时区后,用户可以在账号页面上设置自己的时区,或者 Looker 管理员可以在用户页面上为用户分配时区。如果未为用户设置时区,其账号将默认采用 Looker 的应用时区设置。

每当用户创建查询时,系统都会在用户的时区创建该查询。因此,当查询返回基于时间的数据时,Looker 会将数据从数据库时区转换为用户的时区。当用户在查询中使用与时间相关的过滤条件值时,Looker 会将过滤条件值转换为数据库时区

此外,启用此选项后,Looker 会在探索外观中显示时区下拉菜单。

此下拉菜单中的选项如下:

  • 每个图块的时区(仅限信息中心):所有查询均在其保存时所在的时区运行。
  • 观看者时区:所有查询均在用户的当前时区设置中运行。
  • 每个时区的列表,用户可以根据需要手动选择。

所有查询都默认采用创建查询时所采用的时区。换句话说,如果 Alice 创建了一个时区为“America/Los_Angeles”的查询并将其发送给 Bob,Bob 将看到时区为“America/Los_Angeles”的查询,即使 Bob 的时区设为“America/New_York”也是如此。同样,展开细目始终会默认采用创建查询时所用的时区。

每当查看查询时,用户都可以使用下拉菜单替换时区,为该查询或该信息中心的一组查询选择自己的观看者时区或任何其他时区。

用户自选时区注意事项

启用用户专用时区后,不同时区的用户看到的数据可能会有所不同。

例如,构成时间段 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
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 及更高版本
使用原生驱动程序的 Cloudera Impala
DataVirtuality
Databricks
Denodo 7
Denodo 8
Dremio
Dremio 11+
Exasol
Firebolt
Google BigQuery 旧版 SQL
Google BigQuery 标准 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 及更高版本
9.5 之前的 PostgreSQL
PrestoDB
PrestoSQL
SAP HANA 2+
SingleStore
SingleStore 7+
Snowflake
TeraData
Trino
向量
Vertica