Мне нужно поменять значение нескольких столбцов, основываясь на условии одного из них, и вместо этого использовать API sparkQL
У меня есть DataFrame со столбцами [A, B, C, X, Y, Z] и имеет строки с этим шаблоном:
(1,2,3, ноль, ноль, ноль),(3,3,3, NULL, NULL, NULL),(NULL, NULL, NULL, 5,3,2),(3,1,1, NULL, NULL, NULL),(null, null, null, 3,4,1)
Я хотел бы добиться обмена значениями между группами столбцов (a, b, c) и (x, y, z)когда любая строка имеет условие, что значение в столбце A является нулевым.Поэтому после выполнения таблица должна иметь значения только в столбцах [A, B, C].Я попытался сделать что-то вроде
val result = df.withColumn("A", when(col("A").isNull, col("X")).withColumn("X", when(col("A").isNull,lit(null)).withColumn("B", when(col("A").isNull, col("Y")).withColumn("Y", when(col("A").isNull,lit(null)).withColumn("C", when(col("A").isNull, col("Z")).withColumn("Z", when(col("A").isNull,lit(null)).
Удивительно, но выполнить только это:
val result = df.withColumn ("A", когда (col ("A")).isNull, col ("X")). withColumn ("X", когда (col ("A"). isNull, горит (ноль))
Я получил ожидаемый результат для столбцапоменять местами я определил с этой строкой "(5, null, null, null, 3,2)". Но когда я добавляю операции "withColumn" для других 2 столбцов, я получаю строки, подобные этой "(5, null, null, null, 3,2) "
Буду признателен за любую помощь.