gpt4 book ai didi

Hive 如何选择除一列之外的所有列?

转载 作者:行者123 更新时间:2023-12-04 07:31:35 25 4
gpt4 key购买 nike

假设我的表看起来像:

Col1 Col2 Col3.....Col20 Col21

现在我想选择除 Col21 之外的所有内容。我想在插入其他表之前将其更改为 unix_timestamp()。所以微不足道的方法是做这样的事情:
INSERT INTO newtable partition(Col21) 
SELECT Col1, Col2, Col3.....Col20, unix_timestamp() AS Col21
FROM oldTable

有没有办法在 hive 中实现这一目标?非常感谢你的帮助!

最佳答案

尝试设置以下属性

set hive.support.quoted.identifiers=none;

然后选择除 之外的所有列col_21:
select `(col_21)?+.+` from <table_name>; 

更多信息请引用 this关联。

然后插入语句将是
insert into <tablename> partition (col21) 
select `(col_21)?+.+` from ( --select all columns from subquery except col21
select *, unix_timestamp() AS alias_col21 from table_name --select *, create new col based on col21
)a;

通过使用这种方法,您将获得 alias_col21 作为 select 语句中的最后一列,以便您可以根据该列进行分区。

In Case of joins:



我们不能引用 单个列((t1.id)?+.+ ..etc)从每个表中删除不必要的列。
hive>insert into <tablename> partition (col21)
select * from (
select t1.* from
(--drop col21 and create new alias_col21 by using col21
select `(col21)?+.+`, unix_timestamp() AS alias_col21 from table1
) t1
join table2 t2
on t1.<col-name>=t2.<col-name>)a;

关于Hive 如何选择除一列之外的所有列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51227890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com