Isnull

isnull检查一个值是否为null,这是一个特殊类型的占位符,当数据库中缺少或未知数据时由数据库使用。

语法

isnull(text column)

您可以在自定义过滤器中使用isnull,或将其用作条件聚合CountIfSumIf的条件。要使用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值

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相当(表示“未知”或“缺失”信息的占位符)。

假设我们的示例反馈列位于一个电子表格中,其中“反馈”位于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版本的文档。

想要改进这些文档? 提出更改。