处理 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列,需要将列的可见性更改为任何地方
  8. 滚动到页面底部并点击重新扫描此字段

Unfolded JSON setting

为了使JSON展开工作,该列的数据类型必须是JSON

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

支持JSON展开的数据库

查看其他Metabase版本的文档。

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