动态格式化数据工厂数据集中的最后修改的过滤器

时间:2019-04-09 09:56:41

标签: azure azure-data-factory

我试图动态设置azure数据工厂数据集中最后修改的过滤器。

我正在使用以下表达式:

@formatDateTime(adddays(utcnow(),-2),'yyyy-mm-ddThh:mm:ss.fffZ')

Data factory formatting

我遇到以下错误:

  

活动复制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。

我也无法使用此过滤器预览数据。我猜这里有些问题。有什么想法吗?

5 个答案:

答案 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解决。

screenshot

答案 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()

没有