理解DAX:为什么ALL(表)不去重,ALL(列)去重了?

2021-08-30 16:31:59 浏览数 (1)

小勤:ALL函数是清除所有筛选条件并返回表中的不重复值,下面对表的行进行计数应该是3呀,因为有两个大海是重复的,怎么还是4?

大海:没有说all返回的是不重复值啊。 小勤:那么我ALL(表[姓名]),它出来的是2:

大海:all对表是返回表中的所有行,对列是返回列中的所有值(values),power pivot里的values是去重复的概念。 小勤:那Power Pivot里专门对表的去重函数是哪个? 大海:没有直接的所谓对表去重函数,但你可以用summarize去实现类似的效果:

小勤:哦。 大海:你可以理解为数据进入pp后,会自动在表里加上一个看不见的索引列(当然,索引不是简单的1/2/3/4……)。

小勤:明白。 大海:所以,all这个表的情况下,他不会删重复。实际上,数据进入Power Pivot后,转化为列式存储,也是背后有一个类似索引列去关联不同列之间同一行数据的内容。

小勤:这样意思每一行都是不同的,即使是内容一模一样,但位置不一样,所以也就不能说是重复值了,对吗? 大海:嗯。同时,由于是列式存储,相应的,很多涉及表的行列转换的功能也受到了相应的限制,比如透视、逆透视、转置等相关功能,但列式存储却使得数据计算的效率极大提升……

小勤:那如果我要一列里的没有删重复的所有数据怎么办?

大海:可以用SelectColumns啊。

0 人点赞