Isnull

isNull 检查一个值是否为 null,这是一种特殊的占位符,当某些内容缺失或未知时,数据库会使用它。

语法

isNull(text column)

您可以在 自定义过滤器 中使用 isNull,或者作为条件聚合 CountIfSumIf 的条件。要使用 isNull 创建自定义列,您必须将 isNull 与接受布尔值的另一个函数(如 case)结合使用。

Metabase 如何处理 null 值

在 Metabase 表中,null 值显示为空白单元格。此外,对于字符串列,空字符串和仅包含空格字符的字符串也将显示为空白。

下表展示了 isNull 的输出示例。

Metabase 显示 数据库值 isNull(value)
  null true
  "" (空字符串) false*
  " " (空格) false
kitten "kitten" false

*在 Oracle 和 Vertica 数据库中,空字符串被视为 null 值。

创建布尔自定义列

要使用 isNull 创建自定义列,您必须将 isNull 与另一个函数结合使用。例如,如果您想创建一个自定义列,当 Discount 列为 null 时显示 true,否则显示 false,您可以使用 case 表达式

case(isNull([Discount]), true, false)

将 null 值替换为另一个值

isNullcase 表达式结合使用,以用更具描述性的内容替换缺失的信息。

例如,您可以创建一个新的自定义列,当原始的 [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 与接受布尔参数(即 truefalse)的另一个表达式结合使用。
  • 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 值(“未知”或“缺失”信息的占位符)。

假设我们样本的 feedback 列在电子表格中,其中“Feedback”在 A 列,那么公式

=IF(ISNA(A2), "Unknown feedback.", A2)

相当于 Metabase isNull 表达式

case(isNull([Feedback]), "Unknown feedback.", [Feedback])

Python

Numpypandas 使用 NaNNA 而不是 null

假设我们样本的 feedback 列在名为 df["Feedback"] 的数据框列中

df["Custom Column"] = np.where(df["Feedback"].isnull(), "Unknown feedback.", df["Feedback"])

相当于 Metabase isNull 表达式

case(isNull([Feedback]), "Unknown feedback.", [Feedback])

延伸阅读

阅读其他版本的 Metabase 的文档。

这有帮助吗?

感谢您的反馈!
想改进这些文档? 提出更改建议。
© . This site is unofficial and not affiliated with Metabase, Inc.