数据透视表

了解如何在 Metabase 中使用不同的数据库创建数据透视表。

什么是数据透视表? 数据透视表是以表格方式汇总和分组数据的方法。它们是分析师工具包中的宝贵工具,因为它们是呈现和重新排列大量信息的有效方法。以下是它们的工作原理

在 Metabase 中创建数据透视表时不受支持的数据库

数据透视表目前在 Metabase 中不适用于以下数据库

  • Druid
  • MongoDB

数据透视表适用于所有其他官方支持的数据库

数据透视表 vs. 常规表格

您的典型基本表格是单元格网格。每列代表单个记录的属性,每行一个记录。

数据透视表是一个对行和列进行分组的表格,并包含带有这些分组的汇总值的汇总行。这些汇总值通常称为小计和总计,尽管这些汇总值也可能是其他值,例如平均值。

它们之所以被称为数据透视表,是因为您可以将列旋转(“透视”)90 度,以便该列中的值本身成为列标题。当尝试跨多个属性(如时间、位置和类别)分析数据时,将值透视到列标题中非常有用。您可以将多个行透视到列,反之亦然,或者根本不透视。

但这一切都相当抽象,所以让我们通过一个示例向您介绍数据透视表的工作原理。

如何创建数据透视表:示例

首先,假设我们想知道

  • 订单每年带来多少收入
  • 每个州(即,我们的客户住在哪里?)
  • 以及这些订单如何按产品类别细分

这是我们使用查询构建器的查询

Query Builder with a preview of the question

在这里,我们从 Orders 表中获取数据并汇总记录。我们按 User → StateCreated At(按年)和 Product → Category 对订单进行分组。对于每个组(例如 2017 年的阿拉斯加),我们计算订单数量并将这些订单的小计相加。(请注意,即使我们仅在数据部分选择了 Orders 表,Metabase 也会自动连接 ProductsPeople 表以获取州和类别数据。)

生成的表格是常规表格,每行包含州、年份和产品类别的组合。

现在,假设对于每个州,我们还想知道每个州年度小计的总和(例如,在所有年份中,Doohickey 产品的订单在阿拉斯加赚了多少钱?)。为了找出答案,我们可以自己将小计加起来,或者使用数据透视表为我们计算该数字。在屏幕左下方,单击可视化 > 数据透视表

The pivot table is born.

在我们的数据透视表中,Metabase 已将行、列和值设置为如下

  • 行:User → StateCreated At(按年)
  • 列:Product → Category
  • 值:CountSum of Subtotal

与平面表一样,数据透视表让我们看到,例如,2020 年我们在阿拉斯加 (AK) 的客户总共购买了 11 件 Doohickey 产品,价值 867.63 美元。但是现在数据透视表已将与阿拉斯加相关的行分组,并给出了这些阿拉斯加行的小计,从而使我们能够看到问题的答案:阿拉斯加人在 2016 年至 2020 年间购买了 103 件 Doohickey 产品,总计 6,900.43 美元。

除了组小计之外,数据透视表还包括行和列的总计

  • 行总计示例:所有州/省份的 Doohickey 订单总数。
  • 列总计示例:阿拉斯加所有产品类别中所有小计的总和。

我们可以通过折叠和展开行组来导航表格

Collapsed rows on a pivot table, showing only the groupings subtotals. Only Colorado

现在,让我们尝试透视表格。在屏幕左下方,我们将单击设置。要透视表格,我们将在三个存储桶(行、列和值)之间移动字段。

单个存储桶内的顺序很重要,因此让我们首先通过在单个存储桶(行存储桶)内重新排列表格来开始。如果我们切换用于表格行的字段顺序,将 Created At 放在 User → State 之上,表格将重新排列自身

Reordering the columns within a single bucket rearranges the table.

现在,表格首先按年份分组,然后给出每个州/省份在每个产品类别中的订单细分。

我们还可以在存储桶之间切换字段,例如将 Product → Category 从列移动到行,并将 User → State 从行移动到列。

Pivoting to group rows by product category.

您还可以为给定的行分组关闭小计

You can toggle subtotals on or off.

与平面表一样,我们有一些排序和格式化选项,我们可以单击表格中的值以调出钻取菜单,这将使我们能够钻取数据

Sorting and formatting options, as well as the action menu.

如何创建数据透视表:限制

数据透视表仅适用于支持连接和表达式的关系数据库,因此您将无法将它们与 MongoDB 等数据库一起使用。它们也仅适用于使用查询构建器编写的问题。此处的解决方法是,如果您必须使用 SQL 来编写问题,您可以保存该问题,然后将其结果用作查询构建器问题的起点,以便构建问题。这里的技巧是在 GUI 问题中完成聚合和分组。也就是说,使用 SQL 问题来获取您想要处理的原始数据(可能创建模型),然后启动新的 GUI 问题来过滤、汇总和分组该数据。

例如,要使用 SQL 问题来构建我们上面创建的数据透视表,您首先需要编写一个 SQL 查询来获取您想要处理的原始数据

SELECT people.state,
       products.category,
       orders.subtotal,
       orders.created_at
FROM   orders
       INNER JOIN products
               ON orders.product_id = products.id
       INNER JOIN people
               ON orders.user_id = people.id

请注意,我们只是在这里抓取记录;没有汇总或分组。接下来,我们保存该 SQL 问题(此处为 Raw data for pivot table),并启动一个新的查询构建器问题,该问题使用该问题的结果作为其起始数据。

Picking a saved question as your starting data.

现在我们可以计数、求和以及分组我们的结果

The Query Builder summarizing data from a saved question.

当我们可视化这个问题时,我们现在将能够使用数据透视表可视化来查看组小计和总计。

进一步阅读

下一步:漏斗图

使用漏斗图显示步骤的进展。

下一篇文章