Azure数据工厂-按日期过滤Mongodb源数据集

这种情况非常简单,如ADFv2文档和示例中所述,我创建了一个复制管道来从MongoDB集合中获取数据,并将其写入Azure SQL数据库。

已成功传输完整的收集数据,并且正确设置了所有映射。当我尝试过滤源数据集以仅从MongoDB获得最近的 n 天时,问题就开始了。我尝试了几个查询,并与MongoDB Compass进行了交叉检查,以查看它们是否实际上在执行Mongo方面。 归结为以下过滤查询:

{"CacheTime": {$gt: new Date(ISODate().getTime()-1000*60*60*24*5)}}

它在MongoDB上成功执行,但在ADF上失败,并显示错误:

属性值'{“ CacheTime”:{$ gt:new Date(ISODate()。getTime()-1000 * 60 * 60 * 24 * 5)}}'无效。 。活动ID:xxxxx

因此,我尝试使用ADF动态内容以ISODate格式设置当前日期,并将整个过滤器作为字符串传递:

@concat('{"CacheTime": {$gt: ISODate("',formatDateTime(utcnow(),'yyyy-MM-ddThh:mm:ssZ'),'")}}')

此失败并显示类似错误:

属性值'{“ CacheTime”:{$ gt:new Date(ISODate(“ 2019-11-15T10:45:16Z”)-1000 * 60 * 60 * 24 * 2)}}''是无效的。 。活动ID:xxxxx

属性值本身({“ CacheTime”:{$ gt:new Date(ISODate(“ 2019-11-15T10:45:16Z”)-1000 * 60 * 60 * 24 * 2)}})仅执行在MongoDB上很好。而且我找不到它在ADF上不起作用的原因。 检查MongoDB文档是否与受支持的MongoDB版本有关。我的MongoDB版本是4.0,但是查询中的函数是简单的日期函数,因此我相信过滤查询不会失败。

是否有人将带有日期的成功查询过滤器传递给MongoDB并得以幸存?

oye07 回答:Azure数据工厂-按日期过滤Mongodb源数据集

尝试一下。

{“ CacheTime”:{$ gt:ISODate(“ @ {adddays(utcnow(),-5)}”)}}}

本文链接:https://www.f2er.com/3095954.html

大家都在问