【问题标题】:ReplaceText Usage in Apache NiFiApache NiFi 中的 ReplaceText 用法
【发布时间】:2016-05-04 02:29:12
【问题描述】:

我正在尝试使用 Apache NiFi 中的开箱即用处理器 ReplaceText 在 .dsv 文件中进行搜索,匹配所有日期时间格式并将它们转换为日期。但是,我不确定如何配置处理器本身。我试图将我的搜索值(搜索值属性)设置为如下所示:

(0{0,1}[1-9])|(1/d)|(2/d)|(3[0-1])/(0{0,1}[1-9])|(1[0-2])/([1-9]/d):(0{0,1}/d)|(1/d)|(2[0-4]):(0{0,1}/d)|([1-5]/d)

虽然我的替换值是匹配 ${time:format("yyyy-MM-dd'")} 的正则表达式1,但我还设置了另一个名为 time 的属性,该属性又匹配 (0{0,1}[1-9])|(1/d)|(2/d)|(3[0-1])/(0{0,1}[1-9])|(1[0-2])/([1-9]/d):(0{0,1}/d)|(1/d)|(2[0-4]):(0{0,1}/d)|([1-5]/d)

这不起作用,我觉得我没有按应有的方式使用 ReplaceText。你能帮我吗?

编辑:

我应该包括我正在使用称为正则表达式替换和评估模式整个文本的替换策略。

【问题讨论】:

    标签: java regex apache-nifi


    【解决方案1】:

    我相信在 Apache 邮件列表中已经回答了类似的问题,以供参考:

    我创建了一个模板 [1],该模板显示了如何进行您描述的日期转换的示例。它从 wiki [2] 上的主模板页面链接到并命名为“DateConversion.xml”

    它首先使用 ExtractText 来查找日期字符串并将其提取到一个名为“date”的属性中。使用的正则表达式是:(\d{2}-\d{2}-\d{4} \d{2}.\d{2}.\d{2})

    然后它使用 ReplaceText 和上面相同的正则表达式的搜索值,用 ${date:toDate("dd-MM-yyyy HH.mm.ss"):format("yyyy-MM-dd HH:mm:ss+0000")}

    [1]https://cwiki.apache.org/confluence/download/attachments/57904847/DateConversion.xml?version=2&modificationDate=1462288576652&api=v2

    [2]https://cwiki.apache.org/confluence/display/NIFI/Example+Dataflow+Templates

    【讨论】:

    • Bryan,是的,我也将问题发布到了 NiFi malingList,非常感谢您的回复。我已经试用了您的模板并按预期工作。谢谢!!!
    猜你喜欢
    • 2018-10-30
    • 2020-02-20
    • 1970-01-01
    • 2019-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多