使用 Metabase 构建记录查找工具

如何使用 Metabase 构建内部查找工具,以快速查找有关您的客户、订单或其他数据的详细信息。

我们撰写过关于 人们使用 Metabase 的一些有趣方式,其中之一是将 Metabase 用作内部或后台应用程序的解决方案,例如客户查找工具。与其构建自定义页面来查找客户信息、订单信息或对您的组织重要的其他记录,不如简单地启动一个 Metabase 实例并构建一个仪表板,让人们可以快速调出与订单号、SKU、名称或其他字段相关的信息。

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

这是我们完成的查找工具的实际操作

Our customer lookup tool in action.

客户查找工具的目标

我们的目标是拥有一个交互式的客户列表,当我们在处理帮助请求或其他与客户相关的任务时,它将非常方便。单击 ID 以调出有关该客户的详细信息,然后调出该客户下的订单。

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

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

我们还希望能够通过他们的 nameID 查找客户。

这是构建我们工具的高级计划

创建我们的列表

从主导航栏中,我们将选择+ 新建,然后选择问题 > 原始数据 > 示例数据库 > 人员表(因为我们对客户信息感兴趣)。如果我们单击可视化,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.Name)。为了让我们的用户清楚每个过滤器的作用,我们将过滤器的标签更改为 客户 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}}

我们传递的参数用双大括号括起来:addresscitystatezip,Metabase 将为我们转义逗号。保存自定义目标位置后,我们现在可以单击地址,Metabase 将在 Google 地图中打开该地址。

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

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

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

就是这样!

是这样吗?我们现在有一个不错的客户查找工具可以使用,我们可以随着时间的推移扩展仪表板。我们可以向仪表板添加其他问题和其他过滤器,或设置更多自定义目标位置以链接到其他仪表板和工具。我们希望本文为您提供了一些关于您可以构建的工具的想法,或者用于升级您现有仪表板的想法。