深入浅出DAX:SELECTEDVALUE()

深入浅出DAX:SELECTEDVALUE()

SELECTEDVALUE(),如果筛选 columnName 的上下文后仅剩下一个非重复值,则返回该值。否则返回alternateResult,语法如下:

SELECTEDVALUE(<columnName>[, <alternateResult>]
)

当仅选择某一列时,可用SELECTEDVALUE()函数去替换IF()+HASONEVALUE(),该函数的第2个参数为可省参数。当SELECTEDVALUE()置于分母中时,建议将第2个参数指定为1。

以下为SELECTEDVALUE()函数的常见应用场景。

01、单位转换

加载DEMO.xlsx中的装货表。创建度量值M.装卸数,表达式如下:

M.装载量 =
SUMX ('装货','装货'[质量]* SWITCH (
TRUE (),'装货'[单位] = "吨",'装货'[质量] * 1000,'装货'[单位] = "克",'装货'[质量] / 1000)
)

单击可视化区域的“卡片图”。选择“字段”按钮,将M.装载量放入“值”区域。返回的值如图1所示。

Power BI默认的显示单位为无、千、百万、十亿、万亿,这些显示方式在日常识别时显得很别扭。手动创建辅助表(表名:单位表),将单位设置为“一、万、亿”三档,表达式如下:

