多租户自助分析

嵌入整个Metabase应用(包括查询构建器),为人们提供安全、个性化的数据访问。

加入我们关于Metabase中面向客户的分析的网络研讨会。

因此,您正在考虑将Metabase嵌入到您的应用程序中,以便向您的客户提供分析。这将如何工作?

在本文中,我们将

  • 从您将为您的客户提供的目标体验开始。
  • 简要介绍为多个租户提供自助报告的挑战。
  • 讨论Metabase提供的相关功能,以及它们如何协同解决问题。

目标用户体验

让我们从您的客户视角来看,最终的分析体验将是什么样的。

参与者

  • 您的公司:巨兽分析
  • 客户1:猛犸象公司
  • 客户2:犀牛公司

故事

您是一家B2B公司,巨兽分析,您正在使用Metabase通过在megafauna-analytics.com的应用中嵌入Metabase来为您的客户提供报告。

以下是客户体验的概述:猛犸象公司的Woolly登录到您在megafauna-analytics.com的应用,然后导航到为猛犸象公司设置的仪表页。在那里,Woolly可以欣赏到一套屏幕,包括展示猛犸象公司订单、交易和其他您提供的沙盒数据的精美仪表板和图表,所有这些都采用您——巨兽的——品牌颜色。

除了查看静态仪表板,Woolly还可以点击图表上的数据并钻取。例如,他可以放大特定周的交易,或者点击图表中的一个条形图,以拉出一个显示填充该条形的非聚合行的表格。

An example of drilling through a question in Metabase using the Sample Database included with your installation.

此外,使用Metabase的图形查询构建器,Woolly可以切割和切片他的猛犸象公司数据。他可以使用编辑器的强大查询能力,以及自定义表达式进行更复杂的查询,以找到仪表板未解决的问题的答案——而无需看到犀牛公司或其他客户的数据。

The query builder in Metabase allows people to explore their data and create new questions. They can join data, filter it, summarize it, sort it, use custom expressions, and more.

您还可以通过设置自定义目标,例如另一个仪表板、问题或URL,来自定义人们点击仪表板上图表时发生的事情。您还可以设置一个图表来更新过滤器

这就是故事。我们如何到达那里?

创建多租户、自助分析所面临的挑战

所谓多租户,是指一个共享的应用实例,其中不同的用户组(如MammothCo或RhinoCo)可以享受不同的权限和不同的数据访问。而自助服务意味着应用程序应该提供创建自定义报告的能力,除了管理员提供的报告外。

在深入探讨Metabase如何实现多租户、自助式分析之前,我们首先需要确定需要解决的问题。为了给Woolly提供上述体验,我们需要

  • 以适当的方式将Metabase嵌入到您的应用程序(megafauna-analytics.com)中,以便人们可以访问查询构建器和钻取功能。
  • 使仪表板和图表匹配您的(Megafauna的)品牌颜色。
  • 将megafauna-analytics.com中的特定用户与嵌入的Metabase实例中的用户关联起来。
  • 限制用户可以看到的数据,只限于他们被允许查看的行和列。

让我们看看Metabase是如何解决这些问题的。

设置多租户、自助式报告所需的四个功能

我们将详细说明每个功能,但在此简要概述如下

  • 交互式嵌入:向嵌入的图表和仪表板添加钻取功能,管理集合,提供一个预先填充数据集的查询构建器,甚至暴露整个Metabase界面。
  • 品牌化(品牌):使Metabase图表和仪表板与您的应用程序的外观和感觉相匹配。
  • 单点登录(SSO):使您的应用程序和Metabase能够就用户身份及其可以查看的数据达成一致。
  • 数据沙箱:让您的用户探索他们的数据,而无需看到其他人的数据。

完整的Metabase应用程序嵌入

尽管我们的重点将放在交互式嵌入上,但处理Metabase嵌入到您应用程序中的方法有很多。由于“嵌入”一词具有如此多的含义,因此值得了解您可以使用Metabase在应用程序中嵌入图表和仪表板的不同方法。

让我们从开源选项开始

Metabase嵌入选项

公开链接嵌入

这是一个非常简单的选项(也许甚至不算是真正的嵌入)。您在Metabase实例中创建一个问题或仪表板,然后将链接发送给某人,并告诉他们不要分享。

公开嵌入

公开嵌入比上述选项高一个级别,因为链接仍然是公开的,但图表可以通过嵌入的iframe在您的应用程序中可见。

静态嵌入

这看起来与公开嵌入相同,但它由一个由签名的JSON Web Token(JWT)保护的iframe。要设置静态嵌入,您需要在前端有一个iframe链接到问题或仪表板,以及在后端有创建令牌的服务器代码。然后您可以使用用户ID签名令牌,并通过参数化做一些酷的事情。

The static embedding wizard. Static embeds require publishing. You can change the chart

例如,您可以在仪表板上创建可以接受参数的过滤器,并根据这些参数在仪表板上过滤数据。您可能有一个接受用户ID的参数化仪表板,因此当用户登录时,仪表板只会显示限制在用户ID内的用户数据。换句话说,您可以为用户数据创建一个通用的仪表板,任何用户都可以访问,但每个用户只会看到与他们相关的数据。

安全嵌入的缺点是人们无法钻取数据,因为Metabase不知道用户具有哪些数据权限。Metabase可能知道用户是user_id: 13,但用户13和Metabase中的用户账户之间没有连接(以及用户可以访问的组权限)。为了在您的应用程序和Metabase实例之间链接账户,我们需要交互式嵌入和单点登录。

