静态嵌入

也称为:独立嵌入或签名嵌入。

通常,嵌入的工作原理是在您网站的 iframe 中显示 Metabase URL。静态嵌入(或签名嵌入)是一个 iframe,它加载使用签名 JSON Web 令牌 (JWT) 保护的 Metabase URL。仅当请求提供使用您的应用和您的 Metabase 之间共享的密钥签名的 JWT 时,Metabase 才会加载该 URL。JWT 还包括对要加载的资源的引用,例如仪表板 ID,以及锁定参数的任何值。

您不能将静态嵌入与数据沙盒下钻一起使用,并且用户特定数据不会在使用情况分析中捕获,因为签名的 JWT 不会创建用户会话(服务器端会话)。对于这些功能,请查看交互式嵌入

但是,您可以通过锁定参数来限制静态嵌入中特定人员或群组的数据。

静态嵌入的工作原理

如果您想在 iframe 中设置交互式 Metabase 筛选器,则您的 Web 服务器需要在网站访问者更新筛选器小部件时,向 Metabase 发出请求以获取更新的数据。

为了请求 Metabase 提供更新的数据,您的 Web 服务器将生成新的 Metabase 嵌入 URL。例如,如果网站访问者在嵌入式筛选器小部件中输入值“true”,则您的 Web 服务器将生成一个新的嵌入 URL,其中包含一个额外的参数

your_metabase_embedding_url?filter=true

为了防止人们编辑嵌入 URL 以访问您的 Metabase 的其他部分(例如,通过将参数更改为 filter=company_secrets),您的 Web 服务器将向新的嵌入 URL 添加签名的 JWT

your_metabase_embedding_url/your_signed_jwt?filter=true

签名的 JWT 是使用您的 Metabase 密钥生成的。密钥告诉 Metabase,对筛选数据的请求是可信的,因此在新嵌入 URL 中显示结果是安全的。请注意,此密钥是所有静态嵌入共享的,因此,任何有权访问该密钥的人都将有权访问所有嵌入式工件。

如果您想嵌入具有其他交互功能的图表,例如下钻自助式查询,请参阅交互式嵌入

在 Metabase 中启用嵌入功能

  1. 转到设置 > 管理设置 > 嵌入
  2. 切换启用嵌入

使问题或仪表板可嵌入

Sharing button to embed dashboard

要创建静态嵌入

  1. 转到您要嵌入到网站中的问题或仪表板。
  2. 单击共享图标
  3. 选择嵌入
  4. 选择静态嵌入
  5. 可选:自定义嵌入的外观
  6. 可选:向嵌入添加参数
  7. 单击发布

Preview

将嵌入 URL 添加到您的网站

问题或仪表板的嵌入 URL 是将在您网站的 iframe 中显示的 Metabase URL。它由您的 Web 服务器使用您的 Metabase 站点 URL签名 JWT参数生成

metabase_site_url/embed/question/your_jwt_token?parameter_name=value

一旦您使问题或仪表板可嵌入,您就需要将该问题或仪表板的嵌入 URL 放在您的网站上

  1. 转到问题或仪表板 > 共享图标 > 嵌入
  2. 进行任何更改并复制代码。
  3. 预览代码
  4. 将代码添加到构建您网站的服务器代码中。
  5. 将前端代码添加到生成您希望嵌入项目出现的页面的代码中。

有关更多示例,请参阅我们的 参考应用仓库

预览嵌入的代码

  1. 转到问题或仪表板 > 共享图标 > 将此项目嵌入到应用程序中
  2. 单击代码
  3. 在顶部代码块中,您将找到 Web 服务器的示例代码。您还将找到要插入到您的 HTML 模板或单页应用中的 iframe 代码片段。

当您更改外观和感觉或参数预览设置时,Metabase 将更新代码并突出显示更改。请务必将这些更改复制到您的实际服务器代码中。

Code samples for embedding

Metabase 为以下内容生成服务器代码

  • Clojure
  • Node.js
  • Python
  • Ruby

对于 iframe 代码片段

  • ERB
  • JSX
  • Mustache
  • Pug/Jade

编辑嵌入式问题或仪表板

如果您更改嵌入项目的参数

  1. 进行更改后,复制 Metabase 生成的代码。
  2. 再次单击发布
  3. 更新服务器上的代码,使其与 Metabase 生成的代码匹配。

禁用问题或仪表板的嵌入

您可以从管理设置 > 嵌入 > 静态嵌入 > 管理中找到问题和仪表板的所有静态嵌入列表。

  1. 访问可嵌入的问题或仪表板。
  2. 单击共享图标(带有指向右上角的箭头的正方形)。
  3. 选择嵌入
  4. 选择静态嵌入
  5. 单击取消发布

自定义静态嵌入的外观

请参阅自定义静态嵌入的外观

自动刷新嵌入式仪表板的结果

自动刷新仅适用于仪表板,不适用于问题。

要以特定频率刷新仪表板的结果,您可以使用 refresh 参数化嵌入 URL。例如,要将嵌入式仪表板设置为每 60 秒刷新一次,您需要在 URL 中附加 refresh=60

例如,以下用于生成仪表板 iframe URL 的代码将显示仪表板的标题并每 60 秒刷新其结果。

var iframeUrl =
  METABASE_SITE_URL + "/embed/dashboard/" + token + "#titled=true&refresh=60";

有关您可以参数化的完整选项列表,请参阅自定义静态嵌入的外观

删除“Powered by Metabase”横幅

Powered by Metabase

横幅出现在使用 Metabase 开源版本创建的静态嵌入上。要删除横幅,您需要升级到 ProEnterprise 计划。

重新生成静态嵌入密钥

您的嵌入密钥用于为您的所有嵌入 URL 签名 JWT。

  1. 转到设置 > 管理设置 > 嵌入
  2. 静态嵌入卡片上,单击管理
  3. 重新生成密钥下,单击重新生成密钥

此密钥在所有静态嵌入之间共享。任何有权访问此密钥的人都可以访问所有嵌入式工件,因此请确保此密钥的安全。如果您重新生成此密钥,则需要使用新密钥更新您的服务器代码。

调整仪表板大小以适应其内容

仪表板是固定宽高比的,因此,如果您想确保它们在垂直方向上自动调整大小以适应其内容,则可以使用 iFrame Resizer 脚本。Metabase 为了方便起见,提供了一个副本

<script src="http://metabase.example.com/app/iframeResizer.js"></script>
<iframe
  src="http://metabase.example.com/embed/dashboard/TOKEN"
  onload="iFrameResize({}, this)"
></iframe>

由于 iframe-resizer 的许可变更,我们建议您使用 iframe-resizer 4.3.2 或更低版本。

静态嵌入中仪表板上的自定义目标

对于静态嵌入的仪表板上的自定义目标,您只能使用 URL 选项。外部 URL 将在新选项卡或窗口中打开。

您可以将筛选器值传播到外部 URL,除非筛选器被锁定。

延伸阅读

阅读其他Metabase版本的文档。