使用 Metabase 构建记录查询工具

如何使用 Metabase 构建内部查询工具,快速查找客户、订单或其他数据详情。

我们曾撰文介绍人们使用 Metabase 的一些有趣方式,其中之一就是将 Metabase 作为内部或后台应用程序的解决方案,例如客户查询工具。您无需构建自定义页面来查询客户信息、订单信息或组织重要的其他记录,只需启动一个 Metabase 实例,然后构建一个仪表板,即可让人们快速查找与订单号、SKU、姓名或其他字段相关的信息。

在本文中,我们将引导您如何使用示例数据库(Metabase 内置的)构建一个简单的客户查询工具。我们将向您展示 Metabase 开箱即用的一些功能,以及您可以如何自定义您的查询工具。示例数据库中的数据非常基础,但我们将尝试构建一个仪表板,使其近似于您实际会构建和使用的工具。您可以获取 Metabase并跟着操作,或者只是通读以获取构建您自己工具的一些想法。

这是我们完成的查询工具的实际运行效果

Our customer lookup tool in action.

客户查询工具的目标

我们的目标是拥有一个交互式的客户列表,在处理帮助工单或其他客户相关任务时会很方便。点击 ID 可以调出该客户的详细信息,然后调出该客户下的订单。

为此,我们希望使列表可排序和可筛选,并且能够向下钻取以查看单个记录。以下是我们希望了解的客户信息:

  • 姓名、电子邮件、城市和州
  • 他们在我们这里消费了多少钱
  • 我们给他们的总折扣金额

我们还希望能够通过客户的姓名ID进行查询。

以下是我们构建此工具的总体计划

创建我们的列表

从主导航栏中,我们将选择+ 新建,然后选择问题 > 原始数据 > 示例数据库 > 人员表(因为我们关心客户信息)。如果我们点击可视化,Metabase 将进行一些处理,然后我们将获得一个漂亮的表格可视化,显示人员表中的记录。

The People table in the Sample Database.

Metabase 已经为我们做了一些工作。例如,点击行中的 ID 将带我们到一个详细信息页面。

Clicking on an ID will bring up a detail view of the customer.

这没什么特别的,但它很方便,因为它使信息更易于阅读。实际上,它有点特别。我们点击的ID字段是一个实体键,它是表中唯一标识每行数据的字段,在这里是人员表中的一行。(查看我们的文档,了解更多关于如何自定义数据模型的信息。)Metabase 知道它是一个实体键,所以它知道要链接到这个详细视图。请注意,在此客户 Hudson Borer 的详细信息页面上,我们 1) 看到来自人员表的所有字段,而不仅仅是我们在问题中包含的字段,并且 2) 在右上角,有一个链接指向与 Hudson Borer 用户ID相关联的订单。如果一个表将实体键作为外键包含在另一个表中,Metabase 将使这些数据在此详细信息页面上可供探索。

Metabase will show data associated with an entity key, in this case: orders associated with a user

到目前为止我们基本上没做什么,但已经有了一个不错的开端。要计算每个客户在公司消费了多少钱,我们需要在列表中包含订单信息。这就要求我们将人员表与订单表连接起来。我们将点击编辑器图标,打开查询构建器

Clicking on the editor icon will open up the Query Builder.

接下来,我们将点击连接数据选项,然后将人员表与订单表连接起来,方法是告诉 Metabase 它应该将ID(在人员表中)实体键与User_ID(在订单表中)外键链接起来。(如果您不熟悉表连接,请查看我们的Metabase 中的连接文章。)

Joining the People table to the Orders table on People.ID = Orders.User_ID.

连接人员订单表将生成如下所示的表格,其中客户信息会在他们下的每个订单中重复出现。

Joined People and Orders table.

这并不理想:我们不希望客户在此查询工具中被列出多次。如果我们要查看他们的订单,我们可以点击客户的ID查看其详细信息页面,但现在我们有了他们的订单信息可以进行操作。

让我们尝试找出他们迄今为止在我们这里花费的总金额。回到查询构建器,我们将选择汇总,然后选择总和。在已连接的订单表下,我们将选择总计。由于我们想查看每个用户的总和,我们将按每个用户的ID分组。

Previewing the sum of order totals, grouped by ID

预览显示了一个只包含两列的更新表:ID和我们的新列订单总额($)。我们还将汇总折扣(订单折扣总额($)),就像我们处理订单总额一样。

接下来,我们将通过将所需的列添加到汇总部分的分组依据框中来添加到我们的表格中。以下是我们的完整列列表

  • ID
  • 电子邮件
  • 姓名
  • 城市
  • 邮编
  • 创建时间:月份
  • 订单总额
  • 订单折扣总额

