使用 Metabase 构建记录查找工具

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

我们已经撰写了一些关于人们如何使用Metabase的有趣方式的文章,其中之一是使用Metabase作为内部或后台应用程序的解决方案,例如客户查找工具。与其构建用于查找客户信息、订单信息或其他对组织重要的记录的自定义页面,您只需启动一个Metabase实例并构建一个仪表板,允许人们快速检索与订单号、SKU、名称或其他字段相关的信息。

在本篇文章中,我们将向您展示如何使用Metabase附带的有Sample Database构建简单的客户查找工具。我们将向您展示Metabase提供的某些功能,以及您可以进行的一些自定义查找工具的操作。Sample Database中的数据相当基础,但我们将尝试构建一个仪表板,以近似您在实际中构建和使用的工具类型。您可以获取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 字段是一个 实体键,这是一个表中的字段,它唯一地标识每一行数据,在本例中是 People 表中的一行。(查看我们的 文档 了解如何自定义数据模型。)Metabase 知道这是一个实体键,这就是它如何知道链接到这个详细视图的原因。注意,在这个客户 Hudson Borer 的详细页面上,我们 1) 看到了来自 People 表的每个字段,而不仅仅是我们在问题中包含的字段,2) 在右上角,有一个链接到与用户 ID 相关联的订单。如果一个表将实体键作为另一个表的 外键 包含在内,Metabase 将使这些数据可用于在详细页面上进行探索。

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

到目前为止,我们基本上什么都没做,但我们已经取得了相当不错的进展。为了计算每个客户与公司花费的金额,我们需要在我们的列表中包含订单信息。这需要我们将 People 表与 Orders 表连接起来。我们将点击 编辑图标 以显示 查询构建器**

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

接下来,我们将点击 连接数据 选项,并通过告诉 Metabase 它应该将 People 表中的实体键 ID 链接到 Orders 表的外键 User_ID 来将 People 表连接到 Orders 表。(如果您对连接表不熟悉,请查看我们的 关于 Metabase 中连接的文章)。

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

连接 PeopleOrders 表将产生下表所示的结果,其中每个订单的客户信息都重复出现。

Joined People and Orders table.

这并不理想:我们不希望在查找工具中列出客户超过一次。如果我们想查看他们的订单,我们可以点击客户的 ID 以查看他们的详细页面,但现在我们有他们的订单信息可以处理。

让我们尝试找出他们到目前为止与我们花费的总金额。返回到 查询构建器,我们将选择 汇总,并选择 总和。在连接的 Orders 表下,我们将选择 总计。由于我们想看到每个用户的总和,我们将按每个用户的 ID 进行分组。

Previewing the sum of order totals, grouped by ID

预览显示了一个更新后的表,只有两列:ID 和我们新增加的列,Sum of Orders → Total($)。我们还可以像处理订单总额一样,计算折扣的总和(Sum of Orders → Discount($))。

接下来,我们将通过将它们添加到 汇总 部分的 分组依据 框中,来添加我们希望在表中包含的列。以下是我们的完整列列表

  • ID
  • 电子邮件
  • 姓名
  • 城市
  • 邮政编码
  • 创建时间:月份
  • Sum of Orders → 总计
  • Sum of Orders → 折扣

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将滑动出设置侧边栏。在侧边栏的顶部,我们将选择条件格式选项卡。例如,我们可以将大额消费者(在我们产品上花费超过1000美元的客户)所在的行高亮显示为蓝色,如果给他们的折扣超过30美元,则将行高亮显示为红色(这样我们就会知道可能需要减少对该客户的折扣)。

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

现在我们的列表已经打扮好了,让我们将其保存为客户列表

将问题添加到仪表板中

为了能够查找客户,我们需要能够通过ID和姓名来过滤这个表格。我们可以在问题级别进行过滤,但在这个例子中,让我们的列表在仪表板上更好:它给了我们更多选项,比如可以有一个过滤器小部件,可以过滤我们可能想要添加的额外列表或图表,或者允许我们自定义当人们点击列中的值时会发生什么。

我们将创建一个新仪表板并给它起名为(字面上)“客户查找工具”。接下来,我们将我们的客户列表问题添加到我们的新仪表板中。

向仪表板添加筛选器

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

Adding an ID filter to a dashboard.

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

Adding an ID filter to a dashboard.

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

自定义点击行为

当您构建客户查找工具时,您可能希望设置列表,以便点击客户名称或ID等值将带您转到不同的仪表板、第三方应用,甚至是您自己的应用。为此,您可以在仪表板卡片上自定义点击行为并设置一个自定义目标。为了演示此功能,我们将设置当人们点击地址时,它将打开预加载该地址的Google Maps。

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

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

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

我们传递的参数包含在双大括号中:addresscitystatezip,Metabase会为我们转义逗号。一旦我们保存自定义目标,我们现在可以点击地址,Metabase将在Google Maps中打开地址。

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

在您的维基或应用程序中嵌入工具

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

就是这样!

或者呢?我们现在有一个不错的客户查找工具可以工作,并且我们可以随着工作进展扩展仪表板。我们可以在仪表板上添加其他问题和过滤器,或设置更多的自定义目标来链接到其他仪表板和工具。我们希望这篇文章为您提供了构建工具或升级现有仪表板的灵感。