数据立方体

以多于两个维度思考您的数据。

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

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

© . All rights reserved.