scala中的多个过滤器条件,以及in和not in子句过滤器



我正在尝试使用scala做一个类似于下面的过滤器

where col1 = 'abc'col2不在(0,4)内And col3 in (1,2,3,4)

我试着写这样的东西

val finalDf: DataFrame = 
initDf.filter(col("col1") ="abc")
.filter(col("col2") <> 0)
.filter(col("col2") <> 4)
.filter(col("col3") = 1 ||col("col3") = 2 ||col("col3") = 3 ||col("col3") = 4)

val finalDf: DataFrame = 
initDf.filter(col("col1") ="abc") 
&& col("col2") != 0 && col("col2") != 4 
&& (col("col3") = 1 
|| col("col3") = 2 
|| col("col3") = 3 
|| col("col3") = 4))

似乎都不起作用。有谁能帮我一下吗?

For col操作符有点不同

使用===

For不等式=!=

如果你想使用文字,你可以使用lit function

你的例子可能像这样

dfMain.filter(col("col1") === lit("abc"))
.filter(col("col2") =!= lit(0))
.filter(col("col2") =!= lit(4))
.filter(col("col3") === lit(1) || col("col3") === lit(2) ||col("col3") === lit(3) ||col("col3") === lit(4))

你也可以使用isin来代替这个带有乘法的过滤器

如果你想了解更多关于cols操作符的信息,你可以阅读

Medium blog post part1

Medium blog post part2

相关内容

  • 没有找到相关文章

最新更新