Я создал одну временную таблицу, используя мой фрейм данных в spark sql, используя mydf.createOrReplaceTempView ("Объединить_таблицу"). Все типы данных полей отображаются в виде строки. В этой временной таблице у меня есть 4 столбца procuredValue, minMargin, maxMargin, Price и некоторые другие столбцы. Во всех этих 4 столбцах у меня есть значения, такие как 373.58 ... et c. Теперь мне нужно выбрать данные на основе какого-либо условия и отобразить данные в виде нового столбца. «Окончательная цена». Я пытаюсь сделать это с помощью оператора Case, но получаю ошибку ниже. несоответствующий ввод '1st_case', ожидающий EOF (строка 3, позиция 5), может кто-нибудь подсказать, как мне это сделать.
val d1=spark.sql(""" SELECT cast(PV as FloatType),cast(mxM as FloatType),
cast(mnM as FloatType ) , cast(procuredValue+ mxM as FloatType) as 1st_case,
cast(PV+ mnM as FloatType) as 2nd_case,
case
WHEN 1st_case < price THEN 1st_case
WHEN 2ndcse < price THEN 2ndcse
WHEN PV <price && saleevent = 'Sp' THEN 'price'
WHEN price < 'PV' && saleevent = 'Sp' && sclass = 'VH' THEN 0.9* PV
ELSE PV
END AS Final_price
FROM combine_table""")