模型持久化

目前支持 PostgreSQL、MySQL 和 Redshift。

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

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

模型持久化不适用于行和列安全模拟

在 Metabase 中开启模型持久化

要持久化模型以加快加载速度,您需要为以下项开启模型持久化:

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

为您的 Metabase 开启模型持久化

要为您的 Metabase 开启模型持久化,请转到**管理设置** > **性能** > **模型持久化**。

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

如果选中,cron 调度程序将使用报告时区。否则,调度程序将使用系统时区(在 Metabase Cloud 中默认为格林尼治标准时间)。

我们建议您根据源表更新新数据的频率来安排模型刷新。

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

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

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

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

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

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

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

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

单个模型持久化仅适用于 ProEnterprise 计划(包括自托管和 Metabase 云)。

您还可以为单个模型开启或关闭持久化。查看模型时,点击右上角的**...**并选择**编辑设置**。开启**持久化模型数据**(您需要对模型所在的集合具有管理访问权限才能执行此操作)。

为单个模型切换持久化功能对于数据更新频率与该数据库中其他模型设置的计划不同的模型,或在该数据库中比其他模型使用频率更高或更低的模型非常有用。

刷新模型的持久化结果

要刷新模型的结果,请转到模型并点击三点菜单 (**…**) 并选择**编辑设置**。在打开的信息侧边栏中,您将看到有关 Metabase 上次刷新模型结果的时间的注释,以及一个刷新结果的图标。

查看模型持久化日志

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

持久化模型与缓存的区别

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

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

延伸阅读

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

这有帮助吗?

感谢您的反馈!
想改进这些文档吗? 提出更改。
© . This site is unofficial and not affiliated with Metabase, Inc.