本篇文章将介绍数据模型的相关知识。数据模型是DAX的灵魂,所有DAX表达式的计算都离不开数据模型,因此能否掌握好数据模型的知识关系着以后DAX的学习难度,建议把本文所介绍的所有知识点都记忆下来。
数据模型的知识点可以概括为如下:
- 按住鼠标拖动,把相应字段连接起来即可创建关系
- 表间关系
- 一对多关系
- 多对一关系
- 一对一关系
- 多对多关系
- 无任何关系
- 表的称呼
- 位于一端的表称为上级表
- 若两张表之间的关系为一对一关系,那么两张表互为上级表
- 位于多端的表称为下级表
- 若两张表之间的关系为多对多关系,那么两张表互为下级表
- 上级表与下级表的概念是相对的,例如:T1子类 是 T0大类 的下级表,但 T1子类 又是 T2书号 的上级表。此外,T2书号不仅是 T1子类 的下级表,其也是 T0大类 的下级表
- 整个模型中,最后一个下级表一般称为事实表或数据表,其它表则称为维度表
- 位于一端的表称为上级表
- 关系箭头
- 关系箭头可以为单向,也可以为双向
- 关系箭头所指方向即为筛选关系的传播方向
- 关系箭头类似于二极管电阻,筛选关系只能顺着箭头指向传播,而不能逆向传播
- 关系的激活
- 筛选关系只能在激活状态下的关系上传播
- 一般来说,创建的关系即为激活状态,在激活状态下的关系线条为实线
- 在非激活状态下的关系线条为虚线
- 非激活状态下的关系可以当作不存在,但可以使用USERELATIONSHIP函数临时激活
- 关系的传播路径
- 筛选关系沿着关系箭头所指方向传播,使得上级表可以控制下级表,上级表的筛选关系可能要途经多张表才到达被控制的下级表,这个筛选关系传播过程中所经过的路径则称为传播路径
- 在两张表之间,关系的传播路径只能有一条
- 关系的歧义
- 上面所说的传播路径特指一对多关系的传播路径,当使用了多对多关系或双向箭头,那么两表之间的关系链条可能不止一条,这就会引起歧义,所以我们要尽量避免歧义的产生
- 在两表之间的关系链条不止一条时,DAX引擎在非必要时会只使用传播路径最短的关系链条
以上介绍的都是基础性的知识,我相信你们在看完上面的内容后很可能会好奇这个筛选关系是怎样传递的,而这些更具体的内容将在后面的文章中介绍,在介绍完前置内容后,我将一步一步地带领你们完善DAX的思维模式,敬请期待!
DAX系列文章中涉及到的案例文件,均已上传到QQ群:344353627,若有需要,可自行加群获取。