星型架构设计

已完成

Power BI 语义模型由单个表组成,这种情况并不常见。 单表模型可以是一种简单的设计,可能是适用于数据浏览任务或概念证明的设计,但不是最佳模型设计。 最佳模型遵循星型架构设计原则。 星型架构是关系数据仓库设计者通常使用的一种设计方法,因为它提供了一个易于使用的结构,并且它支持高性能的分析查询。

此设计原则称为星型架构,因为它将模型表分为事实或维度。 在一个关系图中,事实数据表形成星型的中心,而维度表则放置在事实数据表的周围,表示星型的点。

事实数据表

事实数据表用于存储累积的行,这些行表示观察结果或记录特定业务活动的事件。 例如,销售事实数据表中存储的事件可以是销售订单和订单行。 也可以使用事实数据表记录存货变动、存货结余或每日汇率。 事实数据表通常包含大量的行。 随着时间的推移,事实数据表行将累积。 在分析查询(将在此模块的后续部分对它进行定义)中,通过汇总事实数据表数据来生成值,如销售额和数量。

维度表

维度表描述业务实体,这些实体通常表示人员、地点、产品或概念。 日期维度表是常见的概念维度表示例,此表会针对每个日期包含一个行。 借助维度表中的列,可以对事实数据表数据进行筛选和分组。

每个维度表都必须具有一个唯一列,此列称为键列。 唯一列不包含重复的值,并且任何情况下都不会有缺失的值。 在产品维度表中,此列可能命名为“ProductKey”或“ProductID”。 其他列可能会存储描述性的值,如产品名称、子类别、类别、颜色等。 在分析查询中,这些列用于对数据进行筛选和分组。

比较事实数据表和维度表

下图比较了事实数据表和维度表的特征。

特征 维度表 事实数据表
模型用途 存储业务实体 存储事件或观察结果
表结构 包含一个键列和用于进行筛选和分组的描述性列 包括维度键列和可以汇总的数值度量值列
数据卷 通常包含的行较少(相对于事实数据表) 可以包含大量行
查询用途 用于筛选和分组 用于汇总

关联星型架构表

在模型中,维度表通过使用一对多关系与事实数据表相关联。 通过此关系,应用于维度表列的筛选器和分组可以传播到事实数据表。 此设计模式很常见。

维度表可用于筛选多个事实数据表,可以通过多个维度表对事实数据表进行筛选。 但是,将事实数据表直接关联到其他事实数据表并不是一种好的做法。

若要实践此概念,请下载 Adventure Works DW 2020 M01.pbix 文件,打开此文件,然后切换到模型关系图。

请注意,该模型由七个表组成,其中一个表名为“Sales”且为事实数据表。 其余的表是维度表,它们的名称如下:

  • 客户
  • 日期
  • Product
  • Reseller
  • 销售订单
  • 销售区域

请注意维度表和事实数据表之间的关系,并且每个关系筛选器方向都指向事实数据表。 因此,当筛选器应用于维度表列(以按列值进行筛选或分组)时,将筛选和汇总相关的事实数据。

如果你观察此图案,可能会看到星型形状。

有关星型架构设计的详细信息,请参阅了解星型架构和 Power BI 的重要性