以下几种可能都会被理解为空值:
null:用于表示数据项不包含有效数据,缺少数据或数据是未知的。可以存在于所有类型数据里。在不同类型数据库数据表里,可能显示为空白,或者显示为 null。
空字符串:空文本字符串,仅存在文本类型里,因为不可见,可能和 null 混淆。
文本 null:实际上是文本的 'null', 包含大小写和混写格式。部分场景里,用户可能出于和有值的数据区分开的目的,在数据落库时,把文本字段里的空值替换为文本字符串 'null'。
任何表达式或者函数公式里,任意部分值为 null 时,最终结果通常返回 null 值。例如 CONCAT([字段A], [字段B]),某一行数据中有 null 值,则该行结果返回 null。
使用 COUNT([字段]) 计数统计会过滤掉 null 值,但是不会过滤掉空字符串。
ETL里列转行的时候,要转换的字段为 null 值的话,所在数据行会整个被过滤掉,导致数据丢失。
字段类型和值内容不符合时,数据显示为 null,会误导用户认为无数据。
概览页面 -- 筛选数据 -- 选择字段,类型“选择”。null值显示为 (null),空字符串显示为空白,其他文本类型 null 则作为文本显示。数据集中无法对字段中的空值直接替换和处理,建议在ETL里操作,或者新建计算字段用函数处理。

数据探查(4.9及以后版本):在需要的节点后面增加“数据探查”节点,选择字段,查看该字段的 null 值和枚举值概况。

Null值替换:把 null 值替换为其他值;值替换:可以替换空字符串(或null)为其他值。替换目标值必须和字段本身类型保持一致。

针对需要根据一定逻辑判断并替换空值的情况,可以添加计算字段,使用Spark SQL函数进行处理。常用的空值处理函数如下:
用途 | 函数 | 举例 | 结果 |
判断是否为 null 值 | isnull([expr]) ; | true/false | |
判断是否非 null 值 | isnotnull([expr]) ; | true/false | |
把 expr1 里的 null 值替换为 expr2 | ifnull([expr1], [expr2]) | ifnull(null,0) | 0 |
nvl([expr1], [expr2]) | nvl(null,0) | 0 | |
如果 expr1 不为 null 则返回 expr2,否则返回 expr3 | nvl2([expr1], [expr2], [expr3]) | nvl2(NULL, 2, 1) | 1 |
返回第一个非 null 值的值 | coalesce([expr1], [expr2], ...) | coalesce(NULL, 1, NULL) | 1 |
如果2个 expr 相同则返回 null,否则返回 expr1 | nullif([expr1], [expr2]) | nullif(2, 2) | null |
判断是否为空字符串 | [expr]='' |