使用时区设置

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 会在 ExploreLooks 中显示一个时区下拉菜单。

此下拉菜单中的选项包括:

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

所有查询默认使用创建查询时所用的时区。换句话说,如果 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 支持时区转换的方言:

方言 是否支持?
阿克蒂安雪崩
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 购物中心
迪诺多 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 数据库
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
单一商店 7+
Snowflake
TeraData
Trino
矢量
Vertica