我正在尝试使用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