我有两张桌子
订单 - 包含以下列
order_id,order_date,order_customer_id,order_status
客户 - 拥有以下列
customer_id,customer_fname,customer_lname
我想使用dataframe编写代码,这相当于在不创建表
的情况下执行以下sql查询SELECT customer_fname, customer_lname
FROM customer
WHERE customer_id NOT IN (SELECT order_customer_id
from order)
我怎样才能实现这一点。
答案 0 :(得分:1)
来自pyspark v2.1.1:
使用'left_anti'联接删除另一个表中的元素:
df_result = df_customers.join(df_orders, df_customers.customer_id == df_orders.order_customer_id, 'left_anti')
df_result = df_result.select('customer_fname', 'customer_lname')
在pyspark v2.1.1之前:
使用'left_outer'连接并删除空值:
df_result = df_customers.join(df_orders, df_customers.customer_id == df_orders.order_customer_id, 'left_outer')
df_result = df_result.where('order_id is null')
df_result = df_result.select('customer_fname', 'customer_lname')