Разделить значение атрибута Nifi на несколько атрибутов - PullRequest
0 голосов
/ 04 января 2019

У меня есть файл, который я получаю с помощью процессора GetFile.

Потоковый файл, сгенерированный из этого, имеет атрибут (имя файла).

Я хочу разделить этот атрибут «filename» со значением"ABC_gh_1245_ty.csv" от "_" на несколько атрибутов

ATTR1 = "ABC"
ATTR2 = "gh"
ATTR3 = "1245"
ATTR4 = "ty.csv"

Я предполагаю, что в nifi 1.7.1

нет доступных процессоров для этой функции. Я нашел Google и нашел этот пользовательский процессор.: https://github.com/guvencenanguvenal/nifi-splitcreateattribute

Это все еще не работает.Ошибка с «Атрибут не найден»

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Чтобы решить эту проблему, вы можете использовать процессор ExecuteScript или ExecuteGroovyScript.Следующий скрипт отлично справится с этой задачей.Хотя написано на Groovy.

flowFile = session.get()

if (!flowFile)
    return

filename = flowFile.getAttribute('filename')
splits = filename.split('_')
attrsMap = [:]

splits.eachWithIndex {
    split, index -> attrsMap.put("ATTR" + index, split)
}

attrsMap.each{ k, v -> println "${k}:${v}" }
flowFile = session.putAllAttributes(flowFile, attrsMap)
session.transfer(flowFile, REL_SUCCESS)

Скриншоты

enter image description here

enter image description here

enter image description here

0 голосов
/ 04 января 2019

Процессор, описанный ниже, работает отлично ...

https://github.com/guvencenanguvenal/nifi-splitcreateattribute

Ниже приведена необходимая конфигурация:

Имя атрибута разделения: ATTR1, ATTR2, ATTR3, ATTR4Имя атрибута, который разделяется: имя файла \ Разделитель разделений (регулярное выражение): _

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