谈谈时区在BI工具中的应用和核心逻辑

了解时区和时间

Time_Zones

时区

时区指使用相同时间的某个地理区域。 相邻时区通常(但不总是)相差一小时,中国(+8)与日本(+9)相差一个时区,澳洲中部(+9.5)与日本(+9)相差了0.5个时区。 世界上任一时区的时间都能以与协调世界时 (UTC±0:00) 之间的时差(偏移量)表示。

我们所说的时间,实质上是根据天体运动衍生的概念,例如地球自转一圈是24小时为一天,围绕太阳公转一圈365天为一年,这就是我们时间产生的缘由。

常见时区标准类型
UTC(Coordinated Universal Time, 协调世界时) UTC是一项高精度的原子时标准,协调世界时是世界上调节时钟和时间的主要时间标准,它与0度经线的平太阳时相差不超过1秒
GMT(Greenwish Mean Time Zone, 格林尼治标准时间) 格林尼治标准时间的正午是指当太阳横穿格林尼治子午线时(也就是在格林尼治上空最高点时)的时间。由于地球每天的自转是有些不规则的,而且正在缓慢减速,因此格林尼治平时基于天文观测本身的缺陷,目前已经被原子钟报时的协调世界时(UTC)所取代

绝对时间

物理时间,一个绝对时间的概念,两个人无论是在地球何处,都是处于同一个时间线上。北京时间的10:00和东京时间的11:00都是属于同一时间点。

显示时间

地球是一个自转的球体,不同地区的人们过着”日出而作,日落而息”的生活,北京时间6点的日出和西雅图6点的日出,虽然都是日出,但不属于同一个时间点。

为了方便各自地区的生活,划分了时区这个概念。处于不同地区(时区)的人,虽然在同一个绝对时间,但显示时间是不一样的。

时区时间解释示例

在同一条时间线上,北京时间10:00am,在日本其实是11:00am;北京时间10:00am与日本10:00am是两个不同的时刻。

时区使用场景

统计计算

根据对不同时区创建业务分析图表或用户标记分析(如用户分群或标签)

例如,一款在多个地区发行的游戏,分析师想了解某个地区女性玩家的活跃时间,以进一步确定活动运营时间,这种情况下只需要将分析时区设置为玩家所在地区的时区即可。

时区应用实例

数据阅读

将不同时区上报的事件偏移到统一的时间进行计算和查看。

例如,对于总部在中国的全球运营项目,想要按北京时间查看全球用户同一段绝对时间上报的付费数据,只需要切换到北京所对应的时区即可。

在数据阅读方面有两种常见的视角,一种是按固定时区查看,别一种是按用户本地时间查看

对于多地区发行的项目或门店经营,这两种视角可以满足销售、分析师、运营人员、策划、管理层等人员多样的看数需求。

类别 描述 典型场景 举例
按用户本地时间 按照事件发生的时区来聚合分析 看618活动在各个地区当地6月18日的交易金额 UTC+8 (北京时间)的 6月18日的交易金额,加上UTC-0(伦敦时间)6月18日的交易金额
按 UTC+08:00 按照固定的时区口径来聚合分析 看过去某个时间段(8:00am~12:00pm) 的所有门店的营收总额 UTC+8 (北京时间)1月18日 (8:00am ~ 12:00pm) 中国门店的营收额,加上UTC-5 (纽约时间) 1月17日(7:00pm ~ 11:00pm) 的美国东部门店的营收额

以下面的例子来详细说明两者之间的区别。

下面表格记录了来自不同国家的3位用户,都在用户所在地区10:00am分别充值$10、$30、$60,offset为时区偏移量。下图表是用不同的视角来聚合数据进行分析,

user_id paid_amount paid_time location offset
user_01 $10 10:00:00 am 俄罗斯 +7
user_02 $30 10:00:00 am 中国 +8
user_03 $60 10:00:00 am 日本 +9

时区时间解释示例

核心逻辑与配置

时区转换的核心逻辑

原始时区+原始时间  --->  目标时区+目标时间

目标是把数据表的原始时间换算成阅读和分析数据场景下显示时区的时间。

要进行时区转换,必须要满足有行为发生时的时间点和时区信息,才能转换到目标时区的时间点。如果只有时间或只有时区信息,是没有办法完成时区转换。

  • 对于客户端SDK采集或服务端埋点的数据,带上行为发生的时间和时区信息,或统一使用偏移量,规范化格式。
  • 对于加工的数据表,加上事件的时区或者时区偏移量属性,以及行为时间信息,以保证数据能切换多时区。
  • 对于没有任何时间信息的数据表,可以标识时区,以便在保证对应时区的数据统计准确,但在看板上不对切换到其它时区展示

EX. 并非所有的数据表都需要进行时区转换,如维度表(字典翻译)

时区转换配置

数据表包含时间及时区信息

这部分表能根据转换规则自动转换,转换规则的主要作用是标记出数据表记录的原始时区,在分析应用时切换多时区,时间将自动转换为所选时区。

在数据表中记录的原始时区的形式可分为2种类型:按用户当地时间记录 和 按统一时区时间记录

记录类型 记录形式
按用户当地时间记录 来自字段,如’timezone’ ;指定值,如‘UTC +)8:00’
按统一时区时间记录 指定值,如‘UTC +)8:00’

对于SDK采集的数据基本上能保证时区和时间的规范性,系统可预置规则针对这部分表;对于因前期不按规范采集或加工的数据表(如使用规范以外的字段记录时区)、数据表本身固定为某个指定时区的,也可为此配置对应规转换规则。

数据表不包含时间信息

可以选择对这部分表添加时区标识,例如某数据表是按 UTC +10:00记录的,人工标记一下让系统知道其真实时区。若未作标识,将默认标记为项目的默认时区。但在分析应用时切换其它时区时,将不会进行时区转换。