在ADF管道表达式中调整日期时间字段小时数遇NULL问题求助
ADF日期时间减4小时返回NULL的解决方法
先确认源字段的有效性
首先检查你的日期时间字段本身是否为NULL,或者不是合法的DateTime类型:- 如果字段是字符串格式,必须先用
toDateTime()转换为DateTime类型,比如源字段格式是yyyy-MM-dd HH:mm:ss,就写:
要是不指定格式,ADF可能无法识别非标准字符串格式,导致转换后为NULL。toDateTime(your_date_column, 'yyyy-MM-dd HH:mm:ss') - 如果源字段本身就是NULL,那计算结果自然也是NULL,得先处理源数据的空值问题。
- 如果字段是字符串格式,必须先用
正确的减小时表达式写法
ADF里用addHours()函数实现时间加减,减4小时只需传入负数参数:- 源字段是DateTime类型:
addHours(your_date_column, -4) - 源字段是字符串类型(先转类型再计算):
addHours(toDateTime(your_date_column, 'yyyy-MM-dd HH:mm:ss'), -4)
- 源字段是DateTime类型:
排查常见错误点
- 检查函数拼写:别把
addHours写成addHour(少了s) - 字段名是否正确:ADF里字段名区分大小写,确保和数据源里的字段名完全一致
- 数据集配置:如果是从CSV、JSON等文件读取,确认数据集里是否把该字段的类型设置为
DateTime,而非String
- 检查函数拼写:别把
测试验证
可以先用静态值测试表达式是否正常工作,比如:addHours(currentTimestamp(), -4)如果这个表达式能返回正确的当前时间减4小时,说明函数本身没问题,问题出在你的源字段上。
内容的提问来源于stack exchange,提问作者Vinay Nimje
相关产品推荐
相关产品推荐

