连接值不匹配?
Joined values don't match?
我的连接产生了我不理解的结果。
如果重要或相关,我会在 Impala 中使用 Parquet Tables。
我正在做的是:
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
这是出乎意料的。我希望输出是 something1, 1, null, null。加入不应该只在 test1.foo = test2.foo 时发生吗?
我也尝试使用 test1.foo = test2.foo 上的语法连接以及内部连接来执行此操作,结果相同。
有人可以向我解释一下这是怎么回事吗?我重新阅读了文档,但我不明白为什么会这样。
试试这个
select * from test1 left outer join test2 on test1.foo=test2.foo
更新:这似乎是一个工程错误。感谢大家的帮助和反馈,all
我的连接产生了我不理解的结果。
如果重要或相关,我会在 Impala 中使用 Parquet Tables。
我正在做的是:
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
这是出乎意料的。我希望输出是 something1, 1, null, null。加入不应该只在 test1.foo = test2.foo 时发生吗?
我也尝试使用 test1.foo = test2.foo 上的语法连接以及内部连接来执行此操作,结果相同。
有人可以向我解释一下这是怎么回事吗?我重新阅读了文档,但我不明白为什么会这样。
试试这个
select * from test1 left outer join test2 on test1.foo=test2.foo
更新:这似乎是一个工程错误。感谢大家的帮助和反馈,all