Реплицируйте логику функций T-SQL ISNULL в SparkSQL

#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. или третий, или четвертый, или следующий … добавьте столько, сколько вам нужно