hive - Hive 如何选择除一列之外的所有列?
问题描述
假设我的表看起来像:
Col1 Col2 Col3.....Col20 Col21
现在我想选择除 Col21 之外的所有内容。在插入其他表之前,我想将其更改为 unix_timestamp() 。因此,简单的方法是执行以下操作:
INSERT INTO newtable partition(Col21)
SELECT Col1, Col2, Col3.....Col20, unix_timestamp() AS Col21
FROM oldTable
有没有办法在蜂巢中实现这一目标?非常感谢你的帮助!
解决方案
尝试设置以下属性
set hive.support.quoted.identifiers=none;
然后选择除col_21:
select `(col_21)?+.+` from <table_name>;
有关更多信息,请参阅此链接。
然后插入语句将是
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;
通过使用这种方法,您将在 select 语句中将 alias_col21作为最后一列,以便您可以基于该列进行分区。
在连接的情况下:
我们不能从每个表中引用单独的列((t1.id)?+.+
..etc),所以在 select 语句中删除不必要的列。
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;
推荐阅读
- c++ - 在 Unreal Engine 4.22 上降低 C++ 的时间复杂度
- visual-studio-2015 - Visual Studio 2015 错误。项目的默认 XML 命名空间必须是 MSBuild XML 命名空间
- java - 如何使用 FCM 在 android 中配置令牌到令牌通知?
- c# - 通过 WebAPI C# ASP.Net MVC 从外部网站提取数据
- c# - 具有扩展数据的 DynamoDb 持久性模型
- python - 为什么只有这些 xlwt 函数起作用?
- django - 怀疑如何用 Django 和 PostgreSQL 设计数据,因为一年中的每个小时都有一个值
- java - 当代码运行到 (IConnectivityManager$Stub$Proxy.getActiveNetworkInfo) 时,空对象引用上的“java.util.Iterator java.util.List.iterator()”
- elasticsearch - 如何在弹性搜索查询中动态分页
- php - 如何在不检查php中的内联html标签的情况下替换字符串