Isnull

isNull 检查一个值是否为 null,这是一种特殊的占位符,由数据库在缺少或未知数据时使用。

语法

isNull(text column)

你可以在自定义过滤器中使用 isNull,或者作为条件聚合函数 CountIfSumIf 的条件。要使用 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 值

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

例如,您可以创建一个新的自定义列,当原始 [Feedback] 列为 null 时包含 "未知反馈",当 [Feedback] 有值时包含实际的反馈值。实现该功能的自定义表达式是

case(isNull([Feedback]), "Unknown feedback.", [Feedback])
反馈 case(isNull([Feedback]), "未知反馈。", [Feedback])
null "未知反馈。"
"" ""
"我喜欢你的风格。" "我喜欢你的风格。"

支持的数据类型

数据类型 isNull 配合使用
字符串是
数字
时间戳
布尔值
JSON

限制

  • 在 Metabase 中,您必须将 isNull 与另一个接受布尔参数(即 truefalse)的表达式结合使用。
  • 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

Numpypandas 使用 NaNNA 而不是 null

假设我们的示例 反馈列 位于名为 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.