使用UpdateRecord处理器将Flowfile内容列从十六进制转换为十进制

时间:2019-09-13 21:40:00

标签: apache-nifi

我正在获取一个流文件,其内容之一的列为十六进制值。我的要求是派生带有相应十进制值的新列。如果我尝试使用具有替换值策略的UpdateRecord Processor作为“文字值”,并尝试通过使用$ {field.value:fromRadix(16)}更新现有字段值,则它工作正常。但是,如果我尝试使用现有列的值派生新列,则会出现运行时错误。我将替换值策略用作“记录路径值”,并将动态属性值用作$ {/ existing_column:fromRadix(16)}。您能告诉我这里缺少什么吗?

1 个答案:

答案 0 :(得分:0)

如果将策略设置为“记录路径”,则该值必须是EL评估后的有效记录路径语句,并且您拥有的语句无效: <?php $rss = new DOMDocument(); $rss->load('here I would like to echo a URL written in a text file'); $feed = array(); foreach ($rss->getElementsByTagName('item') as $node) { $item = array ( 'title' => $node->getElementsByTagName('title')->item(0)->nodeValue, 'desc' => $node->getElementsByTagName('description')->item(0)->nodeValue, 'link' => $node->getElementsByTagName('link')->item(0)->nodeValue, 'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue, ); array_push($feed, $item); } $limit = 5; for($x=0;$x<$limit;$x++) { $title = str_replace(' & ', ' &amp; ', $feed[$x]['title']); $link = $feed[$x]['link']; $description = $feed[$x]['desc']; $date = date('d-m-y H:i &#187; ', strtotime($feed[$x]['date'])); echo ''.$date.''; echo '<b><a href="'.$link.'" title="'.$title.'">'.$title.'</a></b>. '; echo ''.$description.''; echo '<hr>'; } ?> 。它将失败,因为首先要执行EL时,EL不知道${/existing_column:fromRadix(16)}的时间。

确实需要fromRadix的记录路径功能,以便您可以进行/existing_column

没有,我认为您需要执行两步过程...

步骤1-第一个UpdateRecord具有fromRadix( /existing_column, 16),以使用原始列的十六进制值创建一个新列。

第2步-第二个UpdateRecord具有/new_column = /existing_column来转换新列。