timestamp

时间戳类型

事件表中的必须字段属性,表示事件发生的时间,问答时的时间维度;当实体表中有时间戳时,该实体表为快照表;系统可以实现秒粒度的数据分析,并且可以通过granularity设置时间粒度。

时间戳格式要求

时间戳要求为 YYYY-MM-DD HH:mm:ss 格式。

若数据库中存储的是其他类型(如整数时间戳),仍可通过模型字段配置中的「高级」选项,编写 SQL 逻辑进行转化,使其符合上述格式。具体配置方式见 字段高级设置

非标准格式的转换

系统在做时间聚合(如按日、按月、按年汇总)时依赖时间戳字段,因此当数据源里没有 YYYY-MM-DD HH:mm:ss 格式的数据时,需要先用 SQL 逻辑把原字段转成目标格式,再交给模型使用。

常见的非标准情况包括:

  • 用字符串 202010 表示「2020 年 10 月」(年月连写、无分隔符、无日)
  • 将「年」「月」分别存成两个字段,例如 year = 2020month = 10
  • 用整数存储 Unix 时间戳(秒/毫秒)等

转换时,需要使用所接入数据源自身的 SQL 语法。配置入口为:字段配置 → 高级 → 字段映射,在框中填入对应表达式(示例中的字段名请替换为实际字段名)。转换的目标是 YYYY-MM-DD HH:mm:ss 的日期时间类型,因此应使用返回日期时间的函数(如 toDateTimeto_timestamp),而非只返回日期的函数(如 toDateto_date)。

案例一:字符串 202010 表示年月

假设字段 pay_month 存的是 202010 这样的字符串,表示 2020 年 10 月,需转成时间戳格式。

MySQL / Doris / StarRocks
PostgreSQL / GreenPlum
ClickHouse
Oracle
STR_TO_DATE(CONCAT(pay_month, '01000000'), '%Y%m%d%H%i%s')

案例二:年、月分成两个字段

假设 year_col 字段存年份(如 2020),month_col 字段存月份(如 10)。

MySQL / Doris / StarRocks
PostgreSQL / GreenPlum
ClickHouse
Oracle
STR_TO_DATE(CONCAT(year_col, '-', LPAD(month_col, 2, '0'), '-01 00:00:00'), '%Y-%m-%d %H:%i:%s')
提示

转换结果应尽量补足到 YYYY-MM-DD HH:mm:ss,缺失的日、时、分、秒统一补为 0100(如 2020102020-10-01 00:00:00),用于按月、按年聚合已足够;如需精确到某一天,请在转换时补足对应精度。