DAX DISTINCT 和VALUES的区别

我最近遇到朋友问的一个问题,Distinct和Values的区别是什么。这里我建立了一个案例来解答这个问题。下图我建立了两个表,Fact和Dim表,表名也是fact和dim。两个表之间存在着关系。这个关系会产生一个违背参考一致性的问题,因为fact表包含了一个c,在dim表中不存在。这个情况下下,实际上,会有一个空行插入到dim表中,然后所有fact表中没有存在于dim表的记录,都会指向这个空行。这个就是distinct和values的区别。


`
The measure “Count Distinct” is defined as =COUNTROWS(DISTINCT(Dim[Dim])) 
The measure “Count Values” is defined as =COUNTROWS(VALUES(Dim[Dim]))

如你所见,values返回了在dim表中返回了一个空行,这个代表着fact表中没有与dim表匹配的记录。而distinct只返回了dim表中存在的值。这就是这两个函数的区别及计算方式。有个很重要的点,就是blank存在于原始的表格中,无论是在原始的表格列,或者计算列,那么这个值都会被values和distinct考虑进去,会被当做一个正常值,不会被distinct忽略。你在透视表的截图中可以看到,行中有个额外的blank值。
powerpivot中不是所有的blank都是一样的。
如果你要计算一个列中非空的单元格的不重复值数量,而忽略关联表的值。公式可以这样写:

= COUNTAX( DISTINCT( Dim[Dim] ), Dim[Dim] )

你可能感兴趣的:(DAX DISTINCT 和VALUES的区别)