except命令在databrick sql(spark sql)中不起作用

nhjlsmyf  于 2021-06-24  发布在  Hive
关注(0)|答案(1)|浏览(499)

我写这个查询是为了从databricks笔记本中的两个配置单元表中获取记录的差异(我正在尝试获取结果,因为我们在mssql ie中只得到结果集的差异)

select PreqinContactID,PreqinContactName,PreqinPersonTitle,EMail,City 
  from preqin_7dec.PreqinContact where filename='InvestorContactPD.csv'
except
  select CONTACT_ID,NAME,JOB_TITLE,EMAIL,CITY 
  from preqinct.InvestorContactPD where contact_id in (
    select PreqinContactID from preqin_7dec.PreqinContact 
    where filename='InvestorContactPD.csv')


但是返回的结果集也有匹配的记录。我上面显示的记录是在结果集中出现的,但是当我根据联系人id单独检查时,它是相同的。所以我不知道为什么except也返回匹配的记录。
只是想知道如何使用sql在databrick笔记本中使用except或任何差异查找命令。
如果源数据和目标数据相同,我不希望在结果集中看到任何内容。

drkbr07n

drkbr07n1#

EXCEPT 在databricks中工作得非常好,这个简单的测试将显示:

val df = Seq((3445256, "Avinash Singh", "Chief Manager", "asingh@gmail.com", "Mumbai"))
  .toDF("contact_id", "name", "job_title", "email", "city")

// Save the dataframe to a temp view
df.createOrReplaceTempView("tmp")
df.show

sql测试:

%sql
SELECT *
FROM tmp
EXCEPT 
SELECT *
FROM tmp;

此查询不会产生任何结果。例如,是否可能有一些前导空格或尾随空格?spark也是区分大小写的,所以这也可能导致您的问题。通过应用 LOWER 所有列的函数,例如

相关问题