假设我有以下数据:
id value
A X
A Y
A Z
B X
C X
C Y
C W
并希望找到所有同时具有X和Y值或X和W的id。这些存储在第二个表中:
value1 value2
X Y
X W
返回:
id value1 value2
A X Y
C X Y
C X W
这需要大规模工作,其中第一个表有100M行,第二个表有数千行。我将在Impala或Hive中运行。
答案 0 :(得分:1)
您可以使用group by
,having
和一些额外的逻辑来执行此操作:
select id
from data d cross join
table2 t2
group by id, t2.value1, t2.value2
having sum(case when d.value = t2.value1 then 1 else 0 end) > 0 and
sum(case when d.value = t2.value2 then 1 else 0 end) > 0;