前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >函数周期表丨筛选丨表丨VALUES

函数周期表丨筛选丨表丨VALUES

原创
作者头像
PowerBI丨白茶
修改2021-08-31 11:14:30
9840
修改2021-08-31 11:14:30
举报
文章被收录于专栏:PowerBI

VALUES函数

VALUES函数,隶属于“筛选”类函数。当参数为列时,返回结果会去除重复值,保留空项;当参数为表时,结果不会进行去重复操作。

用途:适用于度量值计算。

语法

代码语言:txt
复制
DAX=
VALUES(表or列)

参数

VALUES函数的参数可以是列,也可以是表,但不能是表达式。

返回结果

去除重复值的列或者返回一个完整的表。当表为单列单行时,可以作为值使用。

例子

模拟数据:

这是白茶随机模拟的数据,红色框为重复数据,蓝色框为维度不存在的数据。坦白说,其实单个的VALUES函数没什么好说的,甚至不用枚举太多的例子,小伙伴们都是了解的,因为使用度非常高。

白茶会将VALUES函数、DISTINCT函数、ALL函数做一个比较,让大家明白三者的区别。

例子1:表函数模式

代码1:

代码语言:txt
复制
VALUES例子1 =
VALUES ( '例子' )

代码2:

代码语言:txt
复制
DISTINCT例子1 =
DISTINCT ( '例子' )

代码3:

代码语言:txt
复制
ALL例子1 =
ALL ( '例子' )

结果:

1、表函数模式下,DISTINCT会对表进行去重操作;而VALUES和ALL函数相当于复制操作,并不会对源文件进行去重。

2、DISTINCT参数可以是表达式,而VALUES和ALL的参数不能是表达式。

例子2:参数列模式

代码1:

代码语言:txt
复制
VALUES例子2 =
VALUES ( '例子'[类别] )

代码2:

代码语言:txt
复制
DISTINCT例子2 =
DISTINCT ( '例子'[类别] )

代码3:

代码语言:txt
复制
ALL例子2 =
ALL ( '例子'[类别], '例子'[数据] )

1、三个函数的参数如果都是列的话,在表函数模式下,都会进行去重复操作。

2、ALL函数的列参数可以有多个,类似于笛卡尔积的效果;而DISTINCT和VALUES函数列参数只能有一个。

例子3:度量值情况

代码1:

代码语言:txt
复制
统计行数 =
COUNTROWS ( '例子' )

代码2:

代码语言:txt
复制
VALUES统计 =
SUMX ( VALUES ( '维度'[类别] ), CALCULATE ( COUNTROWS ( '例子' ) ) )

代码3:

代码语言:txt
复制
DISTINCT统计 =
SUMX ( DISTINCT ( '维度'[类别] ), CALCULATE ( COUNTROWS ( '例子' ) ) )

代码4:

代码语言:txt
复制
ALL统计 =
SUMX ( ALL ( '维度'[类别] ), CALCULATE ( COUNTROWS ( '例子' ) ) )

结果:

在例子和维度上下文中,DISTINCT函数排除掉因扩展表原因导致的空值项目,将其排除在计算范围之内;进行的是去除重复,排除空值计算。

无论在例子上下文还是维度上下文中,VALUES函数的计算都包含空值项目。

ALL函数在例子上下文中的计算,没有屏蔽掉例子的筛选效果,其计算结果包含空值项目;而在维度上下文中,清除了维度表的筛选效果,计算结果包含空值项目,每个返回值均为总计行数37。

以上,就是关于VALUES、DISTINCT、ALL三个函数之间的主要区别了。可能在一些场合,三者返回的结果是一致的,就给我们造成了三者效果差不多的错觉,实际上三者之间的差距还是蛮大的。

小伙伴们❤GET了么?

白茶会不定期的分享一些函数卡片

(文件在知识星球PowerBI丨需求圈)

这里是白茶,一个PowerBI的初学者。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档