Our finished notebook.

填写完我们的笔记本后,让我们点击可视化按钮,Metabase 将向我们展示我们的列表。

Our basic customer list.

到目前为止还不错,但我们看看能不能美化一下。我们可以通过点击聚合列的标题,然后点击齿轮图标来更改其格式。

Changing the formatting of a column.

我们将列标题更改为“总消费金额”,切换显示迷你条形图,并将货币单位显示位置设置为每个单元格。

Adding a mini bar chart to a column to display the cells

迷你条形图将显示单元格的值相对于列中值的范围,这使得我们很容易看到客户的消费金额与其他客户相比如何。

对折扣总额列也进行同样的操作:添加迷你条形图,重命名标题,在每个单元格中显示货币。

Our table with the two aggregate columns, Total money spent and Discount total, each with a mini bar chart.

我们还可以为整个表格添加一些条件格式。在屏幕左下角,我们将点击问题的设置按钮,Metabase 将滑出设置侧边栏。在侧边栏顶部,我们将选择条件格式选项卡。例如,我们可以为大消费客户(在我们的产品上花费超过 $1,000 的客户)将行突出显示为蓝色,如果我们给了他们超过 $30 的折扣(这样我们就知道可能需要减少对该客户的折扣),则将行突出显示为红色。

We added a rule to highlight big spenders (>$1,000). Now we

我们的列表装饰完毕后,让我们将其保存为客户列表

将问题添加到仪表板

为了能够查找客户,我们需要能够按 ID 和姓名筛选此表。我们可以在问题级别进行筛选,但在这种情况下,最好将我们的列表放在仪表板中:它为我们提供了更多选项,例如能够拥有一个过滤器小部件,可以筛选我们将来可能想要添加的其他列表或图表,或者允许我们自定义当人们点击列中的值时会发生什么。

我们将创建一个新的仪表板,并将其(字面意义上)命名为“客户查询工具”。接下来,我们将把我们的客户列表问题添加到新的仪表板中。

为仪表板添加过滤器

由于我们希望人们能够通过客户的ID姓名来查找客户,我们需要为每种查询方法添加一个过滤器小部件。要添加过滤器,我们将点击铅笔图标以编辑仪表板,然后点击过滤器图标。我们将为ID过滤器小部件添加一个ID过滤器,并为姓名过滤器小部件添加一个类别过滤器。

Adding an ID filter to a dashboard.

我们将把每个过滤器连接到客户列表卡片(将“ID”过滤器连接到Person.ID,将类别过滤器连接到Person.姓名)。为了让用户清楚每个过滤器的作用,我们将把过滤器的标签更改为客户 ID客户姓名。查阅我们关于仪表板过滤器的文档,了解更多如何连接这些过滤器。

Adding an ID filter to a dashboard.

如果过滤器没有按预期运行,您可能需要在数据模型中更改字段类型。请查阅我们关于编辑元数据的文档,特别是关于更改过滤器小部件的部分,其中展示了如何选择让过滤器显示所有可用值的列表,还是作为一个搜索框。

自定义点击行为

当您构建客户查询工具时,您可能希望将列表设置为:点击客户姓名或 ID 等值时,会跳转到不同的仪表板、第三方应用程序,甚至您自己的应用程序。为此,您可以自定义仪表板卡片上的点击行为,并设置一个自定义目的地。为了演示该功能,我们将设置当人们点击某个人的地址时,它将在 Google 地图中预加载该地址。

Setting up the click behavior for the address column to send people to an external URL.

我们可以点击您可以引用的值下拉菜单,查看哪些值可以作为参数插入。根据Google 地图 API 文档,我们将按如下方式格式化 URL

https://www.google.com/maps/search/?api=1&query={{address}},{{city}},{{state}},{{zip}}

我们传递的参数用双大括号括起来:地址城市邮编,Metabase 会为我们转义逗号。保存自定义目的地后,我们现在可以点击一个地址,Metabase 将在 Google 地图中打开该地址。

Custom destination: clicking on an address opens up Google Maps to that address.

将工具嵌入到您的 Wiki 或应用程序中

您可以将查询工具留在您的 Metabase 实例中,但也可以将其嵌入到其他应用程序中,例如您组织的 Wiki 或自研应用程序。请查看我们关于嵌入图表和仪表板的文章。

大功告成!

还是不是呢?我们现在有了一个不错的客户查询工具,并且可以根据需要扩展仪表板。我们可以向仪表板添加其他问题和其他过滤器,或者设置更多自定义目的地以链接到其他仪表板和工具。我们希望本文能为您提供一些关于您可以构建的工具——或升级现有仪表板——的想法。

© . All rights reserved.