【发布时间】:2020-01-29 20:38:38
【问题描述】:
Apache Hive(版本 1.2.1000.2.6.5.0-292)
我有一个表 A,它有很多列。我正在尝试仅从 A 中选择我需要的列,以及我希望在键值对表 B 中存在的列。(下面的示例)。我可以查询 B 以获取我需要的列,但我正在努力将此 sql 查询的输出作为 A 中使用的查询的列。有没有办法在一个 sql 查询中做到这一点?我可以编写一个 python 程序来创建 SQL,但为了方便最终用户,我宁愿只在一个查询中使用它。
表的 DDL
create table A (
a1 string,
a2 string,
a3 string,
b1 string,
b2 string,
b3 string,
)
create table B (
key string,
value string,
)
表 B(键值表)中的数据。需要注意的是,value 列中的数据不能通过key 列中的对应值来推断。为了简单起见,我将它们写成a1,a2。
key,value
a,a1
a,a2
a,a3
b,b1
b,b2
b,b3
查询以获取正确的列 = select value from B where key='a'
当您将此查询的结果与表 A 查询合并时,您应该得到此 sql 语句
select a1,a2,a3 from A
如您所见,我们正在尝试导出表 A 中使用的列
我的第一次尝试没有成功:
select
(select value from B where key='a')
from A
这样做的正确方法是什么?
提前致谢!
【问题讨论】:
-
你能展示一些示例输入和预期输出吗?
-
您需要使用某个键进行 JOIN。如果要添加列并从其他数据集中填充它们。应该连接两个数据集。