Data Fusion管道Wrangler节点set-column生成指定格式时间戳报错求助
问题:Data Fusion Wrangler节点生成指定格式的系统时间戳字段
我正在开发Data Fusion数据融合管道,其中包含一个Wrangler节点,尝试创建新字段存储格式为yyyy-MM-dd'T'HH-mm-ss的系统时间戳。
我曾尝试使用以下指令:
set-column :sysdate (${logicalStartTime(yyyy-MM-dd'T'HH-mm-ss)})
但收到报错:
Caused by: io.cdap.wrangler.api.DirectiveParseException: Error encountered while parsing 'set-column' : Error encountered while compiling '( 2022 -12-01T16-29-32 ) ' at line '1' and column '14'. Make sure a valid jexl transformation is provided.
我还尝试过:
set-column :sysdate (${logicalStartTime(yyyy-MM-ddHH-mm-ss)})
结果得到类似"1877"的数值(因被解析为数字减法);也试过:
set-column :sysdate (${logicalStartTime(yyyyMMddHHmmss)})
但格式不符合要求,且该字段只能存储为String类型。
请问正确的指令语句是什么?
正确指令及说明
可用的正确指令写法
选择以下任意一种即可生成符合yyyy-MM-dd'T'HH-mm-ss格式的字符串类型时间戳字段:
- 单引号包裹格式字符串并转义内部单引号:
set-column :sysdate '${logicalStartTime('yyyy-MM-dd\'T\'HH-mm-ss')}'
- 双引号包裹格式字符串并转义内部双引号:
set-column :sysdate "${logicalStartTime(\"yyyy-MM-dd'T'HH-mm-ss\")}"
问题根源解释
Wrangler的set-column依赖JEXL表达式解析逻辑,未被引号包裹的格式字符串中的-会被当作算术减法运算符处理,导致解析报错或计算出错误的数值结果。通过将格式字符串用引号包裹,并转义其中的嵌套引号,可以确保格式规则被完整识别,最终生成符合要求的时间戳字符串。
内容的提问来源于stack exchange,提问作者ars_nei
相关产品推荐
相关产品推荐

