使用时区设置

Looker 可将基于时间的数据转换为不同的时区,让基于时间的数据更易于理解。用户可以查看查询结果,也可以使用已转换为其当地时区的时间数据创建过滤器。例如,位于纽约的用户在查看加利福尼亚州创建的数据时,无需手动减去 3 个小时来过滤或解读查询。

Looker 在 Look、探索或信息中心查询期间生成 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 中显示一个时区下拉菜单。

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

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

所有查询默认使用创建查询时所用的时区。换句话说,如果小丽使用时区“America/Losages”创建了一个查询并将其发送给小强,那么,即使小鲍的时区设为了“美国/纽约”,也会看到采用时区“美国/洛杉矶”的查询。同样,深入探究始终默认为创建查询时使用的时区。

每当查看查询时,用户均可使用下拉菜单替换时区,只需选择自己的查看者时区,或为该查询或该信息中心内的一组查询选择不同的时区。

关于用户特定时区的注意事项

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

例如,不同时区的“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
迪诺多 7
迪诺多 8 号星
德雷米奥
Dremio 11+
Exasol
火箭
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 分析
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 9.5 之前的版本
PrestoDB
PrestoSQL
SAP HANA 2 及更高版本
SingleStore
SingleStore 7 及更高版本
Snowflake
Teradata
Trino
矢量
Vertica