你的位置:首页 > 软件开发 > 操作系统 > PowerBI 第二篇:数据建模

PowerBI 第二篇:数据建模

发布时间:2017-04-27 12:00:13
在分析数据时,不可能总是对单个数据表进行分析,有时需要把多个数据表导入到PowerBI中,通过多个表中的数据及其关系来执行一些复杂的数据分析任务,因此,为准确计算分析的结果,需要在数据建模中,创建数据表之间的关系。在PowerBI中,关系(Relationship)是指数据表之间 ...

PowerBI 第二篇:数据建模

在分析数据时,不可能总是对单个数据表进行分析,有时需要把多个数据表导入到PowerBI中,通过多个表中的数据及其关系来执行一些复杂的数据分析任务,因此,为准确计算分析的结果,需要在数据建模中,创建数据表之间的关系。在PowerBI中,关系(Relationship)是指数据表之间的基数(Cardinality)和交叉筛选方向(Cross Filter Direction)。

基数(Cardinality)

基数关系类似于关系表的外键引用,都是通过两个数据表之间的单个数据列进行关联,该数据列叫做查找列,两个数据表之间的基数关系是1:1,或者1:N,或者N:1,基数关系表示的含义是:

  • 多对一 (N:1):这是最常见的默认类型。这意味着一个表中的列可具有一个值的多个实例,而另一个相关表(常称为查找表)仅具有一个值的一个实例。
  • 一对一 (1:1):这意味着一个表中的列仅具有特定值的一个实例,而另一个相关表也是如此。

例如,TableA和TableB之间的基数关系是1:N,那么TableA是TableB的查找表,TableB叫做引用表,在查找表中,查找列的值是唯一的,不允许存在重复值,而在引用表中,查找列的值不唯一。

在PowerBI中,有时,引用表会引用查找表中不存在的数据,默认情况下,PowerBI会自动在查找表中增加一个查找值Blank,所有不存在于查找表中的值,都映射到Blank。

交叉筛选方向(Cross Filter Direction)

筛选方向是筛选的流向,表示一个筛选条件对其他相关表进行过滤,例如,TableA对TableB过滤,其筛选方向可以是双向,或单向:

  • 双向:默认方向,这意味着为进行筛选,两个表均被视为是同一个表,这非常适用于其周围具有多个查找表的单个表。
  • 单向:这意味着一个表只能对另外一个表进行筛选,而不能反向过滤。

一,双向筛选关系

在星型结构中,中间是一个引用表,周围是多个查找表,引用表和查找表之间的筛选关系是双向的,如下所示:

PowerBI 第二篇:数据建模

通常情况下,双向筛选用于星型结构,是默认的方向,但是,双向筛选不太适合以下关系图中的模式,在该模式中,筛选方向形成一个循环,对于此类关系模式,双向筛选会创建一组语义不明的关系,例如,求取 TableX 中某个字段的总和,如果选择按照 TableY 中的某个字段进行筛选,则不清楚筛选器应该如何流动,是通过顶部表,还是底部表进行流动? 

PowerBI 第二篇:数据建模

如果双向筛选导致数据关系的多义性,那么,可以导入表格两次(第二次使用其他名称)以消除循环。 这会产生类似于星型架构的关系模式,借助星型架构,所有关系均可设置为“双向”。

二,创建间接关系

在PowerBI报表的关系中,直接关系是指关系的两个表直接接触,间接关系是指通过中间表建立关系的两个数据表,间接关系关联的两个数据表不直接接触,如下图,数据表Students和StudentCourse之间的关系是直接关系,数据表Course和StudentCourse之间的关系是直接关系,而数据表Students和Courses之间通过StudentCourse建立间接关系。间接关系通过一系列有直接关系的数据表,能够实现数据的交互,这是PowerBI自动实现的,为创建复杂的数据模型提供了支持,但是,在数据建模中使用间接关系时,务必谨慎,PowerBI对Filter选项的全选和不选的处理是有区别的。

PowerBI 第二篇:数据建模

1,使用以下脚本创建具有多层关系的数据表

脚本创建了四个表,分别是用于表示学生,课程,学生选课,学生演讲,学生和课程之间的关系是1:N,学生和演讲活动之间的关系是1:N

PowerBI 第二篇:数据建模PowerBI 第二篇:数据建模
create table dbo.Courses(CourseID int not null primary key clustered,CourseName varchar(32) not null)create table dbo.Students(StudentID int not null primary key clustered,StudentName varchar(64) not null)create table dbo.StudentCourse(  StudentID int not null,  CourseID int not null,  constraint PK__StudentCourse primary key clustered(StudentID,CourseID))create table dbo.StudentSpeaker(  StudentID int not null,  EventID int not null)insert into dbo.Courses(CourseID,CourseName)values(1,'English'),(2,'Chinese')insert into dbo.Students(StudentID,StudentName)values(1,'stu_a'),(2,'stu_b'),(3,'stu_c'),(4,'stu_d')insert into dbo.StudentCourse(StudentID,CourseID)values(1,1),(2,1),(3,2)insert into dbo.StudentSpeaker(StudentID,EventID)values(1,101),(4,102)

原标题:PowerBI 第二篇:数据建模

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录