VALUES 函数

返回一个单列的表,其中包含来自指定表或列的非重复值。 换言之,重复值将被删除,仅返回唯一值。

注意注意

此函数无法用于将值返回到工作表上的单元格或列中;您而是应该将其用作在公式中嵌套的中间函数,以便获取可以对其进行计数的非重复值的列表,或者用于对其他值进行筛选或求和。

语法

VALUES(<TableNameOrColumnName>)

参数

定义

表或列

要从其返回唯一值的列。

返回值

由唯一值构成的列。

注释

当您在已筛选的上下文(例如数据透视表)中使用 VALUES 函数时,VALUES 返回的唯一值会受到筛选器的影响。 例如,如果您按 Region 进行筛选,并且返回针对 City 的值列表,则该列表将只包括筛选器允许的区域中的那些城市。 若要返回所有城市,而不管现有筛选器的情况如何,您必须使用 ALL 函数从表中删除筛选器。 第二个示例演示如何将 ALL 与 VALUES 一起使用。

相关函数

在大多数情况下,VALUES 函数的结果与 DISTINCT 函数的结果完全相同。 这两个函数都删除重复项,并且返回指定列中可能值的列表。 但是,VALUES 函数还可以返回“未知成员”。 在您从相关表中查找非重复值,但在一个表中缺少在关系中使用的某个值的情况下,此未知值会很有用。 在数据库术语中,这称为参照完整性冲突。 在更新一个表时,如果相关表未更新,则此类数据不匹配很容易发生。

下表汇总了在未遵守参照完整性时在两个相关表中可能发生的数据之间的不匹配。

MyOrders 表

MySales 表

6 月 1 日

6 月 1 日销售额

6 月 2 日

6 月 2 日销售额

(未输入任何订单日期)

6 月 3 日销售额

如果您使用了 DISTINCT 函数从包含这些表的数据透视表中返回日期列表,将只返回两个日期。 但是,如果您使用 VALUES 函数,该函数将返回两个日期加上附加的空成员。 此外,在 MyOrders 表中没有匹配日期的 MySales 表中的任何行都将与此未知成员“匹配”。

示例

下面的公式用于计算唯一发票(销售订单)的数量,在用于包含“产品类别名称”的报表中时生成以下结果:

行标签

发票计数

Accessories

18,208

Bikes

15,205

Clothing

7,461

总计

27,659

=COUNTROWS(VALUES('InternetSales_USD'[SalesOrderNumber]))

请参阅

参考

FILTER 函数

COUNTROWS 函数 (DAX)

其他资源

筛选器函数 (DAX)