QueryRecord 无法写入属性

QueryRecord unable to write attribute

原始流文件内容(存储为JSON):

[
  {
    "report_date": "20210620",
    "metric_name": "mcf:assistedConversions",
    "metric_value": "0"
  },
  {
    "report_date": "20210620",
    "metric_name": "mcf:lastInteractionConversions",
    "metric_value": "9"
  }
]

我想将其转换为 AVRO 并从属性中添加其他字段。

  1. account.view.id = 187712
  2. utm.marks = utm_campaign=Beeline_2021&utm_content=banner_320х480&utm_medium =媒体&utm_source=广告&utm_term=msc

使用QueryRecord:

SELECT '${account.view.id}' AS account_view_id,
       '${utm.marks}' AS utm_marks,
        *
  FROM FLOWFILE

它抛出错误:

 org.apache.nifi.processor.exception.ProcessException: java.sql.SQLException: 
Error while preparing statement [SELECT 
'187712' AS account_view_id,
'utm_campaign=Beeline_2021&utm_content=banner_320х480&utm_medium=Media&utm_source=ad&utm_term=msc' AS utm_marks,
*
FROM FLOWFILE]

如果我从 SQL 脚本中删除 '${utm.marks}' AS utm_marks,它将起作用。但为什么 QueryRecord 无法解析 utm.marks 属性的值?意外的字符或什么? JoltTransform 工作正常。

如何解决?

更新

QueryRecord config

AvroRecordSetWritter JsonTreeReader

错误的发生是因为您对两个字段 select 然后对所有内容 select (*)。相反,您可以使用 UpdateRecord[= 将属性 account.view.idutm.marks 推入流文件20=] 然后你可以使用 *. 附加 UpdateRecord 处理器的可能配置。

或更动态的方法: