我想在我现有的配置单元表中添加一个额外的列,这样我就可以有一个当天的当前时间戳

9fkzdhlc  于 2021-05-27  发布在  Hadoop
关注(0)|答案(2)|浏览(315)

需要在现有配置单元表中添加额外的日期列,以便它从系统中获取当天的当前日期

hive (hivejobs)>
select * from my_current_Table;
OK
name   age
Aditya  2
Aditya  7

我想在这里添加一个日期列,这样我就可以在添加一个列后立即获得当天的当前系统日期。我认为解决方法是将两个表与另一个具有当前系统日期的表连接起来。
下面是我的代码和思考过程。

alter table my_current_Table add columns( todays_date current_date());

这给了我一个错误,我找不到真正的方法去做
请帮忙。
预期产量

hive (hivejobs)> 
select * from my_current_Table;

OK
name   age  todays_date
Aditya  2   2019-02-08 13:21:50
Aditya  7   2019-02-08 13:21:50
pqwbnv8z

pqwbnv8z1#

不能在配置单元表中定义计算列。
如果要始终查询今天的日期,请使用 current_timestamp 选择中的函数:

select t.*, 
       date_format(current_timestamp,'yyyyMMdd HH:mm:ss') as todays_date 
  from my_current_Table t;

如果要添加列并存储插入记录的日期,请将列添加到表中并从自身重新加载,例如:

alter table my_current_Table  add columns(load_date string);

insert overwrite table my_current_Table 
select t.*, 
           date_format(current_timestamp,'yyyyMMdd HH:mm:ss') as load_date
      from my_current_Table t;
eqoofvh9

eqoofvh92#

下面是相同的步骤,
创建临时表
创建表my\u current\u table\u temp(name string,age int);
使用文件或现有表将数据插入my\u current\u table\u temp表:
姓名|年龄
再见| 2
再见| 7
创建一个包含最终数据的表:
创建表my\u current\u table(name string,age tinyint,todays\u date string);
从临时表中插入数据,并在此基础上添加默认值为当前日期和时间的列:
insert overwrite table my\u current\u table选择name,age,from\u unixtime(unix\u timestamp(),'dd/mm/yyyyy hh:mm')from my\u current\u table\u temp;

相关问题