数据立方体

以超过两个维度思考您的数据。

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

当您根据某些度量聚合数据时,您可以想象您正在将多个表堆叠在一起,结果看起来有点像立方体。这种立方体的比喻很贴切,但只能帮助我们到此为止——实际上,大多数多维数据都远不止三个维度。有时您会听到将此概念称为超立方体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 中,这是通过汇总完成的。