如何根据 Big Query 中的 UTC 时间戳在 Data Studio 中显示本地时区的日期/时间

Posted

技术标签:

【中文标题】如何根据 Big Query 中的 UTC 时间戳在 Data Studio 中显示本地时区的日期/时间【英文标题】:How to show date/time in local time zone in Data Studio from UTC timestamp in Big Query 【发布时间】:2019-04-01 19:26:31 【问题描述】:

我希望 Google 数据洞察报告使用用户的本地时区显示销售数据(包括按小时销售的热图报告)。我将数据存储在 BigQuery 中,时间戳字段存储为 UTC。

根据Data Studio Help,听起来时间戳应该存储为 UTC(我正在这样做)。我认为 Data Studio 足够聪明,可以将 UTC 转换为用户的本地时区,但事实并非如此。

除了热图报告中的时间显示为 8:00-17:00 而不是 12:00-21:00 之外,一切都运行良好。它显示的是 UTC 而不是 EST(我的时区),我不知道如何解决这个问题。

数据洞察是否会根据用户的时区自动调整报表数据?如果是这样,我做错了什么?如果没有,是否有任何解决方法可以支持来自多个时区的用户?

【问题讨论】:

【参考方案1】:

您可以使用 TIMESTAMP() 函数的第二个参数将 UTC 时间戳转换为特定时区。这是 Big Query 支持的 a list of time zones。

ex. SELECT TIMESTAMP("2008-12-25 15:30:00", "America/New_York") AS timestamp_in_est;

+-------------------------+
| timestamp_in_est        |
+-------------------------+
| 2008-12-25 20:30:00 UTC | 
+-------------------------+

数据洞察不会根据时区调整时间戳。除非指定,否则所有时间戳均以 UTC 显示。

【讨论】:

【参考方案2】:

Google Data Studio 的17 Sep 2020 Update 介绍了日期和时间的更新以及处理日期和时间的新功能和方法,其中包括时区

0) Upgrade the Date Field

确保 日期时间 字段已升级为更新的日期时间字段类型。

添加了一个 GIF 来详细说明:

1) EST

此Calculated Field 使用DATETIME_DIFF 函数获得UTCEST 之间SECOND 的差值,然后用日期时间字段减去差值(在此报告中称为DateTimeField):

PARSE_DATETIME(
    "%s",
    CAST(CAST(FORMAT_DATETIME("%s",DateTimeField)AS NUMBER) - DATETIME_DIFF(CURRENT_DATETIME("UTC"),CURRENT_DATETIME("EST"), SECOND)AS TEXT))

Google Data Studio Report 和一个 GIF 来详细说明:

【讨论】:

【参考方案3】:

在我的情况下,解决方案是将时间转换为 MICRO,然后添加 1 小时(MICRO)。

TODATE(((name_of_column)+(3600000000)),'MICROS','%Y%m%d%H%M')

【讨论】:

以上是关于如何根据 Big Query 中的 UTC 时间戳在 Data Studio 中显示本地时区的日期/时间的主要内容,如果未能解决你的问题,请参考以下文章

根据唯一 ID 列表删除 Big Query 表中的批量行

当我的所有时间戳都是 UTC 时,如何查询“昨天,在我的时区”

如何通过 hls.js 跳转到 hls 流中的具体 UTC 时间戳

将日期转换为 UTC 时间戳

Big Query 中的表未分区

将UTC时间戳转换为熊猫中的本地时区问题