【问题标题】:How to parse a string from the input file name in streamsets如何从流集中的输入文件名解析字符串
【发布时间】:2022-01-13 00:40:41
【问题描述】:
我需要从输入文件中提取一个字符串并将其作为字段添加到记录中。
例如,如果我的文件的文件名中有日期,则只需提取日期并将其添加为记录中的附加列。如果文件名是xyzYYYMMDD.txt,则只提取YYYYMMDD。
【问题讨论】:
标签:
string
parsing
input
streamsets
【解决方案1】:
我能够做到这一点。假设您正在谈论 Streamsets Datacollector。其余的将是实用的解析您的字符串以在 Jython Evaluator 中获取文件字符串的特定部分。
设置管道:
(目录来源)->(表达式评估器)->(Jython 评估器)->(垃圾)
==== 配置:
目录来源:
File Name Pattern: ddsample_*
First File to Process: ddsample_20211203
表达式评估器:
Field Expressions
Output Field: /filename_from_header
Field Expression: ${record:attribute('filename')}
Jython 评估器:脚本
for record in sdc.records:
try:
txt=record.value['filename_from_header']
record.value['filename_from_header'] = txt[9:]
sdc.output.write(record)
except Exception as e:
sdc.error.write(record, str(e))
然后点击 Preview 并点击 Jython evaluator: