ALLNOBLANKROW函数
ALLNOBLANKROW函数,隶属于“筛选类表函数”,在ALL函数系列家族中,其出场次数并不算特别多,远远不如其他函数的出场次数。
但是只要打开思路,其实ALLNOBLANKROW函数的用途并不少见,相反,很重要。
用途:
1、用来对比父表和子表之间的差异。
2、适用于连锁类销售对比差异值。
语法
代码语言:txt复制DAX=
ALLNOBLANKROW( {<表> | <列>[, <列>[, <列>[,…]]]} )
参数
表:已经删除上下文筛选的表。
列:(可重复)已经删除上下文筛选的列。
注意:此函数参数类型只能存在一种,要么是表,要么是列。
返回结果
去除重复值的表或列。
例子
模拟数据:
这是白茶随机模拟的数据。
例子1:
代码语言:txt复制ALLNOBLANKROW例子1 =
ALLNOBLANKROW ( '子表' )
结果:
这种情况下,ALLNOBLANKROW函数的用法与ALL函数基本上差不多,返回一个完整的数据表。
例子2:
代码语言:txt复制ALLNOBLANKROW例子2 =
ALLNOBLANKROW ( '子表'[类别] )
结果:
这种情况的用法相当于VALUES,可以去除重复值。
其实到这里,ALLNOBLANKROW函数的基本用法就结束了。
下面的内容是关于ALLNOBLANKROW函数与ALL函数之间的对比。
* * *
基础代码:
代码语言:txt复制子表行数 =
COUNTROWS ( '子表' )
对比代码第一组:
代码1:
代码语言:txt复制ALL例子1 =
COUNTROWS ( ALL ( '子表' ) )
代码2:
代码语言:txt复制ALLNOBLANKROW例子1 =
COUNTROWS ( ALLNOBLANKROW ( '子表' ) )
分别将其放入父表与子表的上下文环境中对比:
可以看得出来,这种情况下,父表对于子表的筛选条件不造成影响,二者的结果是一致的。
对比代码第二组:
代码1:
代码语言:txt复制ALL例子2 =
COUNTROWS ( ALL ( '子表'[类别] ) )
代码2:
代码语言:txt复制ALLNOBLANKROW例子2 =
COUNTROWS ( ALLNOBLANKROW ( '子表'[类别] ) )
结果:
这种情况下,父表的筛选效果依然没有生效,对二者结果没有影响。
对比代码第三组:
代码1:
代码语言:txt复制ALL例子3 =
COUNTROWS ( ALL ( '父表' ) )
代码2:
代码语言:txt复制ALLNOBLANKROW例子3 =
COUNTROWS ( ALLNOBLANKROW ( '父表' ) )
结果:
从这组对比中,我们能看出来,ALLNOBLANKROW的结果比ALL的结果计数少1。这是因为,子表中存在父表中不存在的维度数据。
ALL函数会直接为父表添加一行“空行”,这一行ALL函数计算在内。ALLNOBLANKROW则会忽略这一空行,只计算父表中存在的数据。
因为总体的效果,ALLNOBLANKROW函数的效果与ALL函数差不多,而且对于ALL函数的熟悉程度远远高于前者,这就导致其出场率并不高,但不代表其毫无作用。
对比代码第四组:
代码1:
代码语言:txt复制ALL例子4 =
CALCULATE ( SUM ( '子表'[数据] ), ALL ( '父表' ) )
代码2:
代码语言:txt复制ALLNOBLANKROW例子4 =
CALCULATE ( SUM ( '子表'[数据] ), ALLNOBLANKROW ( '父表' ) )
对比结果:
在一些连锁销售行业,当总部数据与门店数据出现差异时,可以使用ALL函数与ALLNOBLANKROW函数之间的特性,用来对比差异点。
总部:咦?我给你调货只配了50W的货物,你咋销售了60W?咋回事?小老弟? 分店:大哥,我也不知道啊!要不咱俩来核对一下? 总部&分店:(¥¥%#&&@@!)这咋核对啊!!
以上这种情况,就完全可以用第四组代码来直接求出差异值,这样的话范围是不是就缩小了?
小伙伴们❤GET了么?
白茶会不定期的分享一些函数卡片
(文件在知识星球PowerBI丨需求圈)
这里是白茶,一个PowerBI的初学者。