使用时区设置

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 会在探索Look 中显示时区下拉菜单。

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

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

所有查询都默认采用创建查询时所用的时区。换句话说,如果小红创建一个时区为“美国/洛杉矶”的查询并将其发送给小鲍,那么即使小鲍的时区设置为“美国/纽约”,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 中哪些方言支持时区转换:

方言 是否支持?
艾克蒂安雪崩
Amazon Athena
Amazon Aurora MySQL
Amazon Redshift
阿帕奇·德鲁伊
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 11 及更高版本
Exasol
火箭
Google BigQuery 旧版 SQL
Google BigQuery 标准 SQL
Google Cloud PostgreSQL
Google Cloud SQL
Google Spanner
绿紫红
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 及更高版本
PostgreSQL 9.5 版之前的版本
PrestoDB
PrestoSQL
SAP HANA 2 及更高版本
SingleStore
SingleStore 7 或更高版本
Snowflake
Teradata
Trino
矢量
Vertica