Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache nifi 插入零长度字符串的Nifi替换文本处理器_Apache Nifi - Fatal编程技术网

Apache nifi 插入零长度字符串的Nifi替换文本处理器

Apache nifi 插入零长度字符串的Nifi替换文本处理器,apache-nifi,Apache Nifi,Apache Nifi ReplaceText处理器的运行方式与我预期的不同。我不明白为什么表达式求值会在数据应该去的地方插入零长度字符串 ReplaceText处理器的配置为: 替换策略是:始终替换 评估模式为:全文 处理器链是:QueryDatabaseTable->SplitAvro->UpdateAttribute->ReplaceText->PutSQL ReplaceText处理器中的替换值为: INSERT INTO public.journal (payee, amount, b

Apache Nifi ReplaceText处理器的运行方式与我预期的不同。我不明白为什么表达式求值会在数据应该去的地方插入零长度字符串

ReplaceText处理器的配置为:

替换策略是:始终替换

评估模式为:全文

处理器链是:QueryDatabaseTable->SplitAvro->UpdateAttribute->ReplaceText->PutSQL

ReplaceText处理器中的替换值为:

INSERT INTO public.journal (payee, amount, billed_date, paid_date) 
VALUES ('${payee}', ${amount}, '${billed_date}', '${paid_date}');
它应该变成

INSERT INTO public.journal (payee, amount, billed_date, paid_date) 
VALUES ('Dead End LLC', 2000.000, ‘2018-02-01’, ‘2018-02-01’);
相反,我得到:

INSERT INTO public.journal (payee, amount, billed_date, paid_date) 
VALUES (‘’, , ‘’, ‘’);
当我看到前面UpdateAttribute处理器步骤的输出并看到

[ {
  "payee" : "Dead End LLC",
  "amount" : "2000.00",
  "billed_date" : "2018-02-01",
  "paid_date" : "2018-02-02"
} ]
这打断了我的大脑,因为表达式处理似乎工作得很好,但没有拉入正确的数据(我天真的实现假设会有)

之前的阅读让我达到了现在的水平:


获取空字符串的原因是“${payee}”、“${amount}”、“${billed_date}”、“${paid_date}”的表达式的计算结果为无值,这是因为您可能没有具有这些名称的流文件属性

您不能直接从流文件内容中的Avro中的值进入NiFi的表达式语言,您需要首先将内容中的值提取到流文件属性中

像这样的东西可能会有用

QueryDatabaseTable->SplitAvro->ConvertAvroToJson->EvaluteJsonPath->UpdateAttribute->ReplaceText->PutSQL


在EvluateJsonPath中,您可以将json中的值提取到流文件属性中。

谢谢!在将JSON路径值添加到EvaluateJsonPath处理器后,它的工作非常出色。