【发布时间】:2018-08-14 16:55:59
【问题描述】:
我想提取文件名并将文件名存储在 CSV 文件的现有列之一中。这个怎么做?使用哪个处理器?什么配置? 例如,我有一个文件名“FE_CHRGRSIM_20171207150616_CustRec.csv”,我想提取“FE_CHRGRSIM_20171207150616”并将此值存储在相同 CSV 文件中的现有列下。请帮忙。 TIA
【问题讨论】:
标签: regex apache apache-nifi
我想提取文件名并将文件名存储在 CSV 文件的现有列之一中。这个怎么做?使用哪个处理器?什么配置? 例如,我有一个文件名“FE_CHRGRSIM_20171207150616_CustRec.csv”,我想提取“FE_CHRGRSIM_20171207150616”并将此值存储在相同 CSV 文件中的现有列下。请帮忙。 TIA
【问题讨论】:
标签: regex apache apache-nifi
通常,“真实”文件名可用作流文件的属性,称为“文件名”。您可以将 UpdateRecord 与“字面值”的替换策略一起使用;添加名为/filename 的用户定义属性并将值设置为${filename:substringBeforeLast('.')}。您需要确保将“文件名”字段添加到您的架构中(通过 UpdateRecord 或手动添加)。如果您不提前知道您的 CSV 架构,您可以使用 InferAvroSchema,它会尝试找出答案。
如果 UpdateRecord 和架构内容似乎不适合您,另一种选择(因为它是 CSV)是使用 ReplaceText,匹配整行,然后替换为该值,后跟 ,${filename:substringBeforeLast('.')}。这应该将文件名(已删除扩展名)添加为传出 CSV 中的最后一列。
【讨论】: