且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何在 CASE 语句中使用数组类型列值

更新时间:2023-01-19 17:03:02

您可以编写一个简单的 udf 来检查元素是否存在于数组中:

You can write a simple udf that will check if the element is present in the array :

val arrayContains = udf( (col1: Int, col2: Seq[Int]) => if(col2.contains(col1) ) 1 else 0 )

然后只需调用它并以正确的顺序传递必要的列:

And then just call it and pass the necessary columns in the correct order :

df.withColumn("hasAInB", arrayContains($"a", $"b" ) ).show

+---+---------+-------+
|  a|        b|hasAInB|
+---+---------+-------+
|  1|   [1, 2]|      1|
|  2|[2, 3, 4]|      1|
|  3|   [1, 4]|      0|
+---+---------+-------+