CDAP 将表示以毫秒为单位的纪元的长类型列截断到 year/month

CDAP Trucate a long type column representing an epoch in milliseconds to year/month

我正在使用 CDAP 和 Cloud Data Fusion 6.6.0 我有一个名为 ts 的列,其中 long 表示以毫秒为单位的时间戳。类型是 long.

下一步,我需要按年和月进行分组,所以我需要创建两个新字段yearmonth或者将ts截断为月份。

执行此操作的 Wrangler 指令集是什么? 下一个示例不起作用,因为它是 long,所以我想我需要将 ts 转换为 ZoneDateTime,但不知道该怎么做:

测试指令:

parse-as-simple-date:ts
set-column year date:YEAR(ts)
set-column month date:MONTH(ts)

错误

Improper usage of directive 'parse-as-simple-date', usage - 'parse-as-simple-date :column 'format''

这些是要使用的 wrangler 指令:

  • timestamp-to-datetime
  • parse-timestamp

您当前使用的指令需要日期格式,例如 yyyy.MM.dd 它类似于:parse-as-simple-date :ts yyyy.MM.dd 但此函数将 DATE STRING 解析为 DATE.

wrangler 指令 timestamp-to-datetime 将时间戳转换为日期时间。

timestamp-to-datetime :ts

另一种可能的解决方案是使用 parse-timestamp 此指令将表示 unix 时间戳的列值解析为日期,然后您可以将结果格式化为您喜欢的 DATE 模式。

parse-timestamp :ts milliseconds
format-date :ts 'MM/dd/yyyy'