星型架构设计
Power BI 语义模型由单个表组成,这种情况并不常见。 单表模型可以是一种简单的设计,可能是适用于数据浏览任务或概念证明的设计,但不是最佳模型设计。 最佳模型遵循星型架构设计原则。 星型架构是关系数据仓库设计者通常使用的一种设计方法,因为它提供了一个易于使用的结构,并且它支持高性能的分析查询。
此设计原则称为星型架构,因为它将模型表分为事实或维度。 在一个关系图中,事实数据表形成星型的中心,而维度表则放置在事实数据表的周围,表示星型的点。
事实数据表
事实数据表用于存储累积的行,这些行表示观察结果或记录特定业务活动的事件。 例如,销售事实数据表中存储的事件可以是销售订单和订单行。 也可以使用事实数据表记录存货变动、存货结余或每日汇率。 事实数据表通常包含大量的行。 随着时间的推移,事实数据表行将累积。 在分析查询(将在此模块的后续部分对它进行定义)中,通过汇总事实数据表数据来生成值,如销售额和数量。
维度表
维度表描述业务实体,这些实体通常表示人员、地点、产品或概念。 日期维度表是常见的概念维度表示例,此表会针对每个日期包含一个行。 借助维度表中的列,可以对事实数据表数据进行筛选和分组。
每个维度表都必须具有一个唯一列,此列称为键列。 唯一列不包含重复的值,并且任何情况下都不会有缺失的值。 在产品维度表中,此列可能命名为“ProductKey”或“ProductID”。 其他列可能会存储描述性的值,如产品名称、子类别、类别、颜色等。 在分析查询中,这些列用于对数据进行筛选和分组。
比较事实数据表和维度表
下图比较了事实数据表和维度表的特征。
特征 | 维度表 | 事实数据表 |
---|---|---|
模型用途 | 存储业务实体 | 存储事件或观察结果 |
表结构 | 包含一个键列和用于进行筛选和分组的描述性列 | 包括维度键列和可以汇总的数值度量值列 |
数据卷 | 通常包含的行较少(相对于事实数据表) | 可以包含大量行 |
查询用途 | 用于筛选和分组 | 用于汇总 |
关联星型架构表
在模型中,维度表通过使用一对多关系与事实数据表相关联。 通过此关系,应用于维度表列的筛选器和分组可以传播到事实数据表。 此设计模式很常见。
维度表可用于筛选多个事实数据表,可以通过多个维度表对事实数据表进行筛选。 但是,将事实数据表直接关联到其他事实数据表并不是一种好的做法。
若要实践此概念,请下载 Adventure Works DW 2020 M01.pbix 文件,打开此文件,然后切换到模型关系图。
请注意,该模型由七个表组成,其中一个表名为“Sales”且为事实数据表。 其余的表是维度表,它们的名称如下:
- 客户
- 日期
- Product
- Reseller
- 销售订单
- 销售区域
请注意维度表和事实数据表之间的关系,并且每个关系筛选器方向都指向事实数据表。 因此,当筛选器应用于维度表列(以按列值进行筛选或分组)时,将筛选和汇总相关的事实数据。
如果你观察此图案,可能会看到星型形状。
有关星型架构设计的详细信息,请参阅了解星型架构和 Power BI 的重要性。