为了账号安全,请及时绑定邮箱和手机立即绑定

最新文件和文件动态命名

最新文件和文件动态命名

千万里不及你 2022-06-04 14:55:50
我正在从事一项 talend 工作,该工作发出 HTTP GET 请求以获取多个 PDF 文档。该请求返回一个 JSON 文件,其中包括:documentDate 和 documentLink。如果仅存在一个最新日期的文档,我想从 documentDate 获取最新的 documentLink,并上传带有 FileFetch 组件的文档,文件名为“Document_1”。如果 2 个文档具有最新日期,则 FileFetch 组件应上传 2 个文档,其中一个文件名为“Document_1”,另一个“Document_2”我不确定如何遍历 JSON 文件以获取最新日期并命名文档( s) 正确。到目前为止我做了什么: tHTTPRequest_1 --> tExtractJSONFields_1 --> tXMLMap_1 --> tFileFetch_1这适用于上传一个文件,但没有检查最新的 documentDate 或 tFileFetch_1 组件中的文件名命名。返回的 JSON 如下所示:{"documents": [    {        "documentDate ": 200119,        "documentLink": "someLink1",    },    {        "documentDate ": 200119,        "documentLink": "someLink2",    },    {        "documentDate ": 150119,        "documentLink": "someLink3",    }   ]}你们对如何解决这个问题有任何想法吗?
查看完整描述

1 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

工作的第一部分包括:


tFileInputJson(或在您的情况下为 tHttpRequest1)-> tSetGlobalVar -> tExtractJsonFields ->tJavaRow


tHttpRequest1 将抓取 JSON 响应(可以排序或不排序)


tsetGlobalVar 会将 JSON 保存在一个全局变量中,以便在第二部分中使用。


tExtractJson 将从每个 JSON 数组条目中提取 DocumentDate。


tJavaRow 将包含比较不同文档的日期并在全局变量中设置最大值的 Java 逻辑:


String maxDate = (String) globalMap.get("MaxDate");


if (maxDate != null && !maxDate.trim().isEmpty() )

    //Some Logic here to take the max i.e. Convert it to proper date format and compare them.

    globalMap.put("MaxDate", *comparedMaxDate*);

else

    globalMap.put("MaxDate", row4.DOCDATE);

完成后,在我们的全局变量中,我们将拥有原始 JSON 响应和最大/最近日期。


第一部分(子作业)完成后将运行的第二部分将包括:


tJava -> tExtractJsonFields -> tMap -> tFileFetch


tJava 将简单地从第一部分中设置的全局变量中获取 JSON 消息和 MaxDate。


tExtractJsonFields 将为每个数组条目提取 documentLink 和 documentDate 并将它们与最大日期一起传递给 tMap 组件。


tMap 组件将简单地在 documentDate 和 max date 之间进行比较,并检查是否等于将 documentLink 传递给 tFileFetch,否则它将忽略它。


这允许您仅发送具有最新日期的文档链接。


希望这会有所帮助,并且足够清楚。


查看完整回答
反对 回复 2022-06-04
  • 1 回答
  • 0 关注
  • 116 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信