IMPALA LEFT 加入子查询
IMPALA LEFT join with subquery
假设我有以下数据:
Table ABC
名字
组
伊布
第 1 组
克里斯蒂亚诺·罗纳尔多
第 2 组
梅西
第 1 组
爱德华多·佩雷拉·罗德里格斯
第 1 组
我想要的最终结果是什么(下面的组号是运行dom):
姓名
组
伊布
870
克里斯蒂亚诺·罗纳尔多
544
梅西
870
爱德华多·佩雷拉·罗德里格斯
870
为了实现这个结果,我编写了一个在 AWS Athena 中完美运行的查询,如下所示:
select table1.name,
subQuery1.random_cod_group
from ABC table1
left join(select group, cast(rand(1234) * 100 as integer) as random_cod_group
from ABC group by group) subQuery1
on subQuery1.group = table1.group
然而 - 令我惊讶的是 - 当我 运行 在“impala”中进行相同的查询时,显示的结果不同,如下例所示。
同一组显示不同的号码(而不是 'keeping' 同一组的相同 运行dom 号码)
姓名
组
伊布
987
克里斯蒂亚诺·罗纳尔多
478
梅西
874
爱德华多·佩雷拉·罗德里格斯
75
我真的不明白为什么...谁能帮帮我?
非常感谢!
也许您可以尝试其他方法。可能每次调用都会生成一个随机数,这意味着连接不一定是错误的。
如果不是强制生成随机数,我建议使用:
select table1.name,
subQuery1.random_cod_group
from ABC table1
left join(select group, row_number() over (order by group) as random_cod_group
from ABC group by group) subQuery1 on subQuery1.group = table1.group
假设我有以下数据:
Table ABC
名字 | 组 |
---|---|
伊布 | 第 1 组 |
克里斯蒂亚诺·罗纳尔多 | 第 2 组 |
梅西 | 第 1 组 |
爱德华多·佩雷拉·罗德里格斯 | 第 1 组 |
我想要的最终结果是什么(下面的组号是运行dom):
姓名 | 组 |
---|---|
伊布 | 870 |
克里斯蒂亚诺·罗纳尔多 | 544 |
梅西 | 870 |
爱德华多·佩雷拉·罗德里格斯 | 870 |
为了实现这个结果,我编写了一个在 AWS Athena 中完美运行的查询,如下所示:
select table1.name,
subQuery1.random_cod_group
from ABC table1
left join(select group, cast(rand(1234) * 100 as integer) as random_cod_group
from ABC group by group) subQuery1
on subQuery1.group = table1.group
然而 - 令我惊讶的是 - 当我 运行 在“impala”中进行相同的查询时,显示的结果不同,如下例所示。 同一组显示不同的号码(而不是 'keeping' 同一组的相同 运行dom 号码)
姓名 | 组 |
---|---|
伊布 | 987 |
克里斯蒂亚诺·罗纳尔多 | 478 |
梅西 | 874 |
爱德华多·佩雷拉·罗德里格斯 | 75 |
我真的不明白为什么...谁能帮帮我?
非常感谢!
也许您可以尝试其他方法。可能每次调用都会生成一个随机数,这意味着连接不一定是错误的。
如果不是强制生成随机数,我建议使用:
select table1.name,
subQuery1.random_cod_group
from ABC table1
left join(select group, row_number() over (order by group) as random_cod_group
from ABC group by group) subQuery1 on subQuery1.group = table1.group