更新:有人知道如何在Pyspark中做到这一点吗?
正在尝试处理SPARKSQL查询。我有两个表,如果a.id中的值出现在b.id中,则需要创建一列来标记;案例当a.ID在(从b中选择b.ID(然后"出现">,提及"不匹配的输入"a",应为EOF";"。我不能使用"JOIN",因为a.id在b.id中多次出现,并且表被搞砸了。在此处输入图像描述表a:
[ID][Description]
112毫米
121 NN
123 DD
表b:
[ID][Action]
112 A
112 B
112 C
131 A
SELECT a.ID,
CASE WHEN a.ID IN (SELECT b.ID FROM b) THEN 'appear'
ELSE 'no'
END AS Flag
FROM a
试试这个。它不那么重了。
SELECT a.ID
,ISNULL((
SELECT 'appear'
FROM b
WHERE a.ID = b.ID
), 'no'
) AS Flag
FROM a;
以下是使用OUTER APPLY回答相同问题的另一种方法。
SELECT a.ID
,CASE
WHEN hc.HitCount > 0 THEN 'appear'
ELSE 'no'
END AS Flag
FROM a
OUTER APPLY (
SELECT COUNT(1) AS HitCount
FROM b
WHERE a.ID = b.ID
) AS hc;