模型持久化

Metabase 可以持久化保存您的模型的查询结果,从而加快模型(以及基于这些模型的查询)的加载速度。

Metabase 将把模型结果存储在您的数据仓库中的一个专用 schema 下的表中(而不是 Metabase 应用数据库中)。当用户基于您的模型进行查询时,Metabase 将使用包含已存储结果的表,而不是重新运行模型的查询。

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

支持模型持久化的数据库

当前,模型持久化仅适用于以下数据库:

  • PostgreSQL
  • MySQL
  • Redshift

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

在 Metabase 中开启模型持久化

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

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

为您的 Metabase 开启模型持久化

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

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

Cron 调度程序会使用报表时区(如果已选择)。否则,调度程序将使用系统时区(在Metabase Cloud 中默认为 GMT)。

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

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

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

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

  1. 转到管理设置 > 数据库 > [您的数据库] > 开启模型持久化。如果您提供给 Metabase 连接数据库的凭据具有足够的权限,Metabase 应该可以为您完成所有工作:Metabase 会检查 schema 是否已存在,或者尝试创建它。如果连接的凭据缺少在您的数据库中创建 schema 的必要权限,您需要自己创建该 schema。

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

  3. 在您的数据库中创建 schema—请确保使用步骤 1 中的确切 schema 名称。例如,如果您正在使用 PostgreSQL 作为数据仓库,您将通过运行CREATE SCHEMA IF NOT EXISTS schema_name来创建 schema,其中schema_name是 Metabase 在信息图标中显示的名称。

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

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

单个模型持久化仅在ProEnterprise版本(包括自托管和 Metabase Cloud)中可用。

您也可以为单个模型切换持久化开关。在查看模型时,点击右上角的,然后选择编辑设置。打开“持久化模型数据”开关(您需要对模型所属的集合具有策展访问权限才能执行此操作)。

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

刷新模型持久化结果

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

查看模型持久化日志

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

持久化模型与缓存的区别

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

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

延伸阅读

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

这有帮助吗?

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