Apache nifi 使用ApacheNIFI在CSV中转换日期格式
我需要在ApacheNIFI环境中修改CSV文件 我的CSV看起来像文件:Apache nifi 使用ApacheNIFI在CSV中转换日期格式,apache-nifi,Apache Nifi,我需要在ApacheNIFI环境中修改CSV文件 我的CSV看起来像文件: Advertiser ID,Campaign Start Date,Campaign End Date,Campaign Name 10730729,1/29/2020 3:00:00 AM,2/20/2020 3:00:00 AM,Nestle 40376079,2/1/2020 3:00:00 AM,4/1/2020 3:00:00 AM,Heinz ... 我想将带有AM/PM值的日期转换为简单日期格式。每行从2
Advertiser ID,Campaign Start Date,Campaign End Date,Campaign Name
10730729,1/29/2020 3:00:00 AM,2/20/2020 3:00:00 AM,Nestle
40376079,2/1/2020 3:00:00 AM,4/1/2020 3:00:00 AM,Heinz
...
我想将带有AM/PM值的日期转换为简单日期格式。每行从2020年1月29日凌晨3:00:00到2020年1月29日。我读过关于UpdateRecord
处理器的文章,但有一个问题。如您所见,CSV头包含空格,我甚至不能用替换值策略(文本和记录路径)解析这些字段
有什么办法解决这个问题吗?也许我应该将标题从
广告客户ID
修改为广告客户ID
,等等?您不需要自己进行转换,您可以让您的读者和作者为您处理。要让CSV阅读器识别日期,您需要为行定义一个模式。您的模式类似于这样(我已经从列名中删除了空格,因为它们是不允许的):
要配置读卡器,请设置以下属性:
- 架构访问策略=使用“架构文本”属性
- 模式文本=(代码块上方)
- 将第一行视为Header=True
- 时间戳格式=“MM/dd/yyyy hh:MM:ss a”
- 忽略CSD标题列名=True
- 模式访问策略=继承记录模式
- 时间戳格式=“yyyy-MM-dd”
警告:这将使用新列名(在我的示例中,是不带空格的列名)重写文件,因此请记住这一点,以便在下游使用。您不需要亲自进行转换,您可以让您的读者和作者为您处理转换。要让CSV阅读器识别日期,您需要为行定义一个模式。您的模式类似于这样(我已经从列名中删除了空格,因为它们是不允许的): 要配置读卡器,请设置以下属性:
- 架构访问策略=使用“架构文本”属性
- 模式文本=(代码块上方)
- 将第一行视为Header=True
- 时间戳格式=“MM/dd/yyyy hh:MM:ss a”
- 忽略CSD标题列名=True
- 模式访问策略=继承记录模式
- 时间戳格式=“yyyy-MM-dd”
{
"type": "record",
"name": "ExampleCSV",
"namespace": "Stackoverflow",
"fields": [
{"name": "AdvertiserID", "type": "string"},
{"name": "CampaignStartDate", "type" : {"type": "long", "logicalType" : "timestamp-micros"}},
{"name": "CampaignEndDate", "type" : {"type": "long", "logicalType" : "timestamp-micros"}},
{"name": "CampaignName", "type": "string"}
]
}