我需要从hive结构中的所有列中选择*。
Hive创建表脚本如下所示
从表中选择*将每个结构显示为一列 select * from table
我的要求是将结构集合的所有字段显示为配置单元中的列。
用户不必单独编写列名。有没有人有UDF来做这件事?
答案 0 :(得分:5)
<强>演示强>
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let cell = tableView.cellForRow(at: indexPath) as UITableViewCell
//so you can do whatever you want on your cell
}
create table t
(
i int
,s1 struct<id:int,birthday:date,fname:string>
,s2 struct<id:int,lname:string>
)
;
insert into t
select 1
,named_struct('id',333,'birthday',date '1941-10-13','fname','Paul')
,named_struct('id',444,'lname','Simon')
;
insert into t
select 2
,named_struct('id',777,'birthday',date '1941-11-05','fname','Art')
,named_struct('id',888,'lname','Garfunkel')
;
select * from t
;
+-----+---------------------------------------------------+--------------------------------+
| t.i | t.s1 | t.s2 |
+-----+---------------------------------------------------+--------------------------------+
| 1 | {"id":333,"birthday":"1941-10-13","fname":"Paul"} | {"id":444,"lname":"Simon"} |
| 2 | {"id":777,"birthday":"1941-11-05","fname":"Art"} | {"id":888,"lname":"Garfunkel"} |
+-----+---------------------------------------------------+--------------------------------+
select i
,i1.*
,i2.*
from t
lateral view inline (array(s1)) i1
lateral view inline (array(s2)) i2
;
答案 1 :(得分:1)
太棒了!谢谢你,我一直在找一样的东西。实际上,看来您可以重用相同的列名。
select s1.*
from t
lateral view inline (array(s1)) s1
;
+-------+--------------+----------+
| s1.id | s1.birthday | s1.fname |
+-------+--------------+----------+
| 333 | 10/13/1941 | Paul |
| 777 | 11/5/1941 | Art |
+-------+--------------+----------+
答案 2 :(得分:0)
您可以在表顶部使用视图,也可以根据所需的模式将数据转储到其他表中。 查看语法: -
create view foodmart.customerfs_view as select rcrm.customer_id .....
from foodmart.customerfs_view