如何根据 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
函数获得UTC
和EST
之间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 中显示本地时区的日期/时间的主要内容,如果未能解决你的问题,请参考以下文章
当我的所有时间戳都是 UTC 时,如何查询“昨天,在我的时区”