如果您想深入了解上述选项,请查看我们的嵌入式文档。有关代码示例,请参阅我们使用公共和静态嵌入的应用程序的嵌入式参考应用程序仓库。

交互式嵌入

交互式嵌入与SSO和数据沙箱结合使用,是实现自助式报告的关键。与上述更简单的嵌入选项类似,您仍然使用iframe来嵌入Metabase,但这次您可以嵌入任何想要的Metabase屏幕,包括完整的交互性。结合SSO和数据沙箱,您的嵌入式Metabase实例将知道Woolly是谁以及他可以查看哪些数据,这意味着Metabase可以让Woolly钻取他的数据,而不会看到来自RhinoCo用户或其他租户的数据。

因为您有完整的Metabase应用程序可用,您可以向MammothCo用户提供集合、仪表板和预定义问题,例如周交易额。您还可以公开Metabase的查询构建器,这允许像Woolly这样的客户根据他们不断变化的数据需求创建自己的问题和仪表板(并使用Markdown对其进行注释)。

有关更多信息,请参阅我们的交互式嵌入文档,或查看交互式嵌入的代码示例

品牌化(品牌标识)

Metabase的外观定制功能允许您更改字体、颜色、标志等,使您的嵌入式Metabase看起来和感觉像是您应用程序的一部分。您可以设置最多24种颜色,并从各种预加载的字体中选择,或上传自己的字体。请参阅我们关于外观定制的文档。

In the Admin panel, you can change Metabase

单点登录

单点登录(SSO)允许您将应用程序中的用户与Metabase中的用户关联起来。通过使用SSO,您可以避免图表应该显示的地方出现的尴尬登录界面。没有SSO,用户会登录到您的应用程序,但仍需要登录到您的Metabase实例以查看单个嵌入式仪表板和图表——这是一个不太理想的用户体验。

SSO与Metabase如何协同工作

假设您在应用程序中设置了MammothCo用户,megafauna-analytics.com,名称为Woolly,用户ID为13。为了与您的Metabase实例协调,您接下来(手动或编程)需要在您的Metabase应用程序中为Woolly设置一个用户账户。接下来,您需要将应用程序中Woolly的ID与Metabase实例中Woolly的账户关联起来。为此,您只需向Metabase中Woolly的账户添加一个属性,以表明您应用程序中Woolly的user_id13

Add attributes to people in Metabase to coordinate user permissions between your app and your embedded Metabase instance.

设置SSO后,当Woolly登录到megafauna-analytics.com时,将生成一个签名令牌,证明他的身份以及您在Metabase实例中为他设置的属性。当Woolly导航到包含嵌入式Metabase图表或仪表板的页面时,Metabase可以根据附加到令牌的user_id属性确定Woolly是用户13,并且只能看到您为该用户ID提供的那些数据。

这是基本概念,并且有几种设置方法。

对于内部分析,公司通常使用SAML、LDAP或Google Sign-in。对于外部分析,公司通常更喜欢(并且我们推荐)JWT SSO。

您如何处理身份验证取决于您,但您必须设置SSO,以便协调应用程序和Metabase实例之间的权限。要了解更多信息,请参阅

数据沙箱

现在,您的SSO已向Metabase提供有关您用户的信息,这些属性可以用来过滤每个用户可以看到的内容,包括特定表的列和行。这是数据沙箱,这是一个强大的工具,因此我们只能概述其工作原理。

例如,如果您的orders表中包含所有客户订单,您可以根据列,例如user_id过滤该表。您可以在Metabase中将一个属性user_id分配给您的用户(并将该属性附加到他们的登录令牌),这样当用户登录并查看orders时,他们只会看到与他们的user_id匹配的行数据。

Sandboxing the Orders table by filtering the orders by the User ID column. Users will only see orders that correspond to their user_id attribute.

如果您需要更多的控制,您可以使用保存的问题创建自定义的表格视图创建自定义视图。例如,假设您不希望任何用户看到orders表中特定的一列。在这种情况下,您可以通过在Metabase中提出并保存一个相关的问题来创建一个不包含相关列的自定义视图。

要了解更多关于沙箱的信息,请查看

总结

我们希望这篇文章让您对如何在您的Web应用程序中嵌入多租户Metabase实例以提供自助式报告有一个高层次的理解。以下是一个快速总结,以及如果您想了解更多关于特定主题的信息,请查看我们的文档。

  • 在您的应用程序中放入iframe,并嵌入完整的Metabase应用程序
  • 使用白标来定制您的Metabase实例。
  • 使用SAMLJWT设置SSO,以将您的应用程序中的用户与嵌入的Metabase实例链接起来,并将用户属性附加到签名令牌中。
  • 使用属性来沙箱数据,以确保用户只能看到他们有权查看的数据。

如上所述的交互式嵌入是大多数公司的绝佳选择,但它不是提供自助式报告的唯一选择。请参阅如何使用Metabase向您的客户提供分析,了解您可以使用Metabase的不同方法——从简单的设置(无需嵌入)到提供令人惊叹的可定制的设置——以找到适合您组织的方案。

下一步:品牌化您的Metabase

自定义您的Metabase的名称、色彩方案、标志、favicon和主页。

下一篇文章