VALUES
当输入参数为列名时,返回包含指定列中非重复值的单列表。 重复值被删除,仅返回唯一值。 可添加 BLANK 值。 当输入参数是表名时,返回指定表中的行。 保留重复的行。 可添加 BLANK 行。
注意
此函数不能用于将值返回到工作表中的单元格或列中。但你可以将其用作嵌套在公式中的中间函数以获取一个非重复值的列表,这些值可进行计数或用于筛选其他值/对其他值进行求和。
语法
VALUES(<TableNameOrColumnName>)
parameters
术语 | 定义 |
---|---|
TableName 或 ColumnName | 要从中返回唯一值的列,或要从中返回行的表。 |
返回值
当输入参数为列名时,返回单列表。 当输入参数为表名时,返回具有相同列的表。
备注
当你在已筛选的上下文中使用 VALUES 函数时,VALUES 返回的唯一值将受到筛选器的影响。 例如,如果按“区域”进行筛选并返回“城市”值的列表,则该列表将只包括筛选器允许的区域中的那些城市。 若要返回所有城市,无论现有筛选器的设置如何,都必须使用 ALL 函数从表格中删除筛选器。 第二个示例演示如何将 ALL 与 VALUES 结合使用。
在已计算的列或行级安全性 (RLS) 规则中使用时,不支持在 DirectQuery 模式下使用此函数。
有关使用 VALUES 时的最佳做法,请参阅使用 SELECTEDVALUE 而不是 VALUES。
相关函数
在大多数场景中,当参数为列名时,VALUES 函数的结果与 DISTINCT 函数的结果相同。 这两个函数都会删除重复项,并返回指定列中可能的值的列表。 但是,VALUES 函数还可以返回空白值。 如果要从相关表中查找非重复值,但一个表中缺少在关系中使用的值,则此空白值很有用。 在数据库术语中,这被称为违反了引用完整性。 当一个表处于更新状态而相关表没有时,可能会发生数据不匹配的情况。
当参数为表名时,如果违反了引用完整性,则 VALUES 函数的结果将返回指定表中的所有行外加一个空白行。 DISTINCT 函数会删除重复行并返回指定表中的唯一行。
注意
DISTINCT 函数允许将列名或任何有效的表表达式作为其参数,但是 VALUES 函数仅接受列名或表名作为其参数。
下表总结了在不保持引用完整性的情况下,两个相关表中可能发生的数据之间的不匹配。
MyOrders 表 | MySales 表 |
---|---|
6 月 1 日 | 6 月 1 日销售额 |
6 月 2 日 | 6 月 2 日销售额 |
(未输入订单日期) | 6 月 3 日销售额 |
如果使用 DISTINCT 函数返回日期列表,将只返回两个日期。 但是,如果使用 VALUES 函数,该函数将返回两个日期外加一个空白行。 另外,若 MySales 表中的任何行在 MyOrders 表中没有匹配的日期,这些行都将与此未知成员(空白行)“匹配”。
示例
以下公式计算唯一发票(销售订单)的数量,并在包含“产品类别名称”的报表中使用时产生以下结果:
= COUNTROWS(VALUES('InternetSales_USD'[SalesOrderNumber]))
返回
行标签 | 发票计数 |
---|---|
Accessories | 18,208 |
Bikes | 15,205 |
Clothing | 7,461 |
总计 | 27,659 |