java - 最新文件和文件的动态命名

标签 java talend

我正在从事一项 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

这可以上传一个文件,但不会检查 tFileFetch_1 组件中的最新文档日期或文件名命名。

返回的 JSON 如下所示:

{
"documents": [
    {
        "documentDate ": 200119,
        "documentLink": "someLink1",
    },
    {
        "documentDate ": 200119,
        "documentLink": "someLink2",
    },
    {
        "documentDate ": 150119,
        "documentLink": "someLink3",
    }
   ]
}

你们知道如何解决这个问题吗?

最佳答案

我相信您正在寻找类似于以下内容的内容:

enter image description here

工作的第一部分包括:

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 响应和最大/最近日期。

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

tJava -> tExtractJsonFields -> tMap -> tFileFetch

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

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

tMap 组件将简单地执行文档日期和最大日期之间的比较,并检查是否等于将文档链接传递给 tFileFetch,否则它将忽略它。

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

希望这有帮助,而且已经足够清楚了。

关于java - 最新文件和文件的动态命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54492876/

相关文章:

java - 使用 talend open studio 解析日期会引发错误

etl - Talend 作业可能存在锁定问题

java.io.IOException : Reason for inactivity is mandatory when insert data on salesforce

Java 8 对对象列表进行排序

java - Git:将文件自动 merge 为冲突文件

java - 如何使用 servlet 创建 CSV 文件?

Java 返回退出代码 1

Java List 糟糕的添加性能

java - 如何从 SOAP header 获取 header 元素名称和值?

Talend tMSSQLInput