模型持久化

目前适用于 PostgreSQL、MySQL 和 Redshift。

Metabase 可以持久化您的模型结果,从而让您的模型(以及基于这些模型的问题)加载更快。

Metabase 会将模型结果存储在数据仓库中的自定义模式的表中(而不是 Metabase 应用程序数据库中)。当用户基于您的模型提出问题时,Metabase 将使用存储结果的表,而不是重新运行模型的查询。

模型持久化不适用于数据沙箱模拟

在 Metabase 中开启模型持久化

要持久化模型以实现更快加载,您需要为以下项开启模型持久化:

  1. 您的 Metabase
  2. 单个数据库
  3. (可选)单个模型

为您的 Metabase 开启模型持久化

要为您的 Metabase 开启模型持久化,请前往 管理员设置 > 性能 > 模型持久化

您可以根据默认频率(每 1 小时、2 小时等)设置模型刷新,或选择自定义选项使用cron 语法来指定您自己的更新频率。

如果选择了报告时区,cron 调度器将使用该时区。否则,调度器将使用系统时区(在Metabase 云中默认为 GMT)。

我们建议根据您的源表更新新数据的频率,设置合理的模型刷新频率。

如果有人更改了模型的查询定义,任何基于该模型的问题都将重新运行模型的查询,直到下一次计划的模型刷新。

为每个数据库开启模型持久化

为您的 Metabase 开启模型持久化后,您需要为每个特定数据库进行设置,因为 Metabase 需要在您的数据仓库中创建一个模式来存储持久化模型。

  1. 前往 管理员设置 > 数据库 > [您的数据库] > 开启模型持久化。如果您授予 Metabase 连接到数据库的凭据具有足够的权限,Metabase 应该会为您完成所有工作:Metabase 将检查模式是否已存在,否则会尝试创建它。如果连接凭据缺少在数据库中创建模式所需的权限,您将需要自己手动在数据库中创建模式。

  2. 要在您的数据仓库中手动创建模式,请单击信息图标以获取模式名称。

  3. 在您的数据库中创建模式——确保您使用的模式名称与步骤 1 中的完全一致。例如,如果您使用 PostgreSQL 作为数据仓库,您可以通过运行 CREATE SCHEMA IF NOT EXISTS schema_name 来创建模式,其中 schema_name 是 Metabase 在信息图标中显示给您的名称。

  4. 确保 Metabase 用于连接您的数据仓库的凭据可以管理并写入该模式。

为单个模型开启模型持久化

单个模型持久化仅在 专业版企业版 计划中可用(包括自托管和 Metabase 云)。

查看模型时,点击右上角的 并选择 编辑设置。开启 持久化模型数据(您需要对模型所属的集合具有整理权限才能执行此操作)。

开启或关闭单个模型的持久化功能对于以下情况很有用:模型的数据更新频率与您在该数据库中为其他模型设置的计划不同,或者模型的使用频率高于或低于该数据库中的其他模型。

刷新模型的持久化结果

要刷新模型的结果,请前往模型并点击三点菜单 (),然后选择 编辑设置。在打开的信息侧边栏中,您将看到关于 Metabase 上次刷新模型结果的时间的说明,以及一个刷新结果的图标。

查看模型持久化日志

您可以通过点击右上角的齿轮图标并选择 管理员设置 > 工具 > 模型缓存日志来查看模型持久化的日志。请参阅管理员工具

持久化模型与缓存的区别

持久化模型与缓存结果不同

  • 模型持久化在您的数据仓库中;缓存结果存储在应用程序数据库中。Metabase 将缓存结果存储在其应用程序数据库中。Metabase 将模型作为表持久化在您连接的数据仓库中。
  • Metabase 刷新模型结果并使缓存结果失效。Metabase 将根据您设置的计划刷新模型结果。也就是说,Metabase 将重新运行模型的查询并将结果存储在您的数据仓库中。对于已保存问题和仪表板的缓存结果,Metabase 不会自动运行查询;它会在用户查看问题或仪表板时缓存结果,并根据您设置的缓存策略使缓存结果失效。

延伸阅读

阅读其他Metabase 版本的文档。

© . All rights reserved.