У меня есть таблица и 3 словаря.Словари имеют только 1 столбец каждый.Структура таблицы
time:string, ctn:string, url:string
после присоединения я получаю df с 6 столбцами
tableDF
.join(enq2, $"url".contains($"q2"), "left_outer")
.join(enq3, $"url".contains($"q3"), "left_outer")
.join(model, $"url".contains($"model"), "left_outer")
Мне нужно 3 столбца из таблицы, а в случае q2, q3, and model
не равны нулю, набор model
.Или в случае, если любой из q2, q3 or model
является пустым набором.
, поэтому я группирую
.groupBy($"url", $"ctn", $"timestamp")
и пытаюсь получить набор
.withColumn("model",
when($"q2".isNotNull && $"q3".isNotNull && $"model".isNotNull, collect_set($"model")
).otherwise())
, который не '
Я также пытался
.agg(get_set($"q2", $"q3", $"model").alias("model"))
, где get_set выглядит примерно как
def get_set(q2: ColumnName, q3: ColumnName, model: ColumnName):Column={
if(q2.isNotNull && q3.isNotNull && model.isNotNull)
collect_set(model)
}
, но isNotNull
возвращает Column
, и мне нужно boolean
для этого,Я не уверен, правильно ли ==null
.Или, может быть, я должен преобразовать столбец в строку и проверить его.
Любой совет?