使用 Metabase 构建记录查找工具
如何使用 Metabase 构建内部查询工具,以快速查找有关客户、订单或其他数据的详细信息。
我们曾撰文介绍过人们使用 Metabase 的一些有趣方式,其中之一就是将 Metabase 作为内部或后台应用程序的解决方案,例如客户查询工具。无需构建自定义页面来查询客户信息、订单信息或对您的组织重要的其他记录,您只需启动一个 Metabase 实例并构建一个仪表板,即可让人们快速查找与订单号、SKU、姓名或其他字段相关的信息。
在本文中,我们将引导您使用 Metabase 随附的示例数据库构建一个简单的客户查询工具。我们将向您展示 Metabase 提供的一些开箱即用功能,以及您可以如何自定义查询工具。示例数据库中的数据非常基本,但我们将尝试构建一个仪表板,使其近似于您在实际中会构建和使用的工具。您可以获取 Metabase 并按照步骤操作,或者只是通读以获取构建您自己的工具的一些想法。
这是我们完成的查询工具的实际操作
客户查询工具的目标
我们的目标是拥有一份交互式客户列表,这在处理帮助工单或其他客户相关任务时会非常方便。点击 ID 以显示该客户的详细信息,然后拉取该客户下的订单。
为此,我们希望使列表可排序和可过滤,并且能够向下钻取以查看单个记录。以下是我们希望了解的客户信息:
- 姓名、电子邮件、城市和州
- 他们已经花在我们身上的钱
- 我们给予他们的折扣总额
我们还希望能够通过客户的姓名
或ID
来查找客户。
以下是我们构建该工具的高级计划:
创建列表
从主导航栏中,我们将选择 **+ 新建**,然后选择 **问题** > **原始数据** > **示例数据库** > **People** 表(因为我们对客户信息感兴趣)。如果点击 **可视化**,Metabase 将进行一些计算,我们将得到 People
表中记录的漂亮小表格可视化。
Metabase 已经为我们做了一些工作。例如,点击行中的 ID 将带我们到详细信息页面。
这没什么特别的,但拥有它很好,因为它使信息更容易阅读。实际上,它有点特别。我们点击的ID
字段是实体键,它是表中唯一标识每行数据的字段,在此例中是People
表中的一行。(查看我们的文档以了解有关如何自定义数据模型的更多信息。)Metabase 知道它是一个实体键,这就是它知道链接到此详细视图的方式。请注意,在此客户 Hudson Borer 的详细信息页面上,我们 1) 看到People
表中的所有字段,而不仅仅是我们问题中包含的字段,以及 2) 在右上角,指向与 Hudson Borer 用户ID
关联的订单的链接。如果一个表将实体键作为外键包含在另一个表中,Metabase 将使该数据在此详细信息页面上可用以供探索。
到目前为止,我们基本上什么都没做,但已经有了一个不错的开端。要计算每个客户迄今为止花在公司上的总金额,我们需要在列表中包含订单信息。这就要求我们将 People
表连接到 Orders
表。我们将点击**编辑器图标**以打开**查询构建器**。
接下来,我们将点击联接数据
选项,并通过告诉 Metabase 将People
表中的实体键ID
链接到Orders
表中的外键User_ID
,从而将People
表连接到Orders
表。(如果您不熟悉表连接,请查看我们关于Metabase 中的联接的文章)。
连接 People
和 Orders
表将生成如下所示的表,其中客户信息会针对他们下的每个订单重复。
这不理想:我们不希望客户在此查询工具中被列出多次。如果我们要查看他们的订单,只需点击客户的ID
即可查看其详细信息页面,但现在我们已经有了他们的订单信息可供处理。
让我们试着找出他们迄今为止在我们这里花费的总金额。回到**查询构建器**,我们选择**汇总**,并选择总和
。在连接的订单
表下,我们选择总计
。由于我们希望看到每个用户的总和,因此我们将按每个用户的ID
进行分组。
预览显示了一个更新的表,其中只有两列:ID
和我们的新列订单总额 → 总计($)
。我们还将像处理订单总额一样,对折扣进行求和(订单总额 → 折扣($)
)。
接下来,我们将通过在“汇总”部分的“分组依据”框中添加列来包含我们想要在表格中包含的列。这是我们的完整列列表:
ID
电子邮件
名称
城市
州
邮政编码
创建于:月份
订单总额 → 总计
订单总额 → 折扣
填好笔记本后,我们点击**可视化按钮**,Metabase 就会为我们展示列表。
到目前为止一切顺利,但让我们看看是否能让它更好看一点。我们可以通过点击该列的标题,然后点击**齿轮图标**来更改聚合列的格式。
我们将把列标题
更改为“总花费”,切换显示迷你条形图
,并将货币单位显示位置
设置为每个单元格。
迷你条形图将显示单元格值相对于该列值范围的相对位置,这使得我们可以轻松查看客户与其他客户相比的花费金额。
我们将对折扣总计列进行相同的操作:添加迷你条形图,重命名标题,在每个单元格中显示货币。
我们还可以为整个表格添加一些条件格式。在屏幕的左下方,我们将点击问题的**设置按钮**,Metabase 将滑出**设置侧边栏**。在侧边栏的顶部,我们将选择**条件格式选项卡**。例如,我们可以用蓝色突出显示高消费者(在我们的产品上花费超过 1,000 美元的客户)的行,如果他们获得的折扣超过 30 美元(这样我们就可以知道我们可能需要减少对该客户的折扣),则用红色突出显示行。
打扮好我们的列表后,将其保存为客户列表
。
将问题添加到仪表板
为了能够查找客户,我们需要能够按 ID 和姓名过滤此表。我们*可以*在问题级别进行过滤,但在这种情况下,最好将列表放在仪表板中:它为我们提供了更多选项,例如能够拥有一个筛选器小部件,该小部件可以过滤我们将来可能想要添加的其他列表或图表,或者允许我们自定义当人们点击列中的值时发生的情况。
我们将创建一个新仪表板,并将其命名为“客户查询工具”。接下来,我们将客户列表
问题添加到新仪表板。
向仪表板添加过滤器
由于我们希望人们能够通过ID
或姓名
查找客户,因此我们需要为每个查找方法添加一个过滤器小部件。要添加过滤器,我们将点击**铅笔图标**编辑仪表板,然后点击**过滤器图标**。我们将为ID
过滤器小部件添加一个ID
过滤器,为姓名
过滤器小部件添加一个类别
过滤器。
我们将每个过滤器连接到客户列表
卡片(“ID”过滤器连接到Person.ID
,“类别”过滤器连接到Person.Name
)。为了让我们的用户清楚每个过滤器的作用,我们将过滤器的标签更改为客户 ID
和客户姓名
。查看我们关于仪表板过滤器的文档,了解有关如何连接这些过滤器的更多信息。
如果过滤器行为不如预期,您可能需要更改数据模型中的字段类型。查看我们关于编辑元数据的文档,其中展示了如何选择过滤器是显示所有可用值的列表还是显示搜索框。
自定义点击行为
当您构建客户查询工具时,您可能希望设置您的列表,以便点击客户姓名、ID 或其他值时,会将您带到不同的仪表板、第三方应用程序,甚至是您自己的应用程序。为此,您可以自定义仪表板卡上的点击行为并设置自定义目的地。为了演示此功能,我们将设置它,以便当人们点击人员地址时,它会打开预加载了该地址的 Google 地图。
我们可以点击**可引用值**下拉列表,查看我们可以作为参数插入的值。根据Google Maps API 文档,我们将 URL 格式化如下:
https://www.google.com/maps/search/?api=1&query={{address}},{{city}},{{state}},{{zip}}
我们传递的参数用双大括号括起来:address
、city
、state
和zip
,Metabase 会为我们转义逗号。保存自定义目标后,我们现在可以点击地址,Metabase 将在 Google 地图中打开该地址。
将工具嵌入您的维基或应用程序中
您可以将查询工具留在您的 Metabase 实例中,但您也可以将该工具嵌入到其他应用程序中,例如您组织的维基或自建应用程序。查看我们关于嵌入图表和仪表板的文章。
就这样!
或者是这样吗?我们现在有了一个不错的客户查询工具可以使用,并且我们可以随着时间的推移扩展仪表板。我们可以在仪表板中添加其他问题和其他过滤器,或者设置更多自定义目的地以链接到其他仪表板和工具。我们希望本文能为您提供一些构建工具或升级现有仪表板的想法。