Ran*_*ize 8 apache-spark apache-spark-sql lateral-join
我有一个lateral join
这样的定义:
select A.id, B.value
from A
left join lateral (
select value
from B
where B.id = A.id
limit 1
) as X on true;
Run Code Online (Sandbox Code Playgroud)
它具有limit 1
内部的特殊点(在更复杂的情况下,我可以在连接中有一些额外的选项来缩小值和/或)order by
。我知道 Spark-SQL 目前还没有这样的东西,那么我怎样才能找到解决方法呢?
WITH B_Ranked AS (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY id ORDER BY [some_column]) as rn
FROM B
)
SELECT A.id, B_Ranked.value
FROM A
LEFT JOIN B_Ranked ON A.id = B_Ranked.id AND B_Ranked.rn = 1;
Run Code Online (Sandbox Code Playgroud)
这种方法应该为您提供 A 中每个 id 的 B 的第一条记录,类似于使用 LIMIT 1 的原始横向连接查询。
归档时间: |
|
查看次数: |
1254 次 |
最近记录: |