首页 > 解决方案 > 将 Nifi 属性值拆分为多个属性

问题描述

我有一个使用 GetFile 处理器获得的文件。

由此生成的流文件有一个属性(文件名)。

我想用“_”将这个值为“ABC_gh_1245_ty.csv”的“文件名”属性拆分为多个属性

ATTR1 = "ABC"
ATTR2 = "gh"
ATTR3 = "1245"
ATTR4 = "ty.csv"

我认为 nifi 1.7.1 中没有可用于此功能的处理器

我用谷歌搜索并找到了这个自定义处理器: https ://github.com/guvencenanguvenal/nifi-splitcreateattribute

它仍然不起作用。它与“找不到属性”出错

标签: javasplitattributesapache-nifi

解决方案


为了解决这个问题,您可以利用ExecuteScriptExecuteGroovyScript处理。下面的脚本可以很好地完成这项工作。虽然它是用 Groovy 编写的。

flowFile = session.get()

if (!flowFile)
    return

filename = flowFile.getAttribute('filename')
splits = filename.split('_')
attrsMap = [:]

splits.eachWithIndex {
    split, index -> attrsMap.put("ATTR" + index, split)
}

attrsMap.each{ k, v -> println "${k}:${v}" }
flowFile = session.putAllAttributes(flowFile, attrsMap)
session.transfer(flowFile, REL_SUCCESS)

截图

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述


推荐阅读