isEmpty
isEmpty 检查字符串列中的值是否为空字符串 ("") 或 null。在非字符串列上调用 isEmpty 会导致错误。
语法
isEmpty(text column)
您可以在自定义筛选器中使用 isEmpty,或将其作为条件聚合函数 CountIf 和 SumIf 的条件。要使用 isEmpty 创建自定义列,您必须将 isEmpty 与接受布尔值的其他函数(如 case)结合使用。
Metabase 如何处理空字符串和 null 值
在 Metabase 中,字符串数据类型的列将显示空字符串、空白字符字符串或 null 值的空白单元格(如果列在您的数据库中可为空)。下表显示了 isEmpty 输出的示例。
| Metabase 显示 | 数据库值 | isEmpty(value) |
|---|---|---|
null |
true |
|
"" (空字符串) |
true |
|
" " (空格) |
false |
|
| 小猫 | "小猫" |
false |
创建布尔自定义列
要使用 isEmpty 创建自定义列,您必须将 isEmpty 与另一个函数结合使用。例如,如果您想创建一个自定义列,当 Feedback 列为空或 null 时包含 true,否则包含 false,您可以使用 case 表达式
case(isEmpty([Feedback]), true, false)
用另一个值替换空字符串
您可以将 isEmpty 与 case 表达式 结合使用,用更具描述性的内容替换空字符串。
例如,您可以创建一个新的自定义列,当原始 [Feedback] 列为空或 null 时,该列将包含 "No feedback",而当 [Feedback] 具有非空值时,则包含反馈值。执行此操作的自定义表达式为
case(isEmpty([Feedback]), "No feedback.", [Feedback])
| 反馈 | case(isEmpty([Feedback]), "无反馈。", [Feedback]) |
|---|---|
"" |
"无反馈。" |
null |
"无反馈。" |
"我喜欢你的风格。" |
"我喜欢你的风格。" |
支持的数据类型
| 数据类型 | 与 isEmpty 配合使用 |
|---|---|
| 字符串是 | ✅ |
| 数字 | ❌ |
| 时间戳 | ❌ |
| 布尔值 | ❌ |
| JSON | ❌ |
限制
- 要创建自定义列,您必须将
isEmpty与另一个接受布尔参数(即true或false)的表达式结合使用。 isEmpty一次只接受一个值。如果您需要处理来自多个列的空字符串,您将需要使用多个isEmpty表达式和 case 表达式。
相关函数
本节介绍可与 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 的文档。