gpt4 book ai didi

csv - Apache NiFi : Creating new column using a condition

转载 作者:行者123 更新时间:2023-12-04 16:03:09 24 4
gpt4 key购买 nike

我问过类似的问题。但是我无法通过这种方法找到解决问题的方法。我有一个看起来像这样的 csv:

studentID,regger,age,number
123,west,12,076392367
456,nort,77,098123124
231,west,33,076346325

我想新增一列,根据number字段的数据进行赋值,就是这个逻辑。

如果数字列中数据的前 4 位数字等于“0763”,则名为 (status) 的新列必须设置为 INSIDE,或者如果它是任何其他值,则它的 OUTSIDE

如逻辑中所述,输出必须如下所示:

studentID,regger,age,number,status
123,west,12,076392367,INSIDE
456,nort,77,098123124,OUTSIDE
231,west,33,076346325,INSIDE

我的方法

我试图通过首先将数字列复制到状态列来实现这一点。然后尝试取前 4 位数字并进行处理。

希望您能向 Nifi Workflow 提出一种方法,使之成为可能。

最佳答案

我使用了两次 UpdateRecord 处理器并得到了你想要的结果。

输入

我从您输入的数据开始。

studentID,regger,age,number
123,west,12,076392367
456,nort,77,098123124
231,west,33,076346325

过程

首先,设置UpdateRecord处理器如下:

Record Reader               CSVReader
Record Writer CSVRecordSetWriter
Replacement Value Strategy Record Path Value
/status /number

它将创建新列 status,其值为 number 列。

其次,第一个输出应该转到另一个带有选项的UpdateRecord处理器

Record Reader               CSVReader
Record Writer CSVRecordSetWriter
Replacement Value Strategy Literal Value
/status ${field.value:substring(0,4):equals('0763'):ifElse(${field.value:replace(${field.value},'INSIDE')},${field.value:replace(${field.value},'OUTSIDE')})}

这将为您提供最终结果。

请注意,数字列不是整数列,因此您必须将记录阅读器 CSVReader 与选项 Schema Access Strategy 设置为 Use header 中的字符串字段

输出

studentID,regger,age,number,status
123,west,12,076392367,INSIDE
456,nort,77,098123124,OUTSIDE
231,west,33,076346325,INSIDE

关于csv - Apache NiFi : Creating new column using a condition,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58946664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com