gpt4 book ai didi

csv - Apache Nifi : Replacing values in a column using Update Record Processor

转载 作者:行者123 更新时间:2023-12-04 10:58:00 32 4
gpt4 key购买 nike

我有一个 csv,它看起来像这样:

name,code,age
Himsara,9877,12
John,9437721,16
Razor,232,45

我要换列 code根据一些正则表达式。我的逻辑显示在下面的 Scala 代码中。
if(str.trim.length == 9 && str.startsWith("369")){"PROB"}
else if(str.trim.length < 8){"SHORT"}
else if(str.trim.startsWith("94")){"LOCAL"}
else{"INT"}

我用了 UpdateRecord处理器替换 code中的数据柱子。我添加了一个名为 /code 的属性其中包含值。
${field.value:replaceFirst('^[0-9]{1,8}$','SHORT'):replaceFirst('[94]\w+','OFF_NET')}
作品 替换代码时
  • 长度小于 8 且带有“SHORT”
  • 以“LOCAL”开头的 94

  • I am unable to find a way to replace data in the column, code when it's equal to 8 digits AND when it starts with 0. Also how can I replace the data if it doesn't fall into any condition mentioned above. (Situation which the data should be replaced with INT)



    希望您可以建议将工作流程或值添加到更新记录中的属性中,以实现上述两个替换。

    最佳答案

    有一个lengthstartsWith职能。

    ${field.value:length():lt(8):ifElse(
    'SHORT', ${field.value:startsWith(94):ifElse(
    'LOCAL', ${field.value:length():equals(9):and(${field.value:startsWith(369)}):ifElse(
    'PROB', 'INT'
    )})})}

    为了便于识别这些功能,我已经放置了换行符,但应该将其删除。

    顺便说一下,INT 的意思是要替换一些字符串值吗?对困惑感到抱歉。

    好吧,如果你只想使用正则表达式,你可以试试下面的代码。
    ${field.value
    :replaceFirst('[0-9]{1,8}', 'SHORT')
    :replaceFirst('[94]\w+', 'OFF_NET')
    :replaceFirst('369[0-9]{6}', 'PROB')
    :replace(${field.value}, 'INT')
    }

    关于csv - Apache Nifi : Replacing values in a column using Update Record Processor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59047663/

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