在立方体中,尺寸和维度是什么意思?

我对Microsoft Sql Server Business Intelligence和Analysis Service非常陌生(虽然我多年来一直在使用SQL Server进行编程)。有人能用简单的话语(如果有可能还附带图片)来描述立方体中的度量和维度吗? 谢谢。
2个回答

思考一个你想要分析的过程或事件。 比如说你正在构建Lougle Analytics,并且想要分析到访量(而不是单页请求)。访问网站是一个过程。 一个事实表代表了你想要分析的过程或事件,在这种情况下它是一个网站访问列表。你可以拥有任意数量的事实表,每个过程或事件一个。 分析网站访问时,哪些信息可能对你有用?
  • 关于网络浏览器的信息(品牌、屏幕分辨率等)
  • 关于用户的信息(基于他们的IP地址,国家、州、城市、ISP)
  • 访问开始时间的信息(年、季度、月、周、日)
  • 访问持续时间
  • 引荐页面、登陆页面和退出页面的信息(标题、URL路径)
  • 访问期间访问的页面数量
从技术上讲,你可以把这些都放在一个表格里,就像在Excel中一样,但这会变得非常庞大非常快,所以我们将进行一级规范化。维度设计通常只是"把所有需要进行分析的东西放在一个大表里",然后再规范化一级。 因此,你的事实表看起来会像这样:
web_browser_key          bigint
ip_address_key           bigint
start_date_key           int
referring_page_key       bigint
landing_page_key         bigint
exit_page_key            bigint
duration_seconds         int
number_of_pages_visited  int
它有一堆键值,这些键值指向其他表中的值†,还有两个非键。这些非键是数值型的,被称为度量。你能计算出网络浏览器品牌名称的平均值吗?不能,所以它是一个维度。你能计算访问持续时间的平均值吗?可以,所以它是一个度量。 其他表被称为维度表,ip_address维度表可能如下所示:
ip_address_key  bigserial primary key, /* use meaningless surrogate keys */
ip_address      inet unique,
country         text,
division        text,
locality        text,
latitude        numeric(8,6),
longitude       numeric(9,6)

请注意,它并不是规范化的:国家可能来自城市(地点)。然而,在数据仓库中,我们首先关心的是促进分析。通过促进分析,我指的是避免深度连接

请注意,维度表中的一些数据是层次结构的:国家 > 划分 > 地点。您的OLAP服务器(希望如此)理解层次结构以支持钻取操作。

一个逻辑立方体只是您正在使用的维度和度量集合。与魔方不同,它可以有多个维度。只需将维度视为数据集中的列。

OLAP是您可以对数据集执行的一组操作,例如旋转、切片、挖掘、钻取。想象一下Excel中的数据透视表。一个OLAP服务器促进OLAP操作。

†通常没有外键


1我喜欢你用例子解释的方式,但有个小问题 - 在你的模式中没有提到“城市”,所以当你说“国家可以由城市派生”时,我不确定你的意思。 - Don Cheadle
@mmcrae 'locality' 是指城市/镇/村庄的通用名称。 - Neil McGuigan
你能对网络浏览器品牌名称取平均值吗?不行,所以它是一个维度。但是你可以通过计数来了解有多少用户通过该浏览器访问你的网站。这个维基百科页面指出,“度量是可以进行计算(例如求和、计数、平均、最小、最大)的属性。”这是否意味着所有列(包括维度)都是度量? - Mehdi Charife

在下面的图像中,这是一个基本星型模式的示例。维度是Dim_Tables。 通常情况下,这些是您想要通过数据进行分析的值。因此,您希望查看特定产品在特定国家和特定日期范围内的销售情况。 在fact_sales表中,您只有一个度量值,即Units_Sold。 度量值(在最简单的级别上)只是您希望根据维度中的条件进行聚合分析的事物。

Basic Star Schema

如果你还有其他更具体的问题想知道,请告诉我。


1这个图片似乎来自维基百科:https://en.wikipedia.org/wiki/Star_schema。你应该提及一下。 - Scarabee