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
.
下一步,我需要按年和月进行分组,所以我需要创建两个新字段year
和month
或者将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'
我正在使用 CDAP 和 Cloud Data Fusion 6.6.0 我有一个名为 ts
的列,其中 long
表示以毫秒为单位的时间戳。类型是 long
.
下一步,我需要按年和月进行分组,所以我需要创建两个新字段year
和month
或者将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'