Последние файлы и динамическое именование файлов - PullRequest
0 голосов
/ 02 февраля 2019

Я работаю над заданием talend, которое отправляет HTTP-запрос GET для получения нескольких документов PDF.Запрос возвращает файл JSON, состоящий из: documentDate и documentLink.Я хочу получить последнюю версию documentLink (s) из documentDate и загрузить документ (ы) с компонентом 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 Ответ

0 голосов
/ 07 февраля 2019

Я полагаю, вы ищете что-то похожее на следующее:

enter image description here

Первая часть задания состоит из:

tFileInputJson (или в вашем случае tHttpRequest1) -> tSetGlobalVar -> tExtractJsonFields -> tJavaRow

tHttpRequest1 будет получать ответ JSON (может быть отсортирован или нет)

tsetGlobalV будет сохранять Jsetглобальная переменная, которая будет использоваться во второй части.

tExtractJson будет извлекать DocumentDate из каждой записи массива JSON.

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 простоb сообщение JSON и MaxDate из глобальных переменных, установленных в первой части.

tExtractJsonFields извлечет documentLink и documentDate для каждой записи массива и передает их по максимальной дате в компонент tMap.

Компонент tMap просто выполнит сравнение documentDate и максимальной даты и проверит, равен ли он передаче documentLink в tFileFetch, иначе он проигнорирует его.

Это позволяет вам отправлять только ссылки documentLink с самой последней датой.

Надеюсь, это поможет, и это достаточно ясно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...