使用 JSON

过滤 JSON

查询构建器中,Metabase 无法解析列中的 JSON,因此您只能通过“为空”或“不为空”进行过滤。

JSON 展开

对于某些数据库,Metabase 可以将 JSON 列展开为其组件字段,然后您可以使用查询构建器对这些字段进行过滤。

这里有一个包含 JSON 的列的表格。

A table with a JSON column

Metabase 可以展开该 JSON 列,以便 JSON 对象中的每个键都在表格中拥有自己的列。这是上面显示的包含 JSON 列的表格的展开字段

Unfolded fields

以下是表格中显示的值

Unfolded values

此展开允许您筛选原始 JSON 对象中找到的值。

Metabase 将以包含 JSON 的原始列的名称作为展开列名称的前缀。您可以在管理员设置 > 表元数据中更改列名称,或者通过创建模型并编辑列元数据来更改。

切换数据库的 JSON 展开

如果您注意到 JSON 展开对性能造成影响,我们建议将其关闭。

要关闭数据库的 JSON 展开

  1. 点击右上角的齿轮图标
  2. 选择管理员设置
  3. 访问数据库选项卡。
  4. 选择相关数据库。
  5. 点击显示高级选项
  6. 切换允许展开 JSON 列
  7. 向下滚动并点击保存更改按钮。
  8. 点击同步数据库架构
  9. 点击重新扫描字段值

切换特定列的 JSON 展开

如果性能下降,或者您希望将 JSON 保留在原始列中,您可以在其设置中关闭单个字段的展开。

  1. 点击右上角的齿轮图标
  2. 选择管理员设置
  3. 访问表元数据选项卡。
  4. 选择包含要更新字段的数据库。
  5. 选择包含字段的表格。
  6. 选择包含原始 JSON 的字段
  7. 行为部分,找到展开 JSON选项并选择。如果该列已展开,Metabase 会将此 JSON 列隐藏起来,因此如果您希望再次显示 JSON 列,则需要将该列的可见性更改为随处可见
  8. 滚动到顶部并点击过滤值按钮,然后选择重新扫描此字段

Unfolded JSON setting

要使 JSON 展开起作用,列的数据类型必须是 JSON

例如,如果您上传的 CSV 文件中包含 JSON,则可能需要更新数据库中的数据/类型。请注意,您无法通过 Metabase 编辑数据类型;您只能更改其字段类型。因此,即使 Metabase 中的字段类型为包含 JSON 的字段,如果数据/类型不是JSON,Metabase 也不会为您提供展开列的选项。您需要更改数据库本身的列类型。

支持 JSON 展开的数据库

  • BigQuery:自动启用,仅适用于STRUCT类型。

    如果您的数据以 STRUCT 数据类型存储在 BigQuery 中,您可以查询表的嵌套字段。此功能默认启用。然而,Metabase 不会展开以 JSON 类型存储在 BigQuery 中的 JSON。这是因为在 BigQuery 中,嵌套字段是*表定义本身的一部分*,所以当 Metabase 与您的 BigQuery 数据库同步时,它能够获取有关您任何表的元数据,包括包含嵌套字段的表。但是,查询嵌套字段不适用于 BigQuery 中的数组 (REPEATED (STRUCT))。

  • Druid (JDBC)
  • MongoDB:所有嵌套字段自动启用。
  • MySQL
  • PostgreSQL

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

这有帮助吗?

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