前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Power Pivot数据建模基础:数据表间的4种基本关系类型

Power Pivot数据建模基础:数据表间的4种基本关系类型

作者头像
大海Power
发布于 2021-08-30 01:52:44
发布于 2021-08-30 01:52:44
3.7K0
举报

小勤:在前面《表间关系一线牵,何须大量公式拼数据》的文章里提到,如果产品表的产品名称重复的话,是不能建立表间关系的,这具体是什么情况?

大海:在数据处理的时候,我们经常需要对2张相关的表格建立表间关系,比如订单表和订单明细表,订单明细表里的产品和产品表……那么2张表之间总是要能够找到明确的逻辑关系,才能建立表间关系,比如订单表里的订单编号和订单明细表里的订单编号是对应的。

小勤:那一般2个表之间都有哪些类型的关系呢?好像很复杂的样子啊。

大海:其实2个表之间的关系类型也很简单,莫非就4种。

小勤:4种?

大海:嗯。我们接下来通过数据的方式来看各种关系具体是什么样子的。

1. 首先,最最常见的关系,一对多,比如订单表和订单明细表,即订单表里的1条数据,对应订单明细表里的n条数据。

2. 其次,就是多对多关系,比如你的订单明细表里因为只有产品名称,而产品表里的产品名称不是唯一的,两个表间通过产品名称来看的话,订单明细表里一条数据,可能在产品表里找到多条数据,而在产品表里的一条数据,也可能在订单明细表里找到多条数据。如下图所示:

这种情况下,两个表之间的数据关系其实是不清晰的,因为比如我要找订单明细表里的“小米”的供应商,我就不知道应该是“宏仁”的,还是“德昌”的。

另外,多对多关系还有一种情况,数据表之间的关系其实是明确的,但要靠多个字段共同来确定,比如上面的订单明细表和产品表,如果订单明细表里增加一列“供应商”的内容,那么这两个表之间,就可以通过产品名称和供应商2列一起确定两表之间的明确关系,如下图所示:

可惜,无论是哪一种多对多关系,Power Pivot里是不支持的。

3. 第三种关系是一对一关系,就是2个表中都有一列,他们之间的关系完全是一一对应,都没有多的重复的内容。比如下面2个产品表:

4. 最后,也是最简单的,但可能是最麻烦的,就是两个表间的关系是没有关系。比如订单表和产品表之间,就完全找不到关系。

小勤:知道了。那像多对多关系的情况下,Power Pivot里要怎么处理呢?

大海:一般来说,应该在订单明细表里使用产品ID,这样的话,就能明确订单明细表里的“小米”到底应该是产品表里的第9条还是第12条数据。或者,在实际就是转化为前面说的一对多关系。如果是订单明细表里有供应商字段的话,那么可以将产品名称和供应商连起来,构造一个新的字段,最终还是转换为一对多的关系。

小勤:啊,这有点像在Excel里用vlookup的时候,如果要通过多项内容联合查找的话,也要先连接起来一样。

大海:对的。

小勤:对了,为什么会有一对一这种关系呢?感觉好无聊啊,为什么不都放在一个表里搞定?不是没事找事吗?

大海:一般日常看到的数据通常数据量不大,都可以放到一个表里,那样数据也好处理,但是,随着数据量越来越大,有很多时候一张表可能很复杂,可能有几百上千列,如果都放在一张表里的话,可能会极大地影响数据的计算效率,所以,就会考虑将这些表进行拆分,比如将一些日常很少用的内容(字段)放到一张表,而一些需要经常更改调用的内容放到另一张表。

小勤:啊,原来这样。另外,对于没有关系的情况,实际上,订单表和订单明细表有关系,而订单明细表和产品表之间有关系,那他们算不算有间接关系呢?

大海:你真会牵线。也可以这么理解吧,所以在Power Pivot里你只要对订单表和订单明细表、订单明细表和产品表分别建立表间关系,那么就可以在订单表里通过一定的方法得到产品表的相关信息,或在产品表里通过一定方法获得订单表里的信息,不过这方面的内容比较复杂一些,在后续的数据建模中咱们再一起看。

