我试图动态设置azure数据工厂数据集中最后修改的过滤器。
我正在使用以下表达式:
@formatDateTime(adddays(utcnow(),-2),'yyyy-mm-ddThh:mm:ss.fffZ')
我遇到以下错误:
活动复制1失败:失败发生在“源”端。 ErrorCode = UserErrorInvalidValueInPayload,'类型= Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,消息=无法将'modifiedDatetimeStart'属性中的值转换为'System.Nullable`1 [[System.DateTime,mscorlib,Version = 4.0.0.0,文化=中性,PublicKeyToken = b77a5c561934e089]]'类型。请确保有效载荷结构和值正确。,Source = Microsoft.DataTransfer.DataContracts,''Type = System.Reflection.TargetInvocationException,Message =异常已被调用的目标抛出。,Source = mscorlib,'' Type = System.FormatException,Message =日历System.Globalization.GregorianCalendar。,Source = mscorlib,'
中不支持该字符串表示的DateTime。
我也无法使用此过滤器预览数据。我猜这里有些问题。有什么想法吗?
答案 0 :(得分:1)
从错误消息中我了解到calander不支持日期的字符串表示形式。
The DateTime represented by the string is not supported in calendar
为什么需要格式化比较字符串?
答案 1 :(得分:0)
也许,作为一种解决方法,您可以使用此表达式来消除日期时间表达式中的多余字符:
@substring(formatDateTime(adddays(utcnow(),-2), 'o'), 0, 23)
我用utcnow()测试了它,它应该以所需的格式返回日期时间:
"value": "2019-04-12T10:11:51.108Z"
答案 2 :(得分:0)
实际上,以下命令已在发布和触发后经过测试和工作:
@utcnow()
@adddays(utcnow(),-2)
这是前端的预览功能,无法处理表达式。有望由Microsoft解决。
答案 3 :(得分:0)
事实证明,您可以解决以上将字符串转换为上方的行的问题,因此
@formatDateTime(adddays(utcnow(),-2),'yyyy-mm-ddThh:mm:ss.fffZ')
将其更改为
@string(formatDateTime(adddays(utcnow(),-2),'yyyy-mm-ddThh:mm:ss.fffZ'))
它对我有效
答案 4 :(得分:0)
在数据流中遇到相同的问题:
currentUTC()
不适用于在blob存储中提取最后修改的文件,但
currentTimestamp()
没有