09.6 理解DISTINCT


# DISTINCT

语法结构

DISTINCT ( )用列作为参数时,DISTINCT返回一个单列的表,其中包含列的所有不重复值。用表表达式作为参数时,返回具有不重复值的列组合,删除重复行。DISTINCT函数允许将列名或任何有效的表表达式作为其参数,而VALUES函数只接受列名或物理表作为参数## 小测试 09.6 理解DISTINCT - 图1Numbers表基于上图中的Numbers表,以下三个度量值分别返回什么结果?度量值A =COUNTROWS(ALL(Numbers))度量值B =COUNTROWS(ALL(Numbers[Color],Numbers[Quantity]))度量值C =COUNTROWS(DISTINCT(Numbers))答案和解析:

  • 度量值A等于3,本例中ALL使用表作为参数,返回Numbers表的所有行,你可以理解为表有一列隐式的不重复ID,ALL考虑此ID列。
  • 度量值B等于2,本例中ALL只考虑两列,去重后只有两行。
  • 度量值C等于2,DISTINCT可以执行对表的去重,即使是物理表也是如此。

DISTINCT 和 VALUES的区别

两个函数功能相似,都可以返回不重复值,但对于关系的参照完整性,两个函数具有不同的行为,详细内容请参考VALUES函数中的专题介绍。