java.lang.String对象[]的数据类型与值meta [Date]不对应

问题描述 投票:0回答:1

使用Pentaho和Python插件,我有一个传入的CSV,它有两个字段,MonthYear,我需要创建一个DateMonth包含完整的月份名称,例如“January”,“February”等。

为此,我创建pandas脚本(“创建日期”),然后添加Day字段并设置为1,然后从Month获取月份数,然后创建date_tw字段并从YearMonthDay创建日期时间。

create date输出所有字段,新的date_tw字段输出为Date类型。

enter image description here

python脚本的一个字段输出:

enter image description here

Data Output创造了一张桌子,date_twDate类型。


到目前为止,我们有:从python新创建的date_tw,它被送到Data Output,已经用date_tw创建了Date类型的表。两者都是Date类型。

但是我得到了这个错误:

date_tw日期:存在数据类型错误:java.lang.String对象[06/01/2017]的数据类型与值meta [Date]不对应

看起来我应该在CSV文件输入步骤turn off "Lazy Conversion"。这也做了。

Pentaho的熊猫脚本:

import pandas as pd
import calendar as cal

df['Day'] = 1
mapping = {v : k for k, v in enumerate(cal.month_name)}
df['Month'] = df['Month'].map(mapping) 
df['date_tw'] = ''
df['date_tw'] = pd.to_datetime(df[['Year', 'Month', 'Day']], format='%Y/%m/%d')
df['date_tw'] = df['date_tw'].dt.strftime('%m/%d/%Y')

result_df = df

Postgresql表字段:

enter image description here

数据类型匹配,延迟转换关闭。我错过了什么?

python pandas pentaho
1个回答
0
投票

Pentaho元数据包含Date类型的每个对象的日期格式。而date_tw接缝的Python script的格式为dd / mm / yyyy。

您可以通过右键单击Python script来检查任何字段的类型和格式,然后选择Output fields...。检查它是否是dd / mm / yyyy而不是你的语言环境。

如果不是,并且Python script不允许您指定日期格式,请使用最后一行的strftime进行。

© www.soinside.com 2019 - 2024. All rights reserved.