如何在apache配置单元中插入日期、布尔字段值?

6ojccjat  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(341)

这是我的示例数据集。


# cust_id,  #cust_name, #odr_date,#shipdt,#Courer,#recvd_dt,#returned or not,#returned dt,#reson of return

GGYZ333519YS,Allison,01-01-2017,03-01-2017,Fedx,06-01-2017,**no**,null,null
GGYZ333519YS,Allison,08-01-2017,10-01-2017,Delhivery,13-01-2017,**yes**,15-01-2017,Damaged Item

并创建了表结构。

create table order
( 
cust_id string,
cust_name string,
order_date date,
ship_date date,
courier_name string,
received_date date,
is_returned boolean,
returned_date date,
reason string
)
row format delimited
fields terminated by ','
lines terminated by '\n'
stored as textfile;

使用load命令将数据加载到order表中。日期字段和布尔字段为空。你知道吗?如何解决这个问题。

9wbgstp7

9wbgstp71#

日期应采用兼容格式“yyyy-mm-dd”,以便正确插入到日期中。布尔值应该是(true,false)之一。
解决方案是将列定义为字符串,并在选择期间进行转换,或者在加载到表中之前转换输入数据。
这是在选择定义为字符串的if列时转换数据的方法:

select
      from_unixtime(unix_timestamp( returned_date ,'dd-MM-yyyy'), 'dd-MMM-yyyy') as returned_date,
      case when is_returned like '%no%' then false
           when is_returned like '%yes%' then true
           --else will be null by default
       end as is_returned

相关问题