Pyspark SQL 哪里不在?
Pyspark SQL WHERE NOT IN?
我正在尝试查找 nodes2
但不在 nodes1
中的所有内容。
spark.sql("""
SELECT COUNT(*) FROM
(SELECT * FROM nodes2 WHERE NOT IN
(SELECT * FROM nodes1))
""").show()
出现以下错误:
"cannot resolve '
不是' given input columns: [nodes2.~id, nodes2.~label];
是否可以在 Pyspark 中进行这种集差操作?
用 NOT IN 匹配单列:
你需要用where定义一些列吗?您要为 NOT 运算符匹配哪个?
如果是这样,那么,例如,您要检查 id
spark.sql("""
SELECT COUNT(*) FROM
(SELECT * FROM nodes2 WHERE id NOT IN
(SELECT id FROM nodes1))
""").show()
用 NOT IN 匹配多列(或整行):
或者如果你真的想匹配完整的行(所有列),在所有列上使用类似 concat 的东西来匹配
spark.sql("""
SELECT COUNT(*) FROM
(SELECT * FROM nodes2 as WHERE CONCAT(id,label) NOT IN (SELECT CONCAT(id,label) FROM nodes1))
""").show()
或使用别名
spark.sql("""
SELECT COUNT(*) FROM
(SELECT * FROM nodes2 n2 as WHERE CONCAT(n2.id,n2.label) NOT IN (SELECT CONCAT(n1.id,n1.label) FROM nodes1 n1))
""").show()
我正在尝试查找 nodes2
但不在 nodes1
中的所有内容。
spark.sql("""
SELECT COUNT(*) FROM
(SELECT * FROM nodes2 WHERE NOT IN
(SELECT * FROM nodes1))
""").show()
出现以下错误:
"cannot resolve '
不是' given input columns: [nodes2.~id, nodes2.~label];
是否可以在 Pyspark 中进行这种集差操作?
用 NOT IN 匹配单列:
你需要用where定义一些列吗?您要为 NOT 运算符匹配哪个?
如果是这样,那么,例如,您要检查 id
spark.sql("""
SELECT COUNT(*) FROM
(SELECT * FROM nodes2 WHERE id NOT IN
(SELECT id FROM nodes1))
""").show()
用 NOT IN 匹配多列(或整行):
或者如果你真的想匹配完整的行(所有列),在所有列上使用类似 concat 的东西来匹配
spark.sql("""
SELECT COUNT(*) FROM
(SELECT * FROM nodes2 as WHERE CONCAT(id,label) NOT IN (SELECT CONCAT(id,label) FROM nodes1))
""").show()
或使用别名
spark.sql("""
SELECT COUNT(*) FROM
(SELECT * FROM nodes2 n2 as WHERE CONCAT(n2.id,n2.label) NOT IN (SELECT CONCAT(n1.id,n1.label) FROM nodes1 n1))
""").show()