NiFi: ссылка на содержимое FlowFile в процессоре ExecuteSQL - PullRequest
0 голосов
/ 18 апреля 2019

Можно ли ссылаться на содержимое FlowFile в последующем ExecuteSQL процессоре?

Например:

  • Я использую GenerateTableFetch и ExecuteSQL для опросатаблица базы данных.
  • Далее я использую QueryRecord для преобразования результата, в частности, использую операции MAX() и GROUP BY, потому что я не могу использовать эти операторы с процессором GenerateTableFetch.

.

SELECT
    hu_id
    ,wh_id
    ,MAX(audit_timestamp) AS "newest_timestamp"
FROM FLOWFILE
GROUP BY
    hu_id
    ,wh_id
  • Мне бы хотелось иметь возможность использовать другой ExecuteSQL, чтобы сделать что-то вроде:

.

SELECT
    FLOWFILE.hu_id
    ,FLOWFILE.wh_id
    ,FLOWFILE.newest_timestamp
    ,hum.status
    ,hum.location_id
FROM FLOWFILE
INNER JOIN AAD.dbo.t_hu_master hum ON
    FLOWFILE.hu_id = hum.hu_id
    AND FLOWFILE.wh_id = hum.wh_id

...эффективная ссылка на контент Avro FlowFile для выполнения мультисоединения.

Если это невозможно, то есть ли элегантный обходной путь? Пока что единственное решение, которое я могу предложитьэто ...

  1. SplitAvro
  2. ConvertAvroToJSON
  3. EvaluateJSONPath
  4. ReplaceText (для создания группы отдельныхОператоры SQL SELECT с wh_id и hu_id), а затем ...
  5. ExecuteSQL

Любые мысли и идеи приветствуются!

1 Ответ

2 голосов
/ 18 апреля 2019

В следующем выпуске 1.10.0 вы сможете выполнять поиск в базе данных, используя LookupRecord и новый DatabaseRecordLookupService (см. NIFI-6082 ), это эффективно выполняет объединение.Тем временем я думаю, что вам понадобится что-то вроде того, что у вас есть, или обработчик сценариев (см. Страницу «Дополнительные сведения» ExecuteGroovyScript), чтобы выполнить поиск самостоятельно.

...