Мне нужно выполнить данные из xml по sql, как с помощью процессора QueryRecord NiFi. Но я не нашел ни одного примера, подобного моему случаю, и я пробовал так много способов сделать это, и ни один из них не был тем, что мне нужно.
У меня есть json -подобный внешний файл потока Я помещаю данные xml и pu sh через процессор QueryRecord (см. Последовательность ниже):
"object" : {
"name" : "BLABLA",
"action" : "I",
"field" : [ {
"name" : "SOMENAME",
"type" : 3,
"value" : 5673564358
}, {
"name" : "NAME2",
"type" : 93,
"value" : "somevalue"
}, {
"name" : "SOMECODE",
"type" : 12,
"value" : "GCTR"
} ]
}
} ]
, затем пытаюсь выполнить запрос sql внутри этого процессора и взять (например) поле значение где "name" = "SOMENAME", но в моем случае самый совершенный способ сделать это выглядит так:
RPATH_STRING(object, '/field[0]/value') as SOMENAME
FROM FLOWFILE
[0] - означает взять нулевой индекс данных в массиве и затем получить его значение ( / значение) - этот подход не идеален из-за вероятности изменения положения данных (изменение индекса).
Например, этот способ RPATH(field, '/value[/name = ''SOMENAME'']')
будет работать нормально для меня, если поле было бы root в этом xml вместо объект .
Кто-нибудь знает, как воплотить мою цель в реальность?