ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 4527|回复: 5

[分享] 使用DAX函数处理相关表格而不使用关系

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-7-3 18:48 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Power Pivot只支持一种类型的两个表格之间关系,这就是“一对多”关系。你可以定义一个表格中的列(“多”端)对应于一个查找表格的标识列(“一”端)。DAX函数遵循这一关系提供支持功能,如RELATED和RELATEDTABLE函数。这类函数在查找相关数据的功能比Excel中的VLOOKUP函数更强。

如果要从“多”端的表格访问“一”端的列,可使用RELATED函数;而用RELATEDTABLE函数可从关系的“一”端返回一个表格,并包含所有与当前行相关的列。不同于REALTED函数RELATEDTABLE函数可遵循表格关系两个方向(“多对一”或“一对多”)。

在示例文件1中,数据模型里表格Orders和表格PriceList创建关系(注意关系是:PriceList表格“一”端对Orders表格“多”端),在Orders表格中分别通过计算列:“运费”和计算字段:“运费1”,解释了两个表格之间关系和相关函数的使用。

在实践中的数据模型不仅仅存在“多对一”或“一对多”这类关系,还存在“多对多”的关系。Power Pivot自身并不支持这类关系的处理,但通过使用一个桥接表和DAX函数可以帮助解决数据模型中“多对多”这类关系。本分享不涉及“多对多”这类关系问题,仅涉及DAX函数如何处理两个相关表格问题,需要了解DAX函数处理“多对多”关系问题,请参阅相关方面的资料。但对于了解DAX函数处理“多对多”关系问题也有一定参考价值。

本分享示例文件2中,表格Orders和表格PriceList间没有创建关系,而由DAX函数模拟表格Orders和表格PriceList间关系,既替代Excel示例文件1中的RELATED(PriceList[Cost] )来计算“运费”。 示例文件2所描述说明,当两个表格创建关系不可能时,使用DAX函数是有用的。详细用法请参阅示例文件2。

示例文件.rar

124.02 KB, 下载次数: 117

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2015-7-3 19:15 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
兄台,请详细点写个教程。

TA的精华主题

TA的得分主题

发表于 2015-7-3 19:43 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
要使用这两个函数,前提是对两个表建立关系

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-7-4 00:11 | 显示全部楼层
yeminqiang 发表于 2015-7-3 19:15
兄台,请详细点写个教程。

所谓不使用关系,即Orders表格和PriceList表格间没有创建关系。示例文件2中Power Pivot的关系图视图可以看到,数据模型Orders表格和PriceList表格之间不存在“多对一”关系。在示例文件1中的数据模型的两个表格通过Power Pivot创建关系后,使用RELATED函数在“多”端的Orders表格里添加计算列:“运费”和计算字段:“运费1”。

示例文件2实际上是将示例1文件中数据模型间的关系删除掉了,用以Demo仅使用DAX函数处理数据模型间的所谓“关系”,实践中这种“多对一”或“一对多”也可能就是无法实现。比如分享文中提及的“多对多”关系,当然“多对多”关系的处理可能更为复杂些。

示例文件1中数据模型Orders表格由于与PriceList表格间已存在“多对一”关系,再使用DAX函数分别编写计算列“运费”公式:= 'Orders'[重量] * RELATED('PriceList'[费用] ) 和计算字段“运费1”公式::= SUMX( 'Orders', 'Orders' [重量] * RELATED( 'PriceList'[费用] ) ),两公式中的RELATED( 'PriceList'[费用] )均涉及DAX函数中的RELATED函数,RELATED函数的作用已解释过了,不再重复。

示例文件2用以说明在数据模型两表格间没有创建“多对一”或“一对多”关系的情况下,完全由DAX函数处理两表格间的“关系”,实际上并不存在Power Pivot所处理的关系。示例文件2中使用CALCULATE( VALUES( 'PriceList'[费用] ),FILTER( 'PriceList', 'PriceList'[国家] = 'Orders'[国家] ) )部分来替代示例文件1计算列和计算字段中的RELATED( 'PriceList'[费用] )部分,实现计算“运费”效果。

TA的精华主题

TA的得分主题

发表于 2015-10-19 14:17 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
关注一下。

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-8-3 13:54 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 lee_tao57 于 2016-8-3 14:05 编辑

Italians新博客《Physical and Virtual Relationships in DAX》(《有关实际与DAX建立的虚拟关系》)涉及到有关数据表与查询表不建立之间关系,而通过 DAX 函数模拟之间关系进而实现数据表筛选问题。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-1 19:20 , Processed in 0.046047 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表