[英]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 Language
: Groovy
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.