单位表 =
DATATABLE ("索引", INTEGER,"单位", STRING,"单位值", INTEGER,{{ 1, "1", 1 }, //”1”,出于解决中文排序问题考虑的{ 2, "万", 10000 },{ 3, "亿", 100000000 }}
)

该表无须与数据模型创建关系,如图2所示。 

■ 图2  创建的单位表

创建度量值M.装载量转换,表达式如下:

M.装载量转换 = [M.装载量]/SELECTEDVALUE('单位表'[单位值],1)

以上度量值等价于度量值M.装载量转换A,表达式如下:

M.装载量转换A =
[M.装载量]/ IF (HASONEVALUE ( '单位表'[单位值] ),VALUES ( '单位表'[单位值] ),1)

单击可视化区域的“卡片图”。选择“字段”按钮,将度量值M.装载量转换放入“值”区域;选择“格式”按钮,将“显示单位”设置为无。复制该卡片图,将其中的“字段”更改为M.装载量转换A。返回的值如图3所示。

■ 图3 装载量的显示单位(1)

单击可视化区域的“卡片图”,选择“字段”为单位表中的单位字段。单击“切片器”中的单位万,返回的值如图4所示。

■ 图4 装载量的显示单位(2)

图4中,SELECTEDVALUE()及其类似功能函数会根据切片器的选择而动态更换分母,因而卡片M.装载量转换和M.装载量转换A中的值会根据外部上下文的环境进行动态匹配运算。当未做切片器选择时,则会对M.装载量的值除以1。

02、动态指标分析

创建表T出入库,表达式如下:

T出入库 = DATATABLE("分类",STRING,{{"入库量"},{"出库量"}})

返回的值如图5所示。

创建度量值M.出入库切换,表达式如下:

M.出入库切换 =
SWITCH (SELECTEDVALUE ( 'T出入库'[分类] ),"入库量", SUM ( DK[入库] ),"出库量", SUM ( DK[出库] )
)

在可视化区域,单击“切片器”,将T出入库表的分类拖入“字段”。单击“卡片图”,将度量值M.出入库切换放入“字段”。切片器选择及对应返回值如图9-36所示。

图片

■ 图6 依据度量值的切换显示不同的值(1)

如果将图9-36的“卡片图”换成“簇状柱形图”,可将DK表的产品拖入“轴”,将度量值M.出入库切换放入“值”。切片器选择及对应返回值如图7所示。

图片

■ 图7 依据度量值的切换显示不同的值(2)

03、动态图表标题

创建度量值M.,表达式如下:

M.包装选择 = SELECTEDVALUE(DK[包装方式])

在可视化区域,单击“切片器”,“字段”为M.包装选择。在可视化区域,单击“簇状柱形图”,“轴”为产品,“值”为M.入库量。在格式选项卡的格式栏,单击“常规”→“标题”→“文本”→fx;在“标题文本-标题”视窗中,选择“格式样式”为字段值,应用的字段为M.包装选择,单击“确定”按钮,如图8所示。

■ 图8  自定义视觉对象的颜色(1)

柱形图的颜色已自动配色,返回的值如图9所示。

■ 图9  自定义视觉对象的颜色(2) 

 

 

 

        

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/88765.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

加入WTO对跨境物流的影响

加入世界贸易组织&#xff08;WTO&#xff09;可以对跨境物流产生多方面的影响&#xff1a; 提高市场开放度&#xff1a;WTO加入国必须采用更加开放的贸易政策&#xff0c;减少关税和非关税壁垒&#xff0c;提高市场的开放度&#xff0c;这将促进跨境物流的发展。 促进贸易流动…

Rabbit消息的可靠性

生产者重连 消费者重试 Confirm模式简介 消息的confirm确认机制&#xff0c;是指生产者投递消息后&#xff0c;到达了消息服务器Broker里面的exchange交换机&#xff0c;则会给生产者一个应答&#xff0c;生产者接收到应答&#xff0c;用来确定这条消息是否正常的发送到Broker…

【大数据】Doris 构建实时数仓落地方案详解(三):Doris 实时数仓设计

本系列包含&#xff1a; Doris 构建实时数仓落地方案详解&#xff08;一&#xff09;&#xff1a;实时数据仓库概述Doris 构建实时数仓落地方案详解&#xff08;二&#xff09;&#xff1a;Doris 核心功能解读Doris 构建实时数仓落地方案详解&#xff08;三&#xff09;&#…

数据库存储引擎和数据类型详细介绍

目录 一、数据库存储引擎&#xff08;了解&#xff09;1.了解MySQL体系结构2.存储引擎&#xff08;了解&#xff09;2.1.存储引擎的介绍2.2.存储引擎分类2.3.如何选择引擎&#xff1f; 3.事务控制语言(TCL)事务的四个特性(ACID) 二、数据类型&#xff08;了解&#xff09;1.整型…

Servlet操作与用法(保姆式教学)

Servlet介绍 什么是servlet Servlet&#xff08;Servlet Applet的缩写&#xff0c;全称 Java Servlet&#xff09;&#xff1a;适用于Java编写的服务器程序&#xff0c;其主要功能是在于交互式的浏览和修改数据&#xff0c;生成动态Web内容。狭义的Servlet是指Java语言实现的…

Xmake v2.8.3 发布,改进 Wasm 并支持 Xmake 源码调试

Xmake 是一个基于 Lua 的轻量级跨平台构建工具。 它非常的轻量&#xff0c;没有任何依赖&#xff0c;因为它内置了 Lua 运行时。 它使用 xmake.lua 维护项目构建&#xff0c;相比 makefile/CMakeLists.txt&#xff0c;配置语法更加简洁直观&#xff0c;对新手非常友好&#x…

react父子组件通信

总结 父传子&#xff1a;最常见 把父组件中的数据传给子组件 子传父&#xff1a;子组件调用父组件传递过来的参数&#xff0c;并且把想要传递的数据当成函数的实参传入即可 【子组件通过调用父组件传递到子组件的方法向父组件传递数据】 对于子传父中子组件还是先调用了父组…

ARM day1

1.复习今日内容 2.搭建汇编环境 下发资料-》工具软件 -》汇编环境搭建 3.安装Ubuntu下的交叉编译工具链 思维导图&#xff1a;

latexocr安装过程中遇到的问题解决办法

环境要求&#xff1a;需要Python版本3.7&#xff0c;并安装相应依赖文件 具体的详细安装步骤可见我上次写的博文&#xff1a;Mathpix替代者|科研人必备公式识别插件|latexocr安装教程 ‘latexocr‘ 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件的相关解决办…

十五、异常(2)

本章概要 自定义异常 异常与记录日志 异常声明 自定义异常 不必拘泥于 Java 已有的异常类型。Java异常体系不可能预见你将报告的所有错误&#xff0c;所以你可以创建自己的异常类&#xff0c;来表示你的程序中可能遇到的问题。 要自己定义异常类&#xff0c;必须从已有的异…

什么是 Redis?

Redis 是一种基于内存的数据库&#xff0c;对数据的读写操作都是在内存中完成的&#xff0c;因此读写速度非常快&#xff0c;常用于缓存&#xff0c;消息队列&#xff0c;分布式锁等场景。 Redis 提供了多种数据类型来支持不同的业务场景&#xff0c;比如 String(字符串)、Has…

vue中request.js中axios请求和(若依)文件通用下载方法封装

vue中request.js中axios请求和&#xff08;若依&#xff09;文件通用下载方法封装 1.request.js import axios from axios import { Message, Loading } from element-ui import { saveAs } from file-saver // 创建axios实例 const request axios.create({// 这里可以放一…

git如何把test分支做好的功能 文件和文件夹复制到master

git如何把test分支做好的功能 文件和文件夹复制到master 假设我们有两个分支 master test 这两个分支 我们在test分之里有做了很多修改&#xff0c;其他同事也在test分之做了很多修改&#xff0c;多人开发了很多次test分支&#xff0c;此时我们开发的功能开发完了&#xff0c;…

C语言环境搭建(Win)

一、C语言简介 1、 C语言简介 C语言是一门通用的、面向过程式的编译型语言&#xff0c;它的运行速度极快&#xff0c;仅次于汇编语言。 C语言是计算机产业的核心程序设计语言&#xff0c;操作系统、硬件驱动、关键组件、数据库等都离不开C语言&#xff0c;广泛应用于底层开发。…

CompletableFuture-链式语法和join方法介绍

2.4 案例精讲-从电商网站的比价需求展开 2.4.1 函数式编程已成为主流 Lambda表达式Stream流式调用Chain链式调用Java8函数式编程 函数式接口&#xff1a; 小结&#xff1a; 函数式接口&#xff1a; Java8新特性_四大内置核心函数式接口_java8 内置核心接口_ZHOU_VIP的博客-…

ChatGPT:理解HTTP请求数据格式:JSON、x-www-form-urlencoded和form-data

ChatGPT&#xff1a;理解HTTP请求数据格式&#xff1a;JSON、x-www-form-urlencoded和form-data 使用postman发送一个post请求&#xff0c;在body里面加上了form-data数据&#xff0c;namexxx&#xff0c;age23&#xff0c;为什么输出request.body()得到的是这样的结果 -------…

Nginx之memcached_module模块解读

目录 基本介绍 安装添加模块 模块配置指令 基本介绍 nginx的memcached_module模块可以直接从memcached服务器中读取内容后输出&#xff0c;后续的请求不再经过应用程序处理&#xff0c;如php-fpm、django&#xff0c;大大的提升动态页面的速度。nginx只负责从memcach…

2023年中国研究生数学建模竞赛D题

一、背景介绍 2021年9月22日&#xff0c;中共中央国务院正式发布《关于完整准确全面贯彻新发展理念做好碳达峰碳中和工作的意见》&#xff08;以下简称《意见》&#xff09;&#xff0c;明确了中国双碳行动的顶层设计。 我国是世界上最大的发展中国家&#xff0c;为实现中华民…

学习路之PHP--lumen安装配置

一、下载lumen源码 composer create-project --prefer-dist laravel/lumen blog 安装lumen-generator composer require flipbox/lumen-generator 二、配置 bootstrap\app.php 97行 $app->register(Flipbox\LumenGenerator\LumenGeneratorServiceProvider::class);三、生成…

【IDEA】IDEA 单行注释开头添加空格

操作 打开 IDEA 的 Settings 对话框&#xff08;快捷键为CtrlAltS&#xff09;&#xff1b;在左侧面板中选择Editor -> Code Style -> Java&#xff1b;在右侧面板中选择Code Generation选项卡&#xff1b;将Line comment at first column选项设置为false使注释加在行开…