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 并从属性中添加其他字段。
- account.view.id = 187712
- 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.id 和 utm.marks 推入流文件20=] 然后你可以使用 *.
附加 UpdateRecord 处理器的可能配置。
或更动态的方法:
原始流文件内容(存储为JSON):
[
{
"report_date": "20210620",
"metric_name": "mcf:assistedConversions",
"metric_value": "0"
},
{
"report_date": "20210620",
"metric_name": "mcf:lastInteractionConversions",
"metric_value": "9"
}
]
我想将其转换为 AVRO 并从属性中添加其他字段。
- account.view.id = 187712
- 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.id 和 utm.marks 推入流文件20=] 然后你可以使用 *.
附加 UpdateRecord 处理器的可能配置。
或更动态的方法: