#python #apache-spark #pyspark #apache-spark-sql
Вопрос:
У меня есть ПиСпарк, как показано ниже:
df6 = df_n_a
.withColumn("x", explode_outer(col("x")))
.withColumn("y", when(
col('x.e')=='S', lit(None).cast("string"))
.when(col('x.e')=='C', element_at("m.n.o", -1)))
.select(
from_unixtime(col("x.w")).alias("w"),
col("x.e").alias("e"),
col("y"),
)
Я хочу заполнить столбец » y «как NULL, если x.e
это «S», а если это «C», то заполните его логикой, используя element_at, так как это массив. Проблема здесь в том, что когда начинается выполнение, даже если x.e
«S» означает «когда» для ввода как » C » выполняется. Это дает ключевую ошибку, как записи типа ‘Х.е’==’s’ в входных данных JSON не будет иметь ключи м.Н.о’. Есть ли способ, чтобы строго наложить логику, где, если x.e
==’ы’, то сделать это null, а не продолжать со следующего, когда заявление. Я пробовал с другим после первого, когда, и это все равно не сработает. Спасибо!
Комментарии:
1. Не могли бы вы, пожалуйста, добавить несколько примеров ввода и ожидаемых результатов?