模型持久化
目前适用于PostgreSQL、MySQL和Redshift。
Metabase可以将模型的结果持久化,以便您的模型(以及基于这些模型的查询)加载更快。
Metabase将在数据仓库(而不是Metabase应用程序数据库)中的自定义架构中存储模型结果。当人们根据您的模型提出问题,Metabase将使用存储结果的表格而不是重新运行模型的查询。
模型持久化不支持数据沙箱。
在Metabase中开启模型持久化
为了实现模型的快速加载,您需要开启模型持久化
开启您的Metabase模型持久化
要开启您的Metabase模型持久化,请前往 管理员设置 > 性能 > 模型持久化。
您可以设置模型根据默认频率(每小时、每两小时等)刷新,或选择 自定义 选项,使用cron语法来指定自己的更新频率。
如果选择了,cron调度器将使用报告时区。否则,调度器将使用系统时区(默认为Metabase Cloud中的GMT)。
我们建议您根据源表更新新数据的频率来安排模型的刷新频率。
如果有人更改了模型的查询定义,任何基于该模型的查询将重新运行模型的查询,直到下一次计划好的模型刷新。
为每个数据库开启模型持久化
一旦您为您的Metabase开启了模型持久化,您还需要为每个特定数据库进行设置,因为Metabase需要在您的数据仓库中创建一个架构来存储持久化的模型。
-
前往 管理员设置 > 数据库 > [您的数据库] > 开启模型持久化。如果您提供的用于连接数据库的凭据具有权限,Metabase应该会为您完成所有工作:Metabase将检查架构是否已存在,否则将尝试创建它。如果连接的凭据缺乏在您的数据库中创建架构的必要权限,您需要自己创建架构。
-
要手动在数据仓库中创建架构,请点击 信息图标 以获取架构名称。
-
在您的数据库中创建架构——请确保您使用步骤1中的确切架构名称。例如,如果您使用PostgreSQL作为数据仓库,您将通过运行
CREATE SCHEMA IF NOT EXISTS schema_name
来创建架构,其中schema_name
是Metabase在信息图标中显示给您的内容。 -
确保Metabase用于连接到您的数据仓库的凭据可以管理和写入该架构。
为单个模型开启模型持久化
单个模型持久化仅在Pro和Enterprise计划(包括自托管和Metabase Cloud)中可用。
您还可以为单个模型开启或关闭持久化。在查看模型时,点击右上角的 … 并选择 编辑设置。开启 持久化模型数据(您需要管理模型集的访问权限才能执行此操作)。
为单个模型切换持久性对数据更新频率不同于数据库中其他模型设置的计划或使用频率高于或低于其他模型的模型非常有用。
刷新模型的持久化结果
要刷新模型的结果,请转到模型并单击三点菜单(…),然后选择 编辑设置。在打开的信息侧边栏中,您将看到有关 Metabase 最后刷新模型结果的注释,以及刷新结果的图标。
查看模型持久性日志
您可以通过单击右上角的齿轮图标并选择 管理设置 > 工具 > 模型缓存日志 来查看模型持久性的日志。参见 管理工具。
持久化模型与缓存的区别
持久化模型与 缓存结果 不同
- 模型持久化在您的数据仓库中;缓存结果存储在应用程序数据库中。Metabase 将缓存结果存储在其应用程序数据库中。Metabase 将模型作为表持久化到您连接的数据仓库中。
- Metabase 刷新模型结果并使缓存结果无效。Metabase 将根据您设置的计划刷新模型的结果。也就是说,Metabase 将重新运行模型的查询并将结果存储在您的数据仓库中。对于已保存问题和仪表板的缓存结果,Metabase 不会自动运行查询;当人们查看问题或仪表板时,它会缓存结果,并根据您设置的缓存策略使缓存结果无效。
进一步阅读
阅读其他 Metabase 版本的文档。