isNull
isNull
检查值是否为 null
,null
是数据库在信息缺失或未知时使用的特殊占位符。
语法
isNull(text column)
您可以在自定义筛选器中使用isNull
,或者作为条件聚合函数CountIf
和SumIf
的条件。要使用isNull
创建自定义列,您必须将isNull
与其他接受布尔值(如case
)的函数结合使用。
Metabase 如何处理 null 值
在 Metabase 表格中,null
值显示为空白单元格。此外,对于字符串列,空字符串和仅包含空白字符的字符串也将显示为空白。
下表显示了 isNull
的输出示例。
Metabase 显示 | 数据库值 | isNull(值) |
---|---|---|
null |
true |
|
"" (空字符串) |
false * |
|
" " (空白字符) |
false |
|
kitten | "kitten" |
false |
*在 Oracle 和 Vertica 数据库中,空字符串会被视为 null。
创建布尔自定义列
要使用isNull
创建自定义列,您必须将isNull
与其他函数结合使用。例如,如果您想创建一个自定义列,当Discount
列为 null 时其值为true
,否则为false
,您可以使用case 表达式
case(isNull([Discount]), true, false)
用另一个值替换 null 值
将 isNull
与 case 表达式
结合使用,以更具描述性的内容替换缺失信息。
例如,您可以创建一个新的自定义列,当原始 [Feedback]
列为 null 时,该列将包含 "Unknown feedback"
,而当 [Feedback]
具有值时,则包含实际的反馈值。实现此目的的自定义表达式是:
case(isNull([Feedback]), "Unknown feedback.", [Feedback])
反馈 | case(isNull([Feedback]), "Unknown feedback.", [Feedback]) |
---|---|
null |
"Unknown feedback." |
"" |
"" |
"I like your style." |
"I like your style." |
接受的数据类型
数据类型 | 适用于 isNull |
---|---|
字符串 | ✅ |
数字 | ✅ |
时间戳 | ✅ |
布尔 | ✅ |
JSON | ✅ |
限制
- 在 Metabase 中,您必须将
isNull
与另一个接受布尔参数(即true
或false
)的表达式结合使用。 isNull
一次只接受一个值。如果您需要处理多个列中的空白单元格,请参阅 coalesce 表达式。- 如果
isNull
似乎对您的空白单元格无效,您可能正在处理空字符串。请尝试使用isEmpty
表达式。
相关函数
本节介绍可以与 Metabase isNull
表达式互换使用的函数和公式,并附有关于如何为您的用例选择最佳选项的说明。
以下所有示例均使用替换 null 值示例中的表格。
反馈 | case(isNull([Feedback]), "Unknown feedback.", [Feedback]) |
---|---|
null |
"Unknown feedback." |
"" |
"" |
"I like your style." |
"I like your style." |
SQL
在大多数情况下(除非您使用 NoSQL 数据库),从查询构建器创建的问题会转换为针对您的数据库或数据仓库运行的 SQL 查询。
CASE WHEN Feedback IS NULL THEN "Unknown feedback",
ELSE Feedback END
等同于 Metabase isNull
表达式
case(isNull([Feedback]), "Unknown feedback.", [Feedback])
电子表格
电子表格中的 #N/A
等同于数据库中的 null
值(“未知”或“缺失”信息的占位符)。
假设我们的示例反馈列位于电子表格中,并且“Feedback”在 A 列,那么公式
=IF(ISNA(A2), "Unknown feedback.", A2)
等同于 Metabase isNull
表达式
case(isNull([Feedback]), "Unknown feedback.", [Feedback])
Python
Numpy 和 pandas 使用 NaN
或 NA
代替 null
。
假设我们的示例反馈列在一个名为 df["Feedback"]
的数据框列中
df["Custom Column"] = np.where(df["Feedback"].isnull(), "Unknown feedback.", df["Feedback"])
等同于 Metabase isNull
表达式
case(isNull([Feedback]), "Unknown feedback.", [Feedback])
延伸阅读
阅读其他Metabase 版本的文档。