使用 JSON
过滤 JSON
在查询构建器中,Metabase 无法解析列中的 JSON,因此您只能按“为空”或“不为空”进行过滤。
JSON 展开
对于某些数据库,Metabase 可以将 JSON 列展开到其组成字段中,然后您可以使用查询构建器对这些字段进行过滤。
这是一个包含 JSON 列的表。
Metabase 可以展开该 JSON 列,以便 JSON 对象中的每个键都在表中获得自己的列。以下是上图所示 JSON 列的表的展开字段
以下是在表中看到的值
这种展开允许您过滤原始 JSON 对象中找到的值。
Metabase 将使用包含 JSON 的原始列的名称作为展开的列名的前缀。您可以在管理设置 > 表元数据中更改列名,或者通过创建模型并编辑列元数据来更改列名。
为数据库切换 JSON 展开
如果您注意到 JSON 展开对性能产生影响,我们建议将其关闭。
要为数据库关闭 JSON 展开
- 点击右上角的齿轮图标。
- 选择管理设置
- 访问数据库选项卡。
- 选择相关的数据库。
- 点击显示高级选项。
- 切换允许展开 JSON 列。
- 向下滚动并点击保存更改按钮。
- 点击立即同步数据库架构。
- 点击立即重新扫描字段值。
为特定列切换 JSON 展开
如果性能下降,或者您宁愿将 JSON 保留在原始列中,则可以在各个字段的设置中关闭展开。
- 点击右上角的齿轮图标。
- 选择管理设置。
- 访问表元数据选项卡。
- 选择包含您要更新的字段的数据库。
- 选择包含该字段的表。
- 选择包含原始 JSON 的字段
- 滚动到 展开 JSON 选项,然后选择是或否。如果列已展开,Metabase 将隐藏此 JSON 列,因此如果您希望 JSON 列再次可见,则需要将列的可见性更改为到处可见。
- 向下滚动并点击重新扫描此字段。
为了使 JSON 展开工作,列的数据类型必须是 JSON
例如,如果您上传包含 JSON 的 CSV,您可能需要更新数据库中的数据/类型。请注意,您无法通过 Metabase 编辑数据类型;您只能更改其字段类型。因此,即使 Metabase 中的字段类型是 包含 JSON 的字段
,如果数据/类型不是 JSON
,Metabase 也不会为您提供展开列的选项。您需要在数据库本身中更改列类型。
支持 JSON 展开的数据库
关于 BigQuery 的注意事项:Metabase 支持 BigQuery 中的 STRUCT 数据类型,但它不会展开存储在 BigQuery 中作为 JSON
类型的 JSON。如果您的数据以 STRUCT
类型存储在 BigQuery 中,则可以查询表的嵌套字段。一些背景知识:BigQuery 与其他数据库的不同之处在于,嵌套字段是表定义本身的一部分。因此,当 Metabase 与您的 BigQuery 数据库同步时,它将能够获取有关您的任何表的元数据,包括包含嵌套字段的表。但是,查询嵌套字段不扩展到 BigQuery 中的数组 (REPEATED (STRUCT))。
阅读其他Metabase 版本的文档。