Power Pivot关系理论的重中之重——关系模型的进一步了解

2020-03-23 18:40:54 浏览数 (1)

如果对于关系及模型不太清楚的,这篇文章希望能够让你清清楚楚的了解。理解了关系及模型,那Power Pivot算真正的入门了,之后就是函数的运用了。

一、 关系的进一步理解

(一) 关系模型

我们可以看下,同样的3张表,但是关系是却不一样,导致之后的操作也会不同。图1和图3是链式模型,图2是星型关系。图1的链式是从左1开始,而图3是从右1开始。

另外下面这种模型就相对容易出错,在书写度量值或者添加列的时候会比较难以理解,当然并不是不能有这类模型关系,但不建议,这类关系需要特别注意处理。

(二) 关系函数

最基础的2个关系函数,也属于筛选函数的一种,Related和RelatedTable。

1. Related:从多端关联到1端的对应字段的,并返回
2. RelatedTable:从1端关联到多端的,并返回

(三) Related

1. 语法

RELATED(<ColumnName>)

参数

描述

ColumnName

包含所需值的列

2. 返回

值(标量)——与当前行相关的单个值。

3. 注意事项
  • 只能从具有关联的表中获取值,无关联则返回错误。
  • 只能用于计算列或组合行扫描函数(sumx等)。
4. 作用
  • 类似Excel里面Vlookup中最后一位参数为0的绝对匹配
  • 类似Index和Match组合函数的match的最后参数为0的绝对匹配
5. 案例

A. 图1关系 如果要引用值,那我们需要在末端(多端)去引用。最末端是【老师】的表,因为我们是要引用值,那我们使用函数Related。

可以看到关联引用出来包含了所有上端的表的字段名。例如我们可以直接引用其上端的2个表里面关联的字段值。 如果我们在班级表里做Related引用的话,只能看到对应其上端(1端)的表的内容。

B. 图2关系 因为图2是星型模型,只有中间一个表示处于多端,其余2个表都是属于1端。所以如果要使用Related函数只能在中间表格 【班级副本】中使用。

C. 图3关系 图3和图1是反过来的,所以原理和图1一样,只不过反过来操作。

(四) RelatedTable

1. 语法

RELATEDTABLE ( <Table> )

参数

描述

Table

包含所需值的表

2. 返回

表——包含单列或者多列的表

3. 注意事项
  • 有关系的话,根据关系返回结果表。
  • 无关系的话,直接返回结果表。
4. 作用

是函数CalculateTable的快捷写法。

5. 案例

A. 图1关系 如果要引用表,那我们可以在初始端(1端)去引用。初始端是【成绩】的表,因为我们是要引用表,那我们使用函数RelatedTable。

这里为什么要在外面在写上一个CountRows函数呢?那是因为所有在添加列或度量值必须要求返回的是一个值(标量),CountRows是计算表格的行数。

B. 图2关系 如果要引用有关系的表,则会涉及到行上下文的计算,如下图

因为这2个表之间有关系,是因为姓名对应的关系,所以计算流程是这样。每行都是先去根据当前姓名值去对应删选后再进行聚合函数(统计函数),并返回结果。

如果要引用的表是无关系的,则会返回整个表。如下图

因为这2个表示没有任何关系,所以返回的是整个表的计算结果。因为班级这个表总行数为3,所以返回的每行数据都是3。

因为不涉及到行上下文,所以在度量值里面书写也是同样返回这个值。

C. 图3关系 我们可以看到,在我们输入RelatedTable这个函数的时候,会提示所有的表,包括有关系和没关系的,同时也会包含表本身(有关系)。因为这些表都是可以被计算,只不过计算返回结果不同。

(五) 透视表相关性

1. 链式模型

A. 1端的字段拖放进入数据透视表的列或行。 B. 多端的字段拖放进数据透视表的值

2. 星型模型

A. 多端的表基本上都是事实表,所以大部分的计算都是基于事实表。所以多端的数据作为数据透视表的值进行计算。 B. 1端的表基本上都是维度表,也遵循着1端的字段作为透视表的列或行。如果想计算1端表的值,可以通过函数Related把相关字段值引用到多段

(六) 筛选联动

度量值我们可以写在任意的表里面。但是写在不同的表里,筛选结果是不一样的。同时请注意,这个多端和1端都是相对的。图1班级表对应成绩表是多端,但是对应老师表则是1端。

1. 写在多端,计算1端
  • 结果:不随多端筛选而变化。
  • 处理:把1端的值通过添加列到多端后,再写在多端。
2. 写在1端,计算多端
  • 结果:随1端筛选而变化。
  • 处理:只要计算的值是多端的,不管写在哪里都可以。
3. 写在1端,计算1端

在使用维度表的时候,也必须使用1端的字段。

4. 写在多端,计算多端

这种结果是最好的,最没有争议的。

0 人点赞