创建数据透视表
了解如何使用Metabase中的不同数据库创建透视表。
什么是透视表?数据透视表是一种汇总和分组数据的表格方式。它们是分析师工具箱中的一个有价值的工具,因为它们是展示和重新安排大量信息的有效方法。它们的工作原理如下:
在Metabase中创建透视表时不支持数据库
数据透视表当前不可用于Metabase中的以下数据库:
Druid
Google Analytics
MongoDB
数据透视表适用于所有其他官方支持的数据库.
透视表与常规表
典型的基本表是单元格网格。每个列表示单个记录,每行有一条记录。
数据透视表是一个对行和列进行分组的表,它包括具有这些分组的聚合值的摘要行。这些合计值通常称为小计和总计,尽管这些合计也可以是其他值,例如平均值。
它们之所以被称为透视表,是因为您可以将列旋转(“pivot”)90度,以便该列中的值本身成为列标题。当试图跨多个属性(如时间、位置和类别)分析数据时,将值透视到列标题中非常有用。您可以将多行透视到列,反之亦然,也可以根本不透视任何行。
但是这些都是非常抽象的,所以让我们通过一个示例来让您了解透视表是如何工作的。
如何创建透视表:示例
首先,假设我们想知道:
每年订单带来多少收入
对于每个州(即,我们的客户住在哪里?)
以及这些订单是如何按产品类别细分的
下面是我们使用笔记本编辑器:
图1编辑的问题和默认的结果。
这里我们从Orders记录汇总表。我们把订单按用户→州,创建于(按年计算),以及产品→类别。对于每个组(比如2017年的阿拉斯加),我们统计订单数量,并将这些订单的小计相加。(请注意,即使我们只选择Orders表中,Metabase将自动参加这个产品和人获取状态和类别数据的表。)
生成的表是一个常规表,其中包含状态、年份和产品类别的每个组合的行。
现在,假设每个州,我们还想知道每个州的年度小计总数(例如,阿拉斯加所有年份的Dooickey产品订单赚了多少钱?)。为了找到答案,我们可以自己把小计加起来,或者使用透视表来计算这个数字。在屏幕左下角,单击可视化>数据透视表.
图2。透视表诞生了。
在透视表中,Metabase设置了行、列和值,如下所示:
行:用户→
州和创建于(按年度)
列:产品→
类别
值:计数和小计合计
与平面表一样,透视表让我们看到,例如,在2020年,我们在阿拉斯加(AK)的客户以867.63美元的价格购买了11种Dooickey产品。但现在透视表已经将与阿拉斯加相关的行分组,并给出了这些阿拉斯加行的小计,让我们看到我们问题的答案:阿拉斯加人从2016年到2020年购买了103把小玩意,总计6900.43美元。
除了组小计之外,数据透视表还包括行和列总计:
Row grand
total示例:所有状态下的dooickey订单总数。
列总计示例:阿拉斯加所有产品类别的所有小计的总和。
我们可以通过折叠和展开行组来导航表:
图3。折叠了数据透视表上的行,仅显示分组小计。只有科罗拉多州的集团扩大了。
现在,让我们试着旋转数据表。在屏幕的左下角,我们将单击设置。若要透视表,我们将在三个存储桶之间移动字段:行、列和值。
Orders在内部一个bucket很重要,所以让我们从简单地在一个bucket中重新排列表开始:rows bucket。如果我们切换要用于表行的字段的顺序,则创建于在上面用户→州,表将自行重新排列:
图4。重新排序单个存储桶中的列将重新排列表。
现在,该表首先按年份分组,然后给出每个产品类别中每个状态的订单明细。
我们也可以交换场地之间水桶,像在移动产品→类别从一列到一行,以及用户→州从一行到一列。
图5。正在按产品类别将行分组。
也可以关闭给定行分组的小计:
正在上传…重新上传取消
图6。您可以打开或关闭小计。
与平面表格一样,我们有一些排序和格式化选项,我们可以单击表中的值来显示操作菜单,这会让我们钻取数据.
正在上传…重新上传取消
图7。排序和格式选项以及操作菜单。
如何创建透视表:限制
数据透视表仅适用于关系数据库它支持连接和表达式,所以你不能在MongoDB和googleanalytics这样的数据库中使用它们。它们也只适用于由查询生成器。解决方法是如果您必须使用SQL语言要编写问题,可以保存该问题,然后使用以结果为出发点为了GUI问题为了建立一个问题。这里的诀窍是聚合在GUI问题中分组。问题是你想用原始数据来处理创建模型),然后开始一个新的GUI问题滤波器,对这些数据进行汇总和分组。
例如,要使用SQL问题来构建我们上面创建的透视表,首先要编写一个SQL查询来获取要使用的原始数据:
SELECTpeople.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问题保存为透视表的原始数据),并启动一个新的简单问题或自定义问题,该问题的结果作为其起始数据。
正在上传…重新上传取消
图8。选择保存的问题作为起始数据。
现在我们可以对结果进行计数、求和和和分组:
正在上传…重新上传取消
图9。笔记本编辑器从保存的问题中汇总数据。
当我们可视化这个问题时,我们现在可以使用透视表可视化来查看组小计和总计。