CONTAINS/CONTAINSROW/IN 包含关系
今天的问题是查找一组编号的最末端:
下面这样一组编号,我们要找出哪些编号是最末端编号,例如:
1.1.1.1
1.1.1.2
1.2.1
这样的都是最末端,就是说他们没有下一级编号。
看这个图片更直观一些:
我们要找的就是最外层的编号。
数据加载到Power Query,我们要先处理一下:
这里我们要用到的是DAX层级关系的概念,但实际上我们并没有使用PATH类函数来解决问题,层级关系就要有父级与子级,我们做出一列父级出来:
这个很容易,提取分隔符之前的文本,从末尾开始:
然后我们把这个数据加载到Power Pivot中就可以了:
Path 与pl列是我最开始的那个图用的数据,就是用PATH函数与PATHLENGTH函数。
接下来我们来说如何判断哪个是末级,其实道理很简单,就是拿子级中的单个值与父级所有值比对,如果在Excel中用一个COUNTIF函数就可以了。在DAX中我们其实也有很多种方法,我们介绍比较简单的三种方法:
CONTAINS函数有三个参数:
就是比对父级中是否含有子级中的这个值:TRUE就是包含,FALSE就是不包含,我们要找的末级就是不包含FALSE。
CONTAINSROW函数有两个参数:
就是比对列表中有没有这个具体值
第三种方法与前两种是一样的,只不过看起来更简单,IN在DAX中是一个逻辑运算符吧:
用法就是:
具体值 IN 列表
以上的三种DAX方法的本质是一样的。
在Excel中的COUNTIF:
在Power Query中的List.Contains:
那个图是用Power BI Desktop做的,用的视觉对象是:
很简单加入父级、子级就可以了,大小用的层级的深度:
好了最后附上Excel文件:
链接: https://pan.baidu.com/s/1r_CiPNsvaTwNcfSzJrtDAQ 提取码: ivyv
页面更新:2024-03-28
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号