数据立方体

从超过两个维度思考你的数据。

数据立方体是一种模式,它针对分析查询进行了优化。它们由度量(如订单计数)组成,这些度量有一个或多个常用访问的维度。这些度量是预先计算的,这意味着数据库中的某个作业会从原始数据中提取,执行这些计算,并创建一个新表来存储结果,以便人们可以查询结果,而不是每次都从头开始查询和计算。

当你根据某个度量聚合数据时,你可以想象你正在将几个表格叠加在一起,结果看起来有点像立方体。这个立方体隐喻很贴切,但只能带我们这么远——在现实中,大多数多维数据远不止三个维度。有时你会听到这个概念被称为超立方体OLAP立方体,因为它在分析查询中的应用。

数据立方体将相关信息排列在一起,比如存储特定产品在不同门店位置一段时间内的销售额。这使得分析更加灵活,例如识别特定产品的趋势或评估门店的表现。当你的数据以立方体形式结构化时,复杂OLAP查询的大部分工作都是预先计算的,这意味着这些查询可以比将这些表分别存储时要快得多。

数据立方体过时了吗?

数据立方体在20世纪90年代变得流行,当时计算能力和内存都很珍贵。当时,执行复杂分析查询会对系统造成重大压力,并且聚合和缓存这些频繁访问的度量是有意义的。

然而,近年来,数据仓库、列存储以及更便宜、更强大的计算机的兴起导致了分析世界中的一个范式转变:对分析速度优化的关注让位于对数据集可用性的优先考虑,并确保数据以便于查询和探索的方式格式化。

所以,是的,数据立方体已经不再受欢迎,但如果你在处理数据库,你可能会在某个时候遇到这个概念和数据立方体操作。

Metabase中的数据立方体操作

为了给你一个典型的数据立方体操作概述,我们将使用Metabase的示例数据库来切割、切块、旋转、钻取和滚动数据立方体的近似值。我们将从对Orders表提出一个问题开始,以查看按产品类别和订单创建年份分组的订单计数。

Orders grouped by year and product category.

重要的是要知道Metabase不会转换你的链接表成为数据立方体,但如果你的数据已经以立方体结构,Metabase将没有问题理解这些立方体。

无论是哪种方式,Metabase 都可以执行与您在数据库软件中的立方体上执行类似的操作,就像我们下面要演示的那样。然而,如果您的数据在添加数据源时并未配置在立方体中,那么在 Metabase 中执行这些类似的操作并不会使这些过程运行得更快。从这个意义上讲,Metabase 有助于组织,并使这些操作易于执行,但它们的性能仍然取决于您的基础数据库。

切片和切块

从一个数据立方体中“切片”指的是将一个表分离出来,根据单个维度分析数据。这基本上是创建这个立方体的相反操作,但您可以从立方体的任何角度进行切片。

与切片类似,“切块”数据立方体让我们可以放大我们数据的特定子集的值,就像雕刻出一个更小的立方体来更仔细地查看多个维度。

在 Metabase 中,切片和切块是通过过滤器完成的,这些过滤器根据特定的维度缩小我们的结果。下面,我们过滤了上面的相同表,只包括产品类别为 Doohickey 的订单数量——这是一个切片的例子。

Filtering or slicing our data in Metabase.

切块操作看起来类似,但会包括多个维度,比如如果我们想看2016年和2017年包含 Gizmos 的订单。

Dicing our data in Metabase using filters.

转置

转置我们的立方体允许我们从不同的角度查看它,并有机会交换组成我们行和列的字段。这里的小计不是预先计算的;Metabase 会即时进行这些计算。

A pivot table in Metabase, where our four product categories now make up the rows and each year a column.

向下钻取

执行一个向下钻取操作可以让我们更细致地查看任何给定的维度。我们可以在 Metabase 中通过根据一个或多个维度拆分数据来向下钻取我们的数据(也称为钻取),比如如果我们想按产品类别和产品供应商查看订单。

向上汇总

向上汇总操作在数据立方体的给定维度上提供汇总金额。在 Metabase 中,这是通过汇总完成的。