#apache-spark #pyspark #apache-spark-sql
Вопрос:
Я использую базы данных для объединения некоторых таблиц, которые хранятся в виде файлов parquet в ADLS. Я импортирую файлы, сохраняю фреймы данных в виде временных представлений, а затем создаю синтаксис для СОЕДИНЕНИЯ внутри spark.sql(«).
В соединении я должен воспроизвести некоторый код SQL, ранее разработанный моими коллегами, который использовал функцию T-SQL ISNULL таким образом: ISNULL(titledict.Category_Level_1, urldict.Category_Level_1)
в основном они дали значение замены, чего я не могу сделать с функцией ISNULL из SparkSQL. «titledict» и «urldict» являются псевдонимами 2 таблиц из всей логики соединения SQL. Какой был бы оптимальный способ репликации функции ISNULL из T-SQL в этой ситуации?
Ответ №1:
Существует функция объединения, которая делает то же самое. Он возвращает второе значение, если первое значение равно нулю.
df.withColumn('test', coalesce(col('test_value'), lit('Fallback value')))
Комментарии:
1. или третий, или четвертый, или следующий … добавьте столько, сколько вам нужно