value函数详解(重点函数SELECTEDVALUE用法介绍)(1)


大家好,今天给大家分享一下SELECTEDVALUE函数的用法,先来看一下函数的说明:


SELECTEDVALUE ( Table[column] )
SELECTEDVALUE ( Table[column], "defaultvalue" )
SELECTEDVALUE ( Table[column], 0 )


函数返回第一个参数列的唯一引用值,如果参数列在上下文过滤器中不是唯一可用值,将返回空白或者第二个参数值(默认值)

话不多说,接下来我们一起看看SELECTEDVALUE在具体业务中的运用。


示例一


value函数详解(重点函数SELECTEDVALUE用法介绍)(2)


如上图,订单表中包含销售分区订单金额订单数量等信息。

要求:


展示各区域的销售完成情况,数值可以通过切片器切换销售额和销量。效果如下图:



value函数详解(重点函数SELECTEDVALUE用法介绍)(3)


思路:


数据源中,销售额和销售量信息分布在两个字段列上,无法通过选取现成的字段列来切片,需要手动创建参数表作为切片器。再通过书写度量值使得柱状图中显示的值与切片器相关联


步骤:


Step 1:新建参数表


value参数表 =DATATABLE("value",STRING,{{"销售额"},{"销售量"}})


value函数详解(重点函数SELECTEDVALUE用法介绍)(4)


Step 2:根据value的不同计算对应的聚合值书写度量值

sum_value = SWITCH(SELECTEDVALUE('value参数表'[value]),
"销售额",SUM('订单表'[订单金额(¥)]),
"销售量",SUM('订单表'[订单数量]))


Step 3:可视化界面中,将value参数表中的value列作为切片器,完成。

是不是很简单呢,那我们再看另一个场景:


示例二


看到上面数据源里销售员的身份了吗,分为电话销售员和区域销售员,即一个订单的是由两类角色人员共同完成的,业绩双记。在另外一张表里,所有员工被标记了“是否新员工”,

value函数详解(重点函数SELECTEDVALUE用法介绍)(5)

现在老板要看各区域新老员工的业绩对比情况,效果如下图所示:


value函数详解(重点函数SELECTEDVALUE用法介绍)(6)



思路:


如果订单表中的员工类型只有电话销售或者只有区域销售,那么这个问题很简单,将订单表和人员表用员工ID建立关系就可以了。

现在的问题是,某个订单不能直接判断是否由新员工或者老员工完成,必须要和员工类型结合起来。

步骤:


Step 1:新建新老员工维度表


Dim新老员工 = SUMMARIZE('人员表','人员表'[是否新员工])


Step 2:写度量值,根据员工类型和是否新员工两个判断条件,计算对应的聚合值


values = SWITCH(SELECTEDVALUE('Dim员工类型'[员工类型]),


"电话销售",SWITCH(SELECTEDVALUE('Dim新老员工'[是否新员工]),


"新员工",CALCULATE([sum_value],FILTER('订单表',LOOKUPVALUE('人员表'[是否新员工],'人员表'[员工ID],'订单表'[电话销售员ID])="新员工")),


"老员工",CALCULATE([sum_value],FILTER('订单表',LOOKUPVALUE('人员表'[是否新员工],'人员表'[员工ID],'订单表'[电话销售员ID])="老员工"))),


"区域销售",SWITCH(SELECTEDVALUE('Dim新老员工'[是否新员工]),


"新员工",CALCULATE([sum_value],FILTER('订单表',LOOKUPVALUE('人员表'[是否新员工],'人员表'[员工ID],'订单表'[区域销售员ID])="新员工")),


"老员工",CALCULATE([sum_value],FILTER('订单表',LOOKUPVALUE('人员表'[是否新员工],'人员表'[员工ID],'订单表'[区域销售员ID])="老员工"))))


这个公式中包含了两层SELECTEDVALUE,

第一层的SELECTEDVALUE('Dim员工类型'[员工类型])作用与案例一相同,与切片器相关联;

第二层的SELECTEDVALUE('Dim新老员工'[是否新员工])没有与任何切片器关联,而是与分组依据相关联,即柱状图中的图例,这是小编认为SELECTEDVALUE函数最神奇的地方。

看过工作技巧 | 动态切换报表标题的读者朋友们可能会发现,SELECTEDVALUE和HASONEVALUE、VALUES的运用有一些相似之处,


实际上,在内部,SELECTEDVALUE只是语法糖,以下两个函数是等价的


SELECTEDVALUE( Table[column] )


IF (HASONEVALUE ( Table[column] ), VALUES ( Table[column] ) )


为了方便大家动手实践,在后台回复关键词“SELECTEDVALUE文件”即可获得本文中的数据源及PBI文件下载链接。


今天的内容就是这些,小伙伴们,下期再见!


* PowerPivot工坊原创文章,转载请注明出处!


延伸阅读:

带你了解DAX筛选转换原理

重点函数 | 表函数与DAX查询

工作技巧 | 动态切换报表标题

如何在DAX中创建“虚拟关系”

通过度量值实现突出显示




如果您想深入学习微软Power BI,欢迎登录网易云课堂试听学习我们的“从Excel到Power BI数据分析可视化”系列课程。或者关注我们的公众号(PowerPivot工坊)后猛戳”在线学习”。

value函数详解(重点函数SELECTEDVALUE用法介绍)(7)



长按下方二维码关注“Power Pivot工坊”获取更多微软Power BI、PowerPivot相关文章、资讯,欢迎小伙伴儿们转发分享~

value函数详解(重点函数SELECTEDVALUE用法介绍)(8)

,