故障排除同步、扫描和指纹识别
首先,检查您的数据是否因浏览器缓存而过时
- 清除浏览器缓存。
- 刷新您的 Metabase 页面。
- 在隐身窗口中打开您的 Metabase 页面。
确认您看到的是非缓存的表和列视图后,请标记您的数据库管理员以寻求故障排除帮助。
- 同步,如果您的表或列丢失,或者您的列数据类型不正确。
- 扫描,如果您的列值丢失或不正确(例如,在您的筛选器下拉菜单中)。
- 指纹识别,如果您触发了手动扫描,但更改未生效。
同步
- 如果您是自托管 Metabase,请确保您的 Metabase 实例以及任何 社区数据库驱动程序是最新的。
- 转到管理 > 工具 > 日志以检查同步状态。
-
从 Metabase SQL 编辑器运行一个查询以检查数据库连接或数据库权限错误,这些错误未在日志中列出。
SELECT * FROM "your_schema"."your_table_or_view" LIMIT 1 - 如果需要,手动重新同步表或视图。
特殊情况
如果您刚刚在 Metabase 中设置了一个新数据库,初始同步查询需要一些时间才能开始。如果同步根本没有启动,请尝试 故障排除数据库连接。
解释
同步查询应在您的数据库的查询执行表中显示如下(使用数据库连接详细信息中的数据库用户的权限)
SELECT
TRUE
FROM
"your_schema"."your_table_or_view"
WHERE
1 <> 1
LIMIT 0
要运行同步查询,Metabase 必须
- 成功连接到您的数据库,并且
- 获得查询该数据库的权限。
如果连接失败或数据库权限不正确,则同步查询将无法运行。如果您在首次设置 Metabase 后无法与数据库同步,那么初始扫描和指纹识别查询也不会运行。
展开具有对象记录的 JSON 列
- 转到管理 > 数据库 > 您的数据库 > 显示高级选项。
- 点击禁用“JSON 展开”
- 点击保存更改。
- 点击同步数据库架构。
解释
Metabase 将在同步过程中尝试展开 JSON 和 JSONB 记录,这可能会占用相当多的查询执行时间。如果您有很多 JSON 记录,请尝试禁用自动展开选项以摆脱缓慢的同步。请记住,您可以从管理 > 工具 > 日志中跟踪同步状态。
扫描
- 转到管理 > 表元数据。
- 选择数据库和表。
- 转到要更新的列,然后点击齿轮图标。
- 点击丢弃缓存字段值。
- 点击重新扫描此字段。
- 转到管理 > 工具 > 日志以跟踪扫描状态并从中调试错误。
特殊情况
如果您正在等待连接数据库后进行初始扫描,请确保初始同步已首先完成(请记住,您可以从管理 > 工具 > 日志中检查状态)。
解释
扫描查询是针对数据库运行的,以从表或视图的前 1,000 行中采样列值。
SELECT
"your_table_or_view"."column" AS "column"
FROM
"your_schema"."your_table_or_view"
GROUP BY
"your_table_or_view"."column"
ORDER BY
"your_table_or_view"."column" ASC
LIMIT 1000
扫描失败是由扫描查询失败引起的——您可以查看日志来调试查询,这与其他直接针对数据库运行的查询类似。
请注意,当您从“表元数据”中将搜索框筛选器更改为下拉框筛选器时,您将触发该字段的扫描查询。如果您有一个下拉框筛选器没有拾取字段中的所有值,请记住 Metabase 仅采样每个字段的前 1,000 个唯一值,并存储最多 100 KB 的文本。如果您在一个列中有超过 1,000 个唯一值,或者有很多文本密集型数据(如长 URL 或调查响应),您可以
- 为此字段使用搜索框筛选器。
- 在您的 ETL 或 ELT 过程中进一步清理数据。
指纹识别
要为给定列手动重新触发指纹识别查询
- 转到管理 > 数据库 > 您的数据库 > 显示高级选项。
- 将定期重新指纹识别表切换为开,然后点击保存更改。
- 转到管理 > 表元数据。
- 选择您的数据库和表。
- 将表的可见性更改为“隐藏”。
- 将可见性改回“可查询”。
- 等待 10 秒。
- 转到您的列,并将类型从“实体键”更改为“无语义类型”,然后再改回“实体键”。
特殊情况
如果您正在等待连接数据库后进行初始指纹识别查询,请确保初始同步已首先完成(请记住,您可以从管理 > 工具 > 日志中检查状态)。
如果您使用的是 MongoDB,Metabase 会为每个集合的前 10,000 个文档进行指纹识别。如果您没有看到所有字段,那是因为这些字段可能不存在于这前 10,000 个文档中。有关更多信息,请参阅我们的 MongoDB 参考文档。
解释
初始指纹识别查询会查看数据库中给定表或视图的前 10,000 行。
SELECT
*
FROM
"your_schema"."your_table_or_view"
LIMIT 10000
如果前 10,000 行不能代表表中的数据(例如,如果您有大量稀疏数据,包含许多空白或 null 值),则可能会出现以下问题:
- 不正确的筛选器类型,例如您想要日历而不是类别。
- 不工作的直方图可视化(因为 Metabase 需要最小值和最大值来生成 bin)。
Metabase 没有内置选项来触发手动指纹识别查询。您可以使用上述步骤“重置”字段的设置来尝试强制进行指纹识别查询,但这不能保证在所有 Metabase 版本上都有效。
同步或扫描花费的时间太长
加快同步速度
- 限制用于连接数据库的权限,以便 Metabase 只同步有限的模式或表子集。
- 降低同步查询的频率.
加快扫描速度
- 降低扫描频率,或完全禁用扫描.
- 通过转到管理 > 表元数据并将此字段上的筛选设置为搜索框或纯输入框来减少要扫描的列数。
解释
同步和扫描最终只是针对数据库运行的两种查询,因此执行速度受运行查询数量、执行频率、数据大小以及您分配给数据库的资源量的限制。Metabase 提供了调整同步和扫描查询数量和频率的选项,因为不幸的是,我们无法赋予您的数据库更多动力……(现在还不能?)
相关主题
您还卡住了吗?
如果您无法使用故障排除指南解决问题
- 搜索或咨询 Metabase 社区。
- 搜索已知错误或限制。
阅读其他版本的 Metabase 的文档。