QueryRecord NiFi SQL от JSON с массивом в нем - PullRequest
0 голосов
/ 29 апреля 2020

Мне нужно выполнить данные из 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 вместо объект .

Кто-нибудь знает, как воплотить мою цель в реальность?

...