Isnull
isNull 检查一个值是否为 null,这是一种特殊的占位符,由数据库在缺少或未知数据时使用。
语法
isNull(text column)
你可以在自定义过滤器中使用 isNull,或者作为条件聚合函数 CountIf 和 SumIf 的条件。要使用 isNull 创建自定义列,你必须将 isNull 与另一个接受布尔值(例如 case)的函数结合使用。
Metabase 如何处理 null 值
在 Metabase 表中,null 值显示为空白单元格。此外,对于字符串列,空字符串和只包含空格字符的字符串也将显示为空白。
下表显示了 isNull 的输出示例。
| Metabase 显示 | 数据库值 | isNull(值) |
|---|---|---|
null |
true |
|
""(空字符串) |
false* |
|
" "(空格) |
false |
|
| 小猫 | "小猫" |
false |
*在 Oracle 和 Vertica 数据库中,空字符串被视为空值。
创建布尔自定义列
要使用 isNull 创建自定义列,您必须将 isNull 与另一个函数结合使用。例如,如果您想创建一个自定义列,当 Discount 列为 null 时包含 true,否则包含 false,您可以使用 case 表达式
case(isNull([Discount]), true, false)
用其他值替换 null 值
将 isNull 与 case 表达式结合使用,用更具描述性的内容替换缺失信息
例如,您可以创建一个新的自定义列,当原始 [Feedback] 列为 null 时包含 "未知反馈",当 [Feedback] 有值时包含实际的反馈值。实现该功能的自定义表达式是
case(isNull([Feedback]), "Unknown feedback.", [Feedback])
| 反馈 | case(isNull([Feedback]), "未知反馈。", [Feedback]) |
|---|---|
null |
"未知反馈。" |
"" |
"" |
"我喜欢你的风格。" |
"我喜欢你的风格。" |
支持的数据类型
| 数据类型 | 与 isNull 配合使用 |
|---|---|
| 字符串是 | ✅ |
| 数字 | ✅ |
| 时间戳 | ✅ |
| 布尔值 | ✅ |
| JSON | ✅ |
限制
- 在 Metabase 中,您必须将
isNull与另一个接受布尔参数(即true或false)的表达式结合使用。 isNull一次只接受一个值。如果您需要处理多个列中的空白单元格,请参阅 coalesce 表达式。- 如果
isNull对您的空白单元格似乎不起作用,您可能遇到了空字符串。请尝试使用isEmpty表达式。
相关函数
本节介绍可与 Metabase isNull 表达式互换使用的函数和公式,并附有关于如何为您的用例选择最佳选项的说明。
以下所有示例均使用 替换 null 值 示例中的表
| 反馈 | case(isNull([Feedback]), "未知反馈。", [Feedback]) |
|---|---|
null |
"未知反馈。" |
"" |
"" |
"我喜欢你的风格。" |
"我喜欢你的风格。" |
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(“未知”或“缺失”信息的占位符)。
假设我们的示例 反馈列 位于电子表格中,其中“反馈”在 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 的文档。