模型持久化
目前适用于 PostgreSQL、MySQL 和 Redshift。
Metabase 可以持久化您的模型结果,从而让您的模型(以及基于这些模型的问题)加载更快。
Metabase 会将模型结果存储在数据仓库中的自定义模式的表中(而不是 Metabase 应用程序数据库中)。当用户基于您的模型提出问题时,Metabase 将使用存储结果的表,而不是重新运行模型的查询。
在 Metabase 中开启模型持久化
要持久化模型以实现更快加载,您需要为以下项开启模型持久化:
为您的 Metabase 开启模型持久化
要为您的 Metabase 开启模型持久化,请前往 管理员设置 > 性能 > 模型持久化。
您可以根据默认频率(每 1 小时、2 小时等)设置模型刷新,或选择自定义选项使用cron 语法来指定您自己的更新频率。
如果选择了报告时区,cron 调度器将使用该时区。否则,调度器将使用系统时区(在Metabase 云中默认为 GMT)。
我们建议根据您的源表更新新数据的频率,设置合理的模型刷新频率。
如果有人更改了模型的查询定义,任何基于该模型的问题都将重新运行模型的查询,直到下一次计划的模型刷新。
为每个数据库开启模型持久化
为您的 Metabase 开启模型持久化后,您需要为每个特定数据库进行设置,因为 Metabase 需要在您的数据仓库中创建一个模式来存储持久化模型。
-
前往 管理员设置 > 数据库 > [您的数据库] > 开启模型持久化。如果您授予 Metabase 连接到数据库的凭据具有足够的权限,Metabase 应该会为您完成所有工作:Metabase 将检查模式是否已存在,否则会尝试创建它。如果连接凭据缺少在数据库中创建模式所需的权限,您将需要自己手动在数据库中创建模式。
-
要在您的数据仓库中手动创建模式,请单击信息图标以获取模式名称。
-
在您的数据库中创建模式——确保您使用的模式名称与步骤 1 中的完全一致。例如,如果您使用 PostgreSQL 作为数据仓库,您可以通过运行
CREATE SCHEMA IF NOT EXISTS schema_name
来创建模式,其中schema_name
是 Metabase 在信息图标中显示给您的名称。 -
确保 Metabase 用于连接您的数据仓库的凭据可以管理并写入该模式。
为单个模型开启模型持久化
查看模型时,点击右上角的 … 并选择 编辑设置。开启 持久化模型数据(您需要对模型所属的集合具有整理权限才能执行此操作)。
开启或关闭单个模型的持久化功能对于以下情况很有用:模型的数据更新频率与您在该数据库中为其他模型设置的计划不同,或者模型的使用频率高于或低于该数据库中的其他模型。
刷新模型的持久化结果
要刷新模型的结果,请前往模型并点击三点菜单 (…),然后选择 编辑设置。在打开的信息侧边栏中,您将看到关于 Metabase 上次刷新模型结果的时间的说明,以及一个刷新结果的图标。
查看模型持久化日志
您可以通过点击右上角的齿轮图标并选择 管理员设置 > 工具 > 模型缓存日志来查看模型持久化的日志。请参阅管理员工具。
持久化模型与缓存的区别
持久化模型与缓存结果不同
- 模型持久化在您的数据仓库中;缓存结果存储在应用程序数据库中。Metabase 将缓存结果存储在其应用程序数据库中。Metabase 将模型作为表持久化在您连接的数据仓库中。
- Metabase 刷新模型结果并使缓存结果失效。Metabase 将根据您设置的计划刷新模型结果。也就是说,Metabase 将重新运行模型的查询并将结果存储在您的数据仓库中。对于已保存问题和仪表板的缓存结果,Metabase 不会自动运行查询;它会在用户查看问题或仪表板时缓存结果,并根据您设置的缓存策略使缓存结果失效。
延伸阅读
阅读其他Metabase 版本的文档。