将 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 中的流 - 还有其他方法吗?

T-SQL:带有游标的 sp_depends

T-SQL 替换函数缺少一些使用 nvarchar(max) 的匹配项

ISNULL做简单的显示字段逻辑

T-SQL 合并多行数据显示到一行