将 T-SQL ISNULL 函数逻辑复制到 SparkSQL
Posted
技术标签:
【中文标题】将 T-SQL ISNULL 函数逻辑复制到 SparkSQL【英文标题】:Replicate T-SQL ISNULL function logic into SparkSQL 【发布时间】:2021-09-23 13:52:35 【问题描述】:我正在使用 Databricks 来连接一些在 ADLS 中存储为 parquet 文件的表。我正在导入文件,将数据帧保存为 TEMP VIEW,然后在 spark.sql('') 中构建 JOIN 的语法。
在 Join 中,我必须复制我的同事以前开发的一些 SQL 代码,这些代码以这种方式使用 T-SQL ISNULL 函数:
ISNULL(titledict.Category_Level_1, urldict.Category_Level_1)
基本上他们给出了替换值,这是我不能用 SparkSQL 的 ISNULL 函数做的事情。
“titledict”和“urldict”是整个 SQL JOIN 逻辑中 2 个表的别名。
在这种情况下,从 T-SQL 复制 ISNULL 函数的最佳方法是什么?
【问题讨论】:
【参考方案1】:有一个coalesce 函数可以做同样的事情。如果第一个值为空,则返回第二个值。
df.withColumn('test', coalesce(col('test_value'), lit('Fallback value')))
【讨论】:
或第三个,或第四个,或下一个......根据需要添加任意数量以上是关于将 T-SQL ISNULL 函数逻辑复制到 SparkSQL的主要内容,如果未能解决你的问题,请参考以下文章
为啥 T-SQL ISNULL() 截断字符串而 COALESCE 不截断?
使用 IF..ELSE IF 控制 T-SQL SP 中的流 - 还有其他方法吗?