来自这里的sql背景。。我在用 df1 = spark.read.jdbc
将数据从azure sql加载到Dataframe。我正在尝试筛选数据以排除符合以下条件的行:
df2 = df1.filter("ItemID <> '75' AND Code1 <> 'SL'")
Dataframe最终是空的,但当我运行等效的sql时,它是正确的。当我把它改成
df2 = df1.filter("ItemID**=**'75' AND Code1**=**'SL'")
它生成我要过滤掉的行。
删除符合条件的行以便将它们推送到sql server的最佳方法是什么?谢谢您
2条答案
按热度按时间e4yzc0pl1#
在sql世界里,
<>
手段Checks if the value of two operands are equal or not, if values are not equal then condition becomes true.
在sparksql中,它的等价物是!=
. 因此,过滤器中的sql条件-df2 = df1.filter("ItemID = '75' AND Code1 = 'SL'")
gcxthw6b2#
使用
&
操作员!=
在Pypark。<>
不推荐使用python3。Example:
```df=spark.createDataFrame([(75,'SL'),(90,'SL1')],['ItemID','Code1'])
df.filter((col("ItemID") != '75') & (col("code1") != 'SL') ).show()
or using negation
df.filter(~(col("ItemID") == '75') & ~(col("Code1") == 'SL') ).show()
+------+-----+
|ItemID|Code1|
+------+-----+
| 90| SL1|
+------+-----+