当前位置: 首页 > 知识库问答 >
问题:

Azure数据工厂-按日期筛选Mongodb源数据集

魏熠彤
2023-03-14

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

已成功传输完整采集数据,并且所有映射都已正确设置。当我试图过滤源数据集以仅从MongoDB获取最后n天时,问题就开始了。我尝试了几个查询,并与MongoDB Compass进行了交叉检查,以确定它们是否真的在执行Mongo-side,事实就是这样。归结起来就是这个过滤查询:

{“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)}无效。活动编号:xxxxx

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

有没有人成功地通过了MongoDB的日期查询过滤器并幸存下来?

共有1个答案

逑衡
2023-03-14

试试这个。

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

 类似资料:
  • 释义 数据源(DataSource)的概念来自于JDBC规范中,一个数据源表示针对一个数据库(或者集群)的描述,从数据源中我们可以获得N个数据库连接,从而对数据库进行操作。 每一个开源JDBC连接池都有对DataSource的实现,比如Druid为DruidDataSource,Hikari为HikariDataSource。但是各大连接池配置各不相同,配置文件也不一样,Hutool的针对常用的连

  • 我们有一个将文件复制到Azure文件服务器的外部源。文件大小约为10GB。我想在Azure文件服务器上使用Azure Data Factory完成文件复制后,立即将此文件复制到Azure Blob存储。供应商无法将此文件复制到Blob容器。有人能帮我配置什么类型的触发器吗。我可以手动复制,但我正在寻找是否可以实现自动化。我甚至不能安排这个活动,因为来自外部源的文件副本是随机的。 谢谢

  • 问题内容: 我想根据日期从数据库中筛选值。 数据库中的日期包含以下值:2008-12-28 18:00:00。我的班级有一个DateTime变量,具体取决于我要过滤的变量。理想情况下,它将像这样工作: +根据需要调整myDateTime.Date格式。 但是它抛出一个EvaluateException:“该表达式包含未定义的函数调用DATE()。” 尽管如果直接执行SQL语句,则可以在过滤器中使用

  • 选择数据表格头部 图标,可以选择表格内字段进行复杂条件筛选; 筛选结果在表格内显示; 选择: 选择图层内字段名称 约束条件: 对选择的该字段指定条件,条件一般有等于、小于、大于等(数值型字段)、或者包含、不包含等(文本型字段)... 约束值:输入需要限制的值 可以支持多种条件同时筛选、或者任选其一条件满足;

  • 我是新的Azure数据工厂v2 我有一个文件夹,里面有两个文件。csv和F2。在blob存储中存储csv。 我创建了一个复制数据管道活动,用3个参数将数据从文件加载到azure DWH中的一个表中,并将其递归复制为false。 参数1:容器 参数2:目录 参数3:F1.csv 将上述参数用于复制数据活动时成功执行。 但数据是从两个文件加载的,只有一个文件作为活动的参数提供

  • 若要用单个列过滤数据文件(DF),如果我们考虑有男性和女性的数据,我们可以: 问题1——但如果数据跨越多年,而我只想看到2014年的男性会怎样? 在其他语言中,我可能会这样做: (除非我想这样做并在新的dataframe对象中获取原始dataframe的子集) 问题2。我如何在一个循环中实现这一点,并为每个独特的年份和性别集(即:2013年男性、2013年女性、2014年男性和2014年女性)创建