簡體   English   中英

字符串數組上的 Nifi QueryRecord 包含值

[英]Nifi QueryRecord on Array of String contains value

使用 Apache Nifi,我試圖找出如何在數組中查找以值開頭的字符串的記錄

給定以下數組,我只想記錄具有以 '/test2/' 開頭的標簽


[
   {
    "name":"bob",
    "tags":[ "/test1/foo","/alpha"]
   }
   ,
   {
    "name":"bill",
    "tags":[ "/test2/blah","/beta"]
   }

]

SELECT * FLOWFILE WHERE RPATH_STRING(tags, '/') LIKE '/test2/%'

due to java.lang.String cannot be cast to org.apache.nifi.serialization.record.Record: java.lang.ClassCastException: java.lang.String cannot be cast to org.apache.nifi.serialization.record.Record

我嘗試了其他一些排列,但沒有運氣。

使用 2 個處理器( ScriptedTransformProcessor -> QueryRecord )的可能解決方案:

ScriptedTransformProcessor (添加新字段tags_str - 用分隔符|連接tags中的所有元素)

  • Script LanguageGroovy
  • Script Body
record.setValue('tags_str', record.getValue('tags').join("|"))
record

Output(JSON):

[ {
  "name" : "bob",
  "tags" : [ "/test1/foo", "/alpha" ],
  "tags_str" : "/test1/foo|/alpha"
}, {
  "name" : "bill",
  "tags" : [ "/test2/blah", "/beta" ],
  "tags_str" : "/test2/blah|/beta"
} ]

查詢記錄(過濾器)

  • 過濾器(動態屬性):
SELECT name, tags 
FROM FLOWFILE 
WHERE tags_str LIKE '%/test2/%'

output(JSON):

[ {
  "name" : "bill",
  "tags" : [ "/test2/blah", "/beta" ]
} ]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM