同步、扫描和指纹识别故障排除

首先,检查您的数据是否由于浏览器缓存而过时

  1. 清除您的浏览器缓存。
  2. 刷新您的Metabase页面。
  3. 在隐身窗口中打开您的Metabase页面。

一旦您确认您正在查看非缓存的表格和列视图,请标记数据库管理员以帮助进行故障排除

  • 同步,如果您的表格或列丢失,或者列数据类型错误。
  • 扫描,如果您的列缺失或错误(例如,在您的筛选下拉菜单中)。
  • 指纹识别,如果您已触发手动扫描,但更改没有生效。

同步

  1. 确保您的数据库驱动程序是最新的。
  2. 转到 管理员 > 故障排除 > 日志 以检查同步状态。
  3. 从Metabase SQL编辑器运行查询以检查日志中未列出的数据库连接或数据库权限错误

    SELECT
       *
    FROM
        "your_schema"."your_table_or_view"
    LIMIT 1
    
  4. 如果需要,请手动重新同步表格或视图。

特殊情况

如果您刚刚在Metabase中设置了一个新数据库,则初始同步查询需要一些时间才能启动。如果同步根本未开始,请尝试故障排除数据库连接

说明

同步查询应像这样显示在您的数据库查询执行表中(使用数据库连接详细信息中数据库用户的权限

SELECT
    TRUE
FROM
    "your_schema"."your_table_or_view"
WHERE
    1 <> 1
LIMIT 0

要运行同步查询,Metabase必须

如果连接失败或数据库权限错误,则同步查询将无法运行。如果在您首次设置后Metabase无法与您的数据库同步,则初始扫描和指纹识别查询也无法运行。

使用对象记录展开JSON列

  1. 转到 管理员 > 数据库 > 您的数据库 > 显示高级选项
  2. 单击 禁用“JSON展开”
  3. 单击 保存更改
  4. 单击 同步数据库模式

说明

Metabase将在同步过程中尝试展开JSON和JSONB记录,这可能需要相当多的查询执行时间。如果您有很多JSON记录,请尝试禁用自动展开选项以加快同步速度。请记住,您可以从 管理员 > 故障排除 > 日志 跟踪同步状态。

扫描

  1. 转到 管理员 > 表元数据
  2. 选择数据库和表。
  3. 转到您想要更新的列,并单击 齿轮 图标。
  4. 单击 丢弃缓存的字段值
  5. 单击 重新扫描此字段
  6. 转到 管理员 > 故障排除 > 日志 以跟踪扫描状态和从那里调试错误。

特殊情况

如果您在连接数据库后等待初始扫描运行,请确保首先完成初始同步(请记住,您可以从 管理员 > 故障排除 > 日志 检查状态)。

说明

扫描查询是针对您的数据库运行的,以从表或视图的前1000行中抽取列值

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千字节的文字。如果您有一个列中有超过1,000个唯一值,或者有很多文本密集型数据(如长URL或调查响应),您可以使用

  • 搜索框过滤器为该字段。
  • 在您的ETL或ELT过程中进一步清理数据。

指纹识别

手动重新触发给定列的指纹识别查询

  1. 转到 管理员 > 数据库 > 您的数据库 > 显示高级选项
  2. 打开定期重新指纹化表并点击保存更改
  3. 转到 管理员 > 表元数据
  4. 选择您的数据库和表。
  5. 将表的可见性更改为“隐藏”。
  6. 将可见性改回“可查询”。
  7. 等待10秒。
  8. 转到您的列,将类型从“实体键”更改为“无语义类型”,然后再改回“实体键”。

特殊情况

如果您在连接数据库后等待初始指纹识别查询运行,请确保首先完成初始同步(请记住,您可以从管理员 > 故障排除 > 日志中检查状态)。

如果您使用MongoDB,Metabase对每个集合的前10,000个文档进行指纹识别。如果您看不到所有字段,那是因为那些字段可能不存在于前10,000个文档中。更多信息,请参阅我们的MongoDB参考文档

说明

初始指纹识别查询查看数据库中给定表或视图的前10,000行

SELECT
    *
FROM
    "your_schema"."your_table_or_view"
LIMIT 10000

如果前10,000行不能代表表中的数据(例如,如果您有大量空白或空值的数据),您可能会看到以下问题

  • 不正确的过滤器类型,例如您想要日历时出现类别。
  • 直方图可视化无法正常工作(因为Metabase需要最小和最大值来生成区间)。

Metabase没有内置选项来触发手动指纹识别查询。您可以使用上述步骤“重置”字段的设置,尝试强制指纹识别查询,但这并不保证在所有版本的Metabase上都有效。

同步或扫描需要很长时间

为了加快同步

为了加快扫描

说明

同步和扫描最终只是对您的数据库运行的两类查询,所以执行速度受查询数量、执行频率、数据大小和分配给数据库的资源量的限制。Metabase为您提供选项来调整同步和扫描查询的数量和频率,因为我们无法赋予您的数据库更多能力……(目前还不能)

您还卡住了吗?

如果您无法使用故障排除指南解决问题

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

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