BI技巧丨钻取动态度量值

2023-12-16 15:52
文章标签 动态 技巧 度量 bi 钻取

本文主要是介绍BI技巧丨钻取动态度量值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

PowerBI自带的数据钻取功能,在实际应用中是用户使用度较高的功能之一,特别是需要实际操作的业务用户,往往需要根据汇总的结果定位到相关的明细数据,以便进行下一步的流程操作,这种场景下钻取功能显得尤为便利。

关于钻取功能,白茶之前也介绍过,包括云端的跨页钻取,本期是结合特定的场景进行实际应用的介绍,偏向于业务会多一些。

先来看看本期的案例数据:

数据较为简单,一张事实表。将其导入到PowerBI里面。

案例数据与以往的不同,偏向于商机类型的数据,一般数据来源于SalesForce结构会与此类似,SAP系统中关于销售订单类型的数据,也符合本期的应用场景。

商机数据的划分,前几个阶段都属于未关单数据,最后的Loseing和Win都属于已关单数据。业务用户往往会关注未关单的数据进展如何,是否需要提供额外的支持,已关单的数据其中丢单的原因是什么等等。

而销售订单数据,会划分为已发货/未发货,部分发货/全部发货,已发货确收/已发货未确收等,业务形态与商机数据区别很大,但是在BI上需要的功能点,基本雷同。

编写如下基础度量值:

001.OppAmt =
SUM ( Fact_Opportunity[Amount] )

根据上面的业务形态,不难发现,其实用户想要的,就是动态度量值的切换,我们实现的办法有两种。

①新建维度表,通过逻辑关系关联度量值。

新建如下度量值:

未关单数据:

002.NoEndOppCount =
CALCULATE ([001.OppAmt],FILTER ('Fact_Opportunity','Fact_Opportunity'[Status] IN { "1", "2", "3", "4" })
)

已关单数据:

003.EndOppCount =
CALCULATE ([001.OppAmt],FILTER ('Fact_Opportunity',NOT 'Fact_Opportunity'[Status] IN { "1", "2", "3", "4" })
)

动态度量值:

004.SelectValue =
VAR SelectValue =SELECTEDVALUE ( 'Dim_Select'[Index] )
VAR Result =SWITCH (TRUE (),SelectValue = 1, [002.NoEndOppCount],SelectValue = 2, [003.EndOppCount])
RETURNResult

结果如下:

新建字段参数。

我们将两个结果放在一起对比一下:

从数据上来看,二者在动态度量值的处理上,结果是差不多的。

咱们继续,按照背景介绍,是需要钻取到对应的明细数据的。

分别添加两个明细页,将两个度量值呈现出来。

可以看出,二者之间目前呈现的方式都有点问题,度量值拼接的方式没有数据,而字段参数此时呈现的是2个值,我们来分别钻取看一下效果:

两个度量值都可以满足钻取的需求,但是有一个严重的漏洞,实际上我们在设计报表时,明细表默认是不会选择隐藏的,是需要开放给用户进行明细数据导出的,而两个明细表默认进来的情况,都不太理想,需要我们处理一下。

修改如下度量值:

004.SelectValue =
VAR SelectValue =SELECTEDVALUE ( 'Dim_Select'[Index] )
VAR Result =SWITCH (TRUE (),SelectValue = 1, [002.NoEndOppCount],SelectValue = 2, [003.EndOppCount],[002.NoEndOppCount] + [003.EndOppCount])
RETURNResult

结果如下:

度量值逻辑修改后,可以满足当用户默认不筛选时,呈现正常的数据,而字段参数功能,则无法进行其他修改。

所以,面对如上业务场景时,白茶建议选择度量值维度表关联的方式。

PS:如果有知道解决方案的小伙伴,也可以联系白茶。

这篇关于BI技巧丨钻取动态度量值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/501034

相关文章

MySQL中动态生成SQL语句去掉所有字段的空格的操作方法

《MySQL中动态生成SQL语句去掉所有字段的空格的操作方法》在数据库管理过程中,我们常常会遇到需要对表中字段进行清洗和整理的情况,本文将详细介绍如何在MySQL中动态生成SQL语句来去掉所有字段的空... 目录在mysql中动态生成SQL语句去掉所有字段的空格准备工作原理分析动态生成SQL语句在MySQL

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++

C#如何动态创建Label,及动态label事件

《C#如何动态创建Label,及动态label事件》:本文主要介绍C#如何动态创建Label,及动态label事件,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#如何动态创建Label,及动态label事件第一点:switch中的生成我们的label事件接着,

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

电脑win32spl.dll文件丢失咋办? win32spl.dll丢失无法连接打印机修复技巧

《电脑win32spl.dll文件丢失咋办?win32spl.dll丢失无法连接打印机修复技巧》电脑突然提示win32spl.dll文件丢失,打印机死活连不上,今天就来给大家详细讲解一下这个问题的解... 不知道大家在使用电脑的时候是否遇到过关于win32spl.dll文件丢失的问题,win32spl.dl

mybatis-plus 实现查询表名动态修改的示例代码

《mybatis-plus实现查询表名动态修改的示例代码》通过MyBatis-Plus实现表名的动态替换,根据配置或入参选择不同的表,本文主要介绍了mybatis-plus实现查询表名动态修改的示... 目录实现数据库初始化依赖包配置读取类设置 myBATis-plus 插件测试通过 mybatis-plu

电脑报错cxcore100.dll丢失怎么办? 多种免费修复缺失的cxcore100.dll文件的技巧

《电脑报错cxcore100.dll丢失怎么办?多种免费修复缺失的cxcore100.dll文件的技巧》你是否也遇到过“由于找不到cxcore100.dll,无法继续执行代码,重新安装程序可能会解... 当电脑报错“cxcore100.dll未找到”时,这通常意味着系统无法找到或加载这编程个必要的动态链接库

基于Canvas的Html5多时区动态时钟实战代码

《基于Canvas的Html5多时区动态时钟实战代码》:本文主要介绍了如何使用Canvas在HTML5上实现一个多时区动态时钟的web展示,通过Canvas的API,可以绘制出6个不同城市的时钟,并且这些时钟可以动态转动,每个时钟上都会标注出对应的24小时制时间,详细内容请阅读本文,希望能对你有所帮助...