Is empty

isEmpty 检查字符串列中的值是否为空字符串("")或 null。对非字符串列调用 isEmpty 会导致错误。

语法

isEmpty(text column)

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

Metabase 如何处理空字符串和 null 值

在 Metabase 中,具有字符串 数据类型的列将为空字符串、仅包含空格的字符串 null 值(如果数据库中的列可为空)显示为空白单元格。下表展示了 isEmpty 输出的示例。

Metabase 显示 数据库值 isEmpty(值)
  null true
  "" (空字符串) true
  " " (空格) false
小猫 "小猫" false

创建布尔自定义列

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

case(isEmpty([Feedback]), true, false)

用其他值替换空字符串

您可以将 isEmptycase 表达式 结合使用,以将空字符串替换为更具描述性的内容。

例如,您可以创建一个新自定义列,当原始 [Feedback] 列为空或 null 时,该列将包含 "No feedback";当 [Feedback] 包含非空值时,则为反馈值。实现此目的的自定义表达式为:

case(isEmpty([Feedback]), "No feedback.", [Feedback])
反馈 case(isEmpty([Feedback]), "无反馈。", [Feedback])
"" "无反馈。"
null "无反馈。"
"我喜欢你的风格。" "我喜欢你的风格。"

支持的数据类型

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

限制

  • 要创建自定义列,您必须将 isEmpty 与接受布尔参数(即 truefalse)的另一个表达式结合使用。
  • isEmpty 一次只接受一个值。如果您需要处理多个列中的空字符串,您需要为 case 表达式 使用多个 isEmpty 表达式。

本节介绍可与 Metabase isEmpty 表达式互换使用的函数和公式,并附带关于如何为您的用例选择最佳选项的说明。

以下所有示例均使用 #“用其他值替换空字符串” 中的表格

反馈 case(isEmpty([Feedback]), "无反馈。", [Feedback])
"" "无反馈。"
null "无反馈。"
"我喜欢你的风格。" "我喜欢你的风格。"

SQL

在大多数情况下(除非您使用的是 NoSQL 数据库),从 查询生成器创建的问题都会被转换为针对您的数据库或数据仓库运行的 SQL 查询。

CASE WHEN (Feedback = "" OR Feedback IS NULL) THEN "No feedback"
     ELSE Feedback END

等同于 Metabase isEmpty 表达式

case(isEmpty([Feedback]), "No feedback.", [Feedback])

电子表格

如果我们的示例 反馈列 在电子表格中,其中“Feedback”位于 A 列,则公式

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

等同于 Metabase isEmpty 表达式

case(isEmpty([Feedback]), "No feedback.", [Feedback])

Python

假设示例 反馈列 在名为 df["Feedback"] 的数据框列中

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

等同于 Metabase isEmpty 表达式

case(isEmpty([Feedback]), "No feedback.", [Feedback])

延伸阅读

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

这有帮助吗?

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