【问题标题】:Spark SQL - How to filter rows based on lookup table [duplicate]Spark SQL - 如何根据查找表过滤行[重复]
【发布时间】:2023-03-28 02:15:02
【问题描述】:

我的第一个表有数百万行和多列,例如:

ID   Name   Dept   City   State
11   sam    sales  Boston MA
22   Bob    market Atlanta GA
25   Mike   IT     SF     CA

第二个查找表包含两行数字和状态,示例如下,

No State
1  CA
2  TX

如何从第一个表中获取结果,不包括表 2 中存在状态值的行?
Spark 不支持子查询,这如何在 Spark 中完成?

【问题讨论】:

标签: sql apache-spark pyspark hiveql


【解决方案1】:
SELECT * FROM table1
WHERE state NOT IN (SELECT state FROM table2 )

【讨论】:

    【解决方案2】:

    这是通用 SQL,您可以将其调整到您的特定数据库。

    另外说明,如果您有数百万条记录,请确保您要过滤的字段具有索引。

    如果这有帮助,请告诉我。

    select * from firsttable
    where State not in (select distinct state from secondtable)
    

    【讨论】:

      【解决方案3】:

      试试这个:

       SELECT *
        FROM   Table1
         LEFT JOIN Table2     
         ON     (Table1.state =      Table2.state)
         WHERE  Table2.state        IS NULL
      

      【讨论】:

        猜你喜欢
        • 2021-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-20
        • 1970-01-01
        • 2011-03-31
        • 1970-01-01
        相关资源
        最近更新 更多