静态嵌入
也称为:独立嵌入或签名嵌入。
一般来说,嵌入是通过在你的网站iframe中显示一个Metabase URL来实现的。一个静态嵌入(或签名嵌入)是一个加载由签名JSON Web Token(JWT)安全加密的Metabase URL的iframe。只有在请求提供了与你的应用和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中开启嵌入功能
- 转到 设置 > 管理员设置 > 嵌入。
- 切换 启用嵌入。
使问题或仪表板可嵌入
创建静态嵌入
将嵌入URL添加到你的网站
问题或仪表板的嵌入URL是将在你的网站iframe中显示的Metabase URL。它由你的web服务器使用你的Metabase站点URL、签名JWT和参数生成。
metabase_site_url/embed/question/your_jwt_token?parameter_name=value
一旦您创建了一个问题或仪表板可嵌入,您就需要将那个问题或仪表板的嵌入URL放在您的网站上。
- 转到问题或仪表板 > 分享图标 > 嵌入。
- 进行任何更改并复制代码。
- 预览代码。
- 将代码添加到构建您网站的服务器代码中。
- 将前端代码添加到您希望嵌入项显示的页面生成的代码中。
有关更多示例,请参阅我们的参考应用仓库。
预览嵌入代码
- 转到问题或仪表板 > 分享图标 > 在应用程序中嵌入此项。
- 点击 代码。
- 在上面的代码块中,您将找到您的网络服务器的示例代码。您还可以找到要插入到您的HTML模板或单页应用中的iframe片段。
当您更改外观或参数预览设置时,Metabase将更新代码并突出显示更改。请确保将这些更改复制到您的实际服务器代码中。
Metabase为以下语言生成服务器代码:
- Clojure
- Node.js
- Python
- Ruby
对于iframe片段
- ERB
- JSX
- Mustache
- Pug/Jade
编辑嵌入的问题或仪表板
如果您更改了嵌入项的参数
- 更改后,复制Metabase生成的代码。
- 再次点击 发布。
- 更新服务器上的代码,使其与Metabase生成的代码匹配。
禁用问题或仪表板的嵌入
您可以在“管理员设置” > “嵌入” > “静态嵌入” > “管理”中找到所有问题和仪表板的静态嵌入列表。
- 访问可嵌入的问题或仪表板。
- 点击 分享图标(带有指向右上角的箭头的正方形)。
- 选择 嵌入。
- 选择 静态嵌入。
- 点击 取消发布。
自定义静态嵌入的外观
请参阅自定义静态嵌入的外观。
自动刷新嵌入仪表板的结果
自动刷新仅适用于仪表板,不适用于问题。
要定期刷新仪表板的结果,您可以使用refresh
参数对嵌入URL进行参数化。例如,要将嵌入仪表板设置为每60秒刷新一次,请将refresh=60
附加到URL上。
例如,以下生成仪表板iframe URL的代码将显示仪表板的标题并每60秒刷新其结果。
var iframeUrl =
METABASE_SITE_URL + "/embed/dashboard/" + token + "#titled=true&refresh=60";
有关您可以参数化的完整选项列表,请参阅自定义静态嵌入的外观。
移除“由Metabase提供支持”横幅
横幅出现在使用Metabase开源版本创建的静态嵌入中。要移除横幅,您需要升级到专业版或企业版。
重新生成静态嵌入密钥
您的嵌入密钥用于为所有嵌入URL签名JWT。
- 转到 设置 > 管理员设置 > 嵌入。
- 在“静态嵌入”卡上,点击“管理”。
- 在“重新生成密钥”下,点击“重新生成密钥”。
此密钥跨所有静态嵌入共享。任何拥有此密钥的人都可以访问所有嵌入项目,因此请确保此密钥安全。如果您重新生成此密钥,则需要使用新密钥更新您的服务器代码。
调整仪表板大小以适应其内容
仪表板具有固定宽高比,因此如果您希望确保它们自动垂直调整大小以适应其内容,则可以使用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的许可变更,我们建议您使用4.3.2或更低版本的iframe-resizer。
静态嵌入仪表板上的自定义目的地
您只能在具有静态嵌入的仪表板上的自定义目的地中使用URL选项。外部URL将在新标签页或窗口中打开。
除非过滤器被锁定,否则您可以传播过滤器值到外部URL。
进一步阅读
阅读其他Metabase版本的文档。