Power BI中创建父子层级二:父级单独产生值
一、父子层级
在数据分析中,经常会遇到父子层级问题,通常来说,父子层级又可以分为两种情况,一种为图1,江苏中烟的销量就是南京品牌和苏烟品牌的销量之和,南京品牌的销量就是南京(硬红)和南京(炫赫门)的销量之和,即父级的值为子级值的和,父级不单独产生值;另一种为图2,是组织的层级结构,现在如果要统计相关的报销费用,会发现老板层级产生的报销费用不仅仅只是其子级经理层的报销费用之和,还包括了老板自己产生的报销费用;同理,经理层的报销费用不仅仅是其子级组长层的报销费用之和,还包括了经理自己产生的报销费用,此时父级会单独产生值。为此,将父子层级分为两类:一类是父级不单独产生值,另一类为父级单独产生值。本文主要介绍第二种类型父级单独产生值的情况。
图1:
图2:
二、问题描述
已知某组织层级结构和二月份费用报销清单如下
图:层级结构
表:二月份费用报销清单
要求,通过父子层级结构统计二月份的报销费用汇总表。结果呈现如下图
表:二月份的报销费用汇总表
三、问题分析
1、创建层级路径
- 新建列,层级路径=层级路径 = PATH('二月份费用报销清单'[姓名],'二月份费用报销清单'[直属上级])
2、创建层级
- 新建列,层级1 = PATHITEM('二月份费用报销清单'[层级路径],1)
- 新建列,层级2 = PATHITEM('二月份费用报销清单'[层级路径],2)
- 新建列,层级3 = PATHITEM('二月份费用报销清单'[层级路径],3)
- 新建列,层级4 = PATHITEM('二月份费用报销清单'[层级路径],4)
3、修正层级
分析:对于有报销费用且存在子级的人员姓名,在其子级显示其姓名,但在其次子级不显示(如果存在次子级)。换句话说,如果层级值为空且父级有非空子级,则显示为父值,否则显示原层级值。
- 新建列,层级一 = '二月份费用报销清单'[层级1]
- 新建列,层级二 = IF(ISBLANK('二月份费用报销清单'[层级2]) &&CALCULATE(DISTINCTCOUNTNOBLANK('二月份费用报销清单'[层级2]),FILTER(ALL('二月份费用报销清单'),'二月份费用报销清单'[层级1]=EARLIER('二月份费用报销清单'[层级1])))>0,'二月份费用报销清单'[层级1],'二月份费用报销清单'[层级2])
其中CALCULATE(DISTINCTCOUNTNOBLANK('二月份费用报销清单'[层级2]),FILTER(ALL('二月份费用报销清单'),'二月份费用报销清单'[层级1]=EARLIER('二月份费用报销清单'[层级1])))>0,用来判断其父级是否存在非空子级。
- 新建列,层级三 = IF(ISBLANK('二月份费用报销清单'[层级3]) && CALCULATE(DISTINCTCOUNTNOBLANK('二月份费用报销清单'[层级3]),FILTER(ALL('二
- 月份费用报销清单'),'二月份费用报销清单'[层级2]=EARLIER('二月份费用报销清单'[层级2])))>0,'二月份费用报销清单'[层级2],'二月份费用报销清单'[层级3])
- 新建列,层级四 = IF(ISBLANK('二月份费用报销清单'[层级4]) && CALCULATE(DISTINCTCOUNTNOBLANK('二月份费用报销清单'[层级4]),FILTER(ALL('二月份费用报销清单'),'二月份费用报销清单'[层级3]=EARLIER('二月份费用报销清单'[层级3])))>0,'二月份费用报销清单'[层级3],'二月份费用报销清单'[层级4])
4、创建父子层次结构
以字段“层级一”创建层次结构,然后依次将“层级二”、“层级三”、“层级四”添加到“层级一 层次结构”中。
5、新建度量值-报销费用
新建度量值,报销费用1 = SUM('二月份费用报销清单'[费用])
6、汇总表优化
问题,上图中姓名为空的报销费用不用显示,如何进行优化呢?
分析:逐个层级进行筛选判断,如果其筛选值为空且被当前层级筛选,则报销费用显示为空。例如,上图中第一个空值,其属于“层级四”,即如果筛选值为空,且被第四层级筛选,则报销费用显示为空。
- 新建度量值,层级一筛选 = ISFILTERED('二月份费用报销清单'[层级一])
- 新建度量值,层级二筛选 = ISFILTERED('二月份费用报销清单'[层级二])
- 新建度量值,层级三筛选 = ISFILTERED('二月份费用报销清单'[层级三])
- 新建度量值,层级四筛选 = ISFILTERED('二月份费用报销清单'[层级四])
红色框选的需要保留,黄色框选的不需要,两者的区别在于
(1)红色框内姓名不为空,黄色框内姓名为空;
(2)红色框内姓名属于第三层级,所以“层级四筛选“为”FALSE“,黄色框内姓名属于第四层
级,据以“层级四筛选“为”TRUE“。
备注:能否通过直接判断第一列姓名是否为空来去除?不可以。原因:如上图,虽然红色框内显示了“姓名“,但是其属于第三层级,其第四层级也是空,所以当第四层级的值为空时就去除,这时,红色框内的记录也会被去除。
对层级筛选进行优化
- 修改度量值,层级一筛选 = IF(ISBLANK(SELECTEDVALUE('二月份费用报销清单'[层级一])) && ISFILTERED('二月份费用报销清单'[层级一]),0,1)
- 修改度量值,层级二筛选 = IF(ISBLANK(SELECTEDVALUE('二月份费用报销清单'[层级二])) && ISFILTERED('二月份费用报销清单'[层级二]),0,1)
- 修改度量值,层级三筛选 = IF(ISBLANK(SELECTEDVALUE('二月份费用报销清单'[层级三])) && ISFILTERED('二月份费用报销清单'[层级三]),0,1)
- 修改度量值,层级四筛选 = IF(ISBLANK(SELECTEDVALUE('二月份费用报销清单'[层级四])) && ISFILTERED('二月份费用报销清单'[层级四]),0,1)
分析:需要去除的行的层级筛选中至少有一个0,而需要保留的行中层组织筛选中全是1。
对度量值报销费用进行优化
新建度量值,报销费用 = IF('度量值表'[层级一筛选] && '度量值表'[层级二筛选] && '度量值表'[层级三筛选] && '度量值表'[层级四筛选],SUM('二月份费用报销清单'[费用]),BLANK())
7、可视化图表优化
去除矩阵中的“报销费用1“、”层级一筛选“、”层级二筛选“、”层级三筛选“、”层级四筛选“。
Power BI中创建父子层级二:父级单独产生值相关推荐
- power bi 创建空表_如何使用R在Power BI中创建地理地图
power bi 创建空表 介绍 (Introduction) This is the fifth article of a series dedicated to discovering geogr ...
- power bi自定义地图_如何使用自定义形状图在Power BI中创建地理图
power bi自定义地图 介绍 (Introduction) This is the third article of a series dedicated to discovering geogr ...
- power bi形状地图_如何使用内置形状图在Power BI中创建地理图
power bi形状地图 Introduction 介绍 This is the second article of a series dedicated to discovering geograp ...
- power bi 中计算_Power BI中的期间比较
power bi 中计算 Just recently, I've come across a question on the LinkedIn platform, if it's possible t ...
- Power BI中计算同比、环比
财务需求中经常要求计算数据的同比.环比,下面介绍如何在Power BI 中创建用来计算同比和环比的度量值(SSAS模型中同理)... 现金表中有金额,时间(时间需要连续的年月日格式),计算同比.环比. ...
- 在 Power BI 中筛选每类产品的前三名
本文翻译自Marco Russo的文章--<Filteringthe Top 3 products for each category in Power BI>本文介绍了在Power BI ...
- POWER BI 中DAX函数的应用(下篇)
POWER BI 中DAX函数的应用(下篇) 任务:创建度量值公式 下载并打开 Contoso 销售示例 Power BI Desktop 文件. 在"报表"视图的字段列表中,右键 ...
- python二维表转一维表_Excel、Power BI及Python系列:使用Power BI转化一维表与二维表...
上篇文章,老海分享了如何使用Excel完成一维表与二维表之间的转化 本篇老家继续分享使用Power BI来完成一维表与二维表的转化操作. 可能很多小伙伴,不太了解Power BI Power BI是什 ...
- power bi函数_在Power BI中的行上使用聚合函数
power bi函数 Aggregate functions are one of the main building blocks in Power BI. Being used explicitl ...
最新文章
- 计算机视觉系统学习书籍/综述汇总
- JavaScript instanceof 运算符深入剖析
- C# 依据鼠标坐标取网页内成员坐标.ie
- 在一个C程序中,main()函数可以放在哪?
- 最新linux 5,Linux 5.5 正式发布
- Django添加MySQL数据库
- 配置 MySQL 服务器容器
- ps练习实例_拥有一份史上最全面的50集ps抠图学习教程是什么一种体验?
- 停课不停学,大型网课直播翻车现场,你别笑,哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈啊哈...
- Java-简单实现房屋出租系统
- IOTQQ(OPQbot)—QQ机器人、部署在linux上(一步步实
- OpenEmu MAME核心自动更新解决
- 钉钉发起审批流程分析
- Hdu-5919 Sequence II(主席树在线求区间不同数)
- 51单片机之感应开盖垃圾桶
- php fpm failed,ubuntu环境下启动php-fpm失败Job for php-fpm.service failed...
- 常见C++开源库-几何算法库-Boost.Geometry-Clipper2-布尔运算库-支持开放式多段线-基础几何对象-详解教程
- ViewPager + TextView 小说阅读器分页
- Spring事务不生效的原因
- 也谈如何高效阅读源码