小勤:好的。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-10-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Excel到PowerBI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Excel中的数据建模:表间关系一线牵,何须大量公式拼数据
大海:在传统数据透视表里的确是要那么干的,但到了Power Pivot里,当然就不用辣妈麻烦啦。直接拉根线连起来就把表的关系建好了,在数据分析的时候就可以直接用他们的关系了,数据根本不需要接进来。
大海Power
2021/08/30
1.9K0
为什么我的两个表建立数据关系有问题?
小勤:真的嘢!里面有两个小米,一个是宏仁生产的,一个是德昌生产的。但是,产品名称重复不行吗?
大海Power
2021/08/30
1.2K0
大数据分析工具Power BI(五):数据模型介绍
发生在现实世界中的操作型事件,其所产生的可度量数值,存储在事实表中,事实表也叫明细表。例如,一个按照地区、产品、月份划分的销售量和销售额的事实表如下:
Lansonli
2023/03/25
2.1K0
大数据分析工具Power BI(五):数据模型介绍
跨查询定位数据:换个方法轻松实现合并查询
大海:可以的,比如有时候只需要匹配另一个表里某一项内容,觉得用合并查询的方式太“重”,那么可以直接通过跨查询引用和定位的方式来实现,比如这个订单明细表和产品表的例子:
大海Power
2021/08/30
5800
既然Power Pivot表间建关系后可直接调数据,还要Lookupvalue这个函数干嘛?
小勤:在Power Pivot里对两个表建立了关系之后,就可以直接调用相关表的数据了,那还要Related或Lookupvalue这个函数干嘛呢?
大海Power
2021/08/30
6790
PBI-基础入门:通过一个简单的案例体会Power BI的数据分析过程
大海:好吧,Power Query你学了那么多,Power Pivot也基本入门了,Power BI也可以同步开始学了,反正PQ和PP的知识除了操作上有一点点儿区别外,都是能在Power BI里直接用的。
大海Power
2021/08/30
3.6K0
链接回表,让Power Pivot和Excel的互动更加精彩
小勤:不是啦,数据透视都是汇总的结果,我想要在Power Pivot模型里的原始明细表或这些表组合的一些明细数据。
大海Power
2021/08/30
1.9K0
雪花维度合并查询重复列后,Power BI文件竟然还变小了! | 数据模型优化
前几天,我发了文章《PowerBI数据模型优化,从导入数据开始》,没想到引起不少朋友的兴趣和认可。
大海Power
2022/04/11
9400
雪花维度合并查询重复列后,Power BI文件竟然还变小了! | 数据模型优化
只是一个简单的分区间问题?No,我要告诉你更通用的表间数据匹配方法!
小勤:用RELATED或LOOKUPVALUE函数都是精确匹配,但,有时候我想实现分区间的操作,怎么办?类似LOOKUP函数(或VLOOKUP函数的模糊匹配)功能,比如说有价格区间如下图所示:
大海Power
2021/08/30
1.1K0
CodeWave系列:4.CodeWave 智能开发平台 模型构建及使用
前一节我们学习了CodeWave的页面布局和页面呈现,现在我们已经可以通过CodeWave进行简答的页面搭建了,本节我们开始学习数据模型的构建以及通过数据模型进行相关页面开发的功能。
Freedom123
2024/03/29
4680
CodeWave系列:4.CodeWave 智能开发平台 模型构建及使用
如何以正确的方法做数据建模?
数据模型是进行报告分析的基础。为此提供了结构和有序的信息。为确保提供更好的性能、可靠性和准确性,将数据加载到正确设计的模型中是数据分析很重要的一项工作。
Banber可视化云平台
2021/04/29
3.2K0
如何以正确的方法做数据建模?
SQL可以不懂,但表间数据匹配(合并查询)这6种联接类型必须要理解!
小勤:合并查询里的联接种类怎么这么多啊!左外部、右外部、完全外部、内部、左反、右反6种!分别都是什么意思?
大海Power
2021/08/31
1.5K0
Power Pivot里的表间关系不起作用?
小勤:那有什么意义?反正我放了值进去都会起作用的,自然就变成了其相对应的关系了,干嘛不直接在拉字段到行字段的时候就限制好呢?
大海Power
2021/08/30
1.7K0
第11章_数据库的设计规范
🧑个人简介:大家好,我是 shark-Gao,一个想要与大家共同进步的男人😉😉
程序员Leo
2023/08/02
5430
第11章_数据库的设计规范
Power Pivot里怎么区分BLANK和0?
但有的产品实际上是不存在的(可能是错误,也可能是其他业务原因),所以当我们读取相应的库存数量到订单明细表的时候,有的结果是0,有的是空(BLANK):
大海Power
2021/08/30
1K0
一个度量,是怎样炼成的? | DAX重要思路
前面,我在文章《DAX的核心,其实只有4个字!》里提到,DAX核心思想,就是“筛选、计算”四个字,当然,这个总结非常抽象,接下来,我会用一个又一个的例子来给大家具体讲,大家将慢慢体会到,几乎所有的度量都紧紧围绕这个思想而展开。
大海Power
2022/04/11
6830
一个度量,是怎样炼成的? | DAX重要思路
数据库设计之概念结构设计工具_数据库关系设计
(1)能真实、充分地反映现实世界,是现实世界的一个真实模型。 (2)易于理解,从而可以用它和不熟悉计算机的用户交换意见。 (3)易于更改,当应用环境和应用要求改变时,容易对概念模型修改和扩充。 (4)易于向关系、网状、层次等各种数据模型转换
全栈程序员站长
2022/11/08
2.4K1
数据库设计之概念结构设计工具_数据库关系设计
从AdventureWorks学习数据库建模——保留历史数据
在业务需求中,经常需要我们在系统中能够记录历史信息,能够查看到历史变动情况,这时我们可以通过增加开始结束时间字段来记录数据的历史版本。对数据的历史记录主要分为:关系、属性历史,实体历史和变更历史。
深蓝studyzy
2022/06/16
5980
从AdventureWorks学习数据库建模——保留历史数据
CALCULATE函数这个带行下文的简单公式,可能90%的人都没搞懂怎么算的! | DAX实战
一个使用了CALCULATE函数的公式,到底是怎么样计算得到它的结果的?如果没有真正搞懂CALCULATE函数计值流(计算过程)的话,即使这个公式很简单,也可能会无法理解!
大海Power
2022/05/25
1.7K0
CALCULATE函数这个带行下文的简单公式,可能90%的人都没搞懂怎么算的! | DAX实战
调整建模让 Power BI Copilot 得到更好结果
每个人都对 Power BI Copilot 感到兴奋,新发布的预览版能够使用 Copilot 询问有关语义模型中的所有数据的问题,而不仅仅是报告中显示的数据,这是一个巨大的进步。
陈学谦
2024/10/14
1180
调整建模让 Power BI Copilot 得到更好结果
推荐阅读
相关推荐
Excel中的数据建模:表间关系一线牵,何须大量公式拼数据
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文