NiFi QueryRecord处理器-选择可选JSON属性

lokaqttq  于 5个月前  发布在  其他
关注(0)|答案(1)|浏览(46)

我有几个JSON对象通过QueryRecord处理器。我想从中提取一些属性,包括一些可选的属性。问题是选择可选属性会导致错误,说该列不在表中。
我尝试了一个使用**RPATH**的解决方法,看起来像这样:

SELECT is_answered,
       view_count,
       answer_count,
       score,
       last_activity_date,
       creation_date,
       question_id,
       title,
       CASE
         WHEN HAS_PATH(flowfile, '/last_edit_date') THEN
          RPATH(flowfile, '/last_edit_date')
         ELSE
          NULL
       END AS last_edit_date
  FROM flowfile

字符串
在这种情况下,last_edit_date 是一个可选属性。然而,这会引发一个错误,即 flowfile 列不存在。我试图找到另一个解决方案,它不会在select语句中包含 flowfile,但我无法找到任何东西。如何解决这个问题的任何想法

jckbn6z7

jckbn6z71#

QueryRecord的SQL部分使用FlowFile的内容,所以HAS_PATH在记录中查找该字段而不是属性。相反,使用表达式语言(可能是isEmpty()函数)来生成查询的这一部分,可能类似于:

SELECT is_answered, 
  view_count, 
  answer_count, 
  score, 
  last_activity_date, 
  creation_date, 
  question_id, 
  title,
  CAST("${last_edit_date:isEmpty():ifElse(null,${last_edit_date})}" AS DATE) AS last_edit_date
FROM FLOWFILE

字符串
我没有测试它,但它应该给予您如何使用表达式语言获取属性并将值注入查询的一般概念。

相关问题