我的加入产生了我不明白的结果。
如果这是重要的或相关的,我用Parquet表在 Impala 。
我要做的是:
create table test1(foo string, bar int) stored as parquet;
create table test2(foo string, bar int) stored as parquet;
insert into test1 values ("something1",1);
insert into test2 values ("something2",2);
检查以确保工作正常:
select * from test1;
给我输出:
+----------------------+
| foo | bar |
+----------------------+
| something1 | 1 |
+----------------------+
1 rows
以及
select * from test2;
给我输出:
+----------------------+
| foo | bar |
+----------------------+
| something2 | 2 |
+----------------------+
1 rows
到目前为止一切都很好。但是现在当我尝试用
select * from test1 left outer join test2 using (foo);
我得到:
+---------------------------------------------+
| foo | bar | foo | bar |
+---------------------------------------------+
| something1 | 1 | something2 | 2 |
+---------------------------------------------+
1 rows
真是出人意料。我希望输出是1,1,null,null。连接不应该只在test1.foo=test2.foo时发生吗?
我还尝试了在test1.foo=test2.foo上使用syntax join以及内部连接来实现这一点,并看到了相同的结果。
有人能给我解释一下这是怎么回事吗?我重新阅读了文档,我不明白为什么会这样。
2条答案
按热度按时间mbskvtky1#
试试这个
vi4fp9gy2#
更新:这似乎是一个工程错误。谢谢你的帮助和反馈