Isnull
isnull
检查一个值是否为null
,这是一个特殊类型的占位符,当数据库中缺少或未知数据时由数据库使用。
语法
isnull(text column)
您可以在自定义过滤器中使用isnull
,或将其用作条件聚合CountIf
和SumIf
的条件。要使用isnull
创建自定义列,您必须将其与接受布尔值的其他函数组合,如case
。
Metabase如何处理空值
在Metabase表中,null
显示为空白单元格。此外,对于字符串列,空字符串和只包含空白字符的字符串也将显示为空白。
下表显示了isnull
的输出示例。
Metabase显示 | 数据库值 | isnull(value) |
---|---|---|
null |
true |
|
"" (空字符串) |
false * |
|
" " (空白) |
false |
|
kitten | "kitten" |
false |
在Oracle和Vertica数据库中,空字符串被视为null。
创建布尔自定义列
要使用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])
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值示例中的表格。
Feedback | 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
相当(表示“未知”或“缺失”信息的占位符)。
假设我们的示例反馈列位于一个电子表格中,其中“反馈”位于A列,那么公式
=IF(ISNA(A2), "Unknown feedback.", A2)
等同于Metabase的isnull
表达式。
case(isnull([Feedback]), "Unknown feedback.", [Feedback])
Python
假设我们的示例反馈列位于名为df["Feedback"]
的数据帧列中。
df["Custom Column"] = np.where(df["Feedback"].isnull(), "Unknown feedback.", df["Feedback"])
等同于Metabase的isnull
表达式。
case(isnull([Feedback]), "Unknown feedback.", [Feedback])
进一步阅读
阅读其他Metabase版本的文档。