根据具有多个条件的另一个表中的匹配列值过滤一个表中的行

时间:2021-02-05 18:20:11

标签: sql dataframe apache-spark

我有表 A 和表 B,我需要在其中过滤掉表 A 中的行以及表 B 中某些列上的匹配值。

以下是一些需要检查和过滤的条件:

 1. A.c1 = B.c1, A.c2 = B.c2, A.c3 = B.c3, A.c4 = B.c4, A.c5 = B.c5
 2. A.c1 = 'ALL', A.c2 = B.c2, A.c3 = B.c3, A.c4 = B.c4, A.c5 = B.c5
 3. A.c1 = 'ALL', A.c2 = 'ALL', A.c3 = B.c3, A.c4 = B.c4, A.c5 = B.c5
 4. A.c1 = 'ALL', A.c2 = 'ALL', A.c3 = 'ALL', A.c4 = B.c4, A.c5 = B.c5
 5. A.c1 = 'ALL', A.c2 = B.c2, A.c3 = 'ALL', A.c4 = B.c4, A.c5 = B.c5
 6. ....

 32. A.c1 = 'ALL', A.c2 = 'ALL', A.c3 = 'ALL', A.c4 = 'ALL', A.c5 = 'ALL'

当 A.cX 为“ALL”时,我们匹配表 B 的其他条件并过滤行。

以 32 的所有组合依此类推。

编写 SQL 查询或数据框操作的有效方法是什么。
Example Filtered output

0 个答案:

没有答案