BI技巧丨RankxYoY

news2024/11/15 15:36:18

群友:PowerBI可以实现两年的排名差异么?
白茶:可以!安排!

本期的问题,来自于群内小伙伴的一个实际应用场景。在实际业务中,这个需求属于常见类型,展示当前排名时,用户关注的不只是当下的排名,还有对比以往排名的变化情况,这样才能发现到底是哪些产品的排名发生了变动,变动情况是怎样的,产生变化的原因是什么,进行问题的溯源。

案例数据:

案例数据共计三张表,产品表,分店表,事实表。
将其导入到PowerBI中,添加日期表。

Dim_Date = 
GENERATE (
    CALENDAR ( MIN ( 'Fact_Sales'[Date] ), MAX ( 'Fact_Sales'[Date] ) ),
    VAR DA = [Date]
    VAR YEAR =
        YEAR ( DA )
    VAR QUARTER =
        "Q" & FORMAT ( DA, "Q" )
    VAR MONTE =
        FORMAT ( DA, "MM" )
    VAR DAY =
        DAY ( DA )
    RETURN
        ROW (
            "Year", YEAR,
            "Quarter", QUARTER,
            "Month", MONTE,
            "DayOfMonth", DAY,
            "YearQuarter", YEAR & QUARTER,
            "YearMonth", YEAR & MONTE
        )
)

模型关系如下:

基础指标:
我们添加如下度量值。
销售数量:

001.Quantity = 
SUM ( 'Fact_Sales'[Quantity] )

当前年份:

002.CurrentYear = 
MAX ( 'Dim_Date'[Year] )

这里用Selectedvalue其实也是可以的,用Max的好处在于可以避免切片器无筛选的情况。当前排名:

003.QuantityRankx = 
IF (
    HASONEVALUE ( 'Dim_Store'[StoreName] ),
    RANKX ( ALLSELECTED ( 'Dim_Store'[StoreName] ), [001.Quantity] )
)

将上述度量值拖放到表中展示如下:

那么,如何计算两年排名差异呢?
1.计算出去年的销售数量
2.计算出去年的排名
3.根据今年和去年排名计算差异
思路缕清了,添加如下度量值:
去年销量:

004.LastYearQuantity = 
VAR CurrentYear = [002.CurrentYear]
RETURN
    CALCULATE (
        [001.Quantity],
        FILTER ( ALL ( 'Dim_Date' ), 'Dim_Date'[Year] = CurrentYear - 1 )
    )

去年排名:

005.LastYearQuantityRankx = 
IF (
    HASONEVALUE ( 'Dim_Store'[StoreName] ),
    RANKX ( ALLSELECTED ( 'Dim_Store'[StoreName] ), [004.LastYearQuantity] )
)

排名差异:

006.RankxYoY = 
[003.QuantityRankx] - [005.LastYearQuantityRankx]

展示效果如下:

当然,有不喜欢分段写法的小伙伴,我们也可以一段代码出结果。

007.FinalRankxYoY = 
VAR CurrentYear = [002.CurrentYear]
VAR CurrentYearRankx =
    RANKX ( ALLSELECTED ( 'Dim_Store'[StoreName] ), [001.Quantity] )
VAR LastYearRankx =
    RANKX (
        ALLSELECTED ( 'Dim_Store'[StoreName] ),
        CALCULATE (
            [001.Quantity],
            FILTER ( ALL ( 'Dim_Date' ), [Year] = CurrentYear - 1 )
        )
    )
VAR Result = CurrentYearRankx - LastYearRankx
RETURN
    IF ( HASONEVALUE ( 'Dim_Store'[StoreName] ), Result )

展示效果如下:

PS:
数据格式,可以在度量值格式里面直接修改为“+0;-0;0”,这里就不赘述了。

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

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

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

相关文章

【软件测试】 测试开发?看看一线大厂需求的测试开发技能......

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 能在一线大厂工作是…

FPGA知识汇集-FPGA系统时序理论

时序约束条件 下面来具体讨论一下系统时序需要满足的一些基本条件。我们仍然以下图的结构为例,并可以据此画出相应的时序分析示意图。 在上面的时序图中,存在两个时序环,我们称实线的环为建立时间环,而虚线的环我们称之为保持时间…

Java死锁

一.死锁是什么? 死锁指两个或者两个以上的线程在执行过程中,去争夺同样一个共享资源,造成的相互等待的现象,如果没有外部干预,线程会一直阻塞,无法往下执行,这样一直处于相互等待资源的线程叫做…

极米Z6X Pro怎么样?极米Z6X Pro亮度如何?极米Z6X Pro值得入手吗?

投影仪不知怎么选?不妨看看极米Z6X Pro,半山黛青的全新配色下,是仅有5.3cm的轻薄机身,1.4kg的重量,一只手就可以轻松拿取。相比同价位的投影产品,极米Z6X Pro摆放方便又不占地,外观时尚精致&…

Go Map

Go Map map 是一种key-value的键值对存储结构,其中key不能重复,无序。底层是hmap结构,hmap中维护buckets(bmap结构)。结构定义 type hmap struct {count int // 元素个数B uint8 // buckets已扩容的次数,buckets长…

JVM-Java内存区域

1、运行时数据区域 运行时数据区域:程序计数器、Java虚拟机栈、本地方法栈、堆、方法区。 非运行时数据区域:直接内存。 (1)程序计数器 字节码解释器通过改变程序计数器来依次读取指令,从而实现代码的流程控制。在多线…

谷歌2022年最受欢迎Chrome浏览器扩展程序:包含Tango,Compose AI等

根据截图排序从左到右依次介绍如下: RoPro:Roblox.com网站体验增加了许多有用且独特的功能; MyBib:自动创建 APA 样式、MLA 格式和哈佛引用样式引文; eJOY English:翻译自Netflix, Youtube, iFlix上的字…

Codeforces Round #841 (Div. 2) and Divide by Zero 2022(A-D)

Codeforces Round #841 (Div. 2) and Divide by Zero 2022(A-D) 题目链接限制AJoey Takes Moneystandard input/output1 s, 256 MBBKill Demodogsstandard input/output1 s, 256 MBCEven Subarraysstandard input/output2.5 s, 256 MBDValiant’s New M…

数字经济指标构建-各省、地级市匹配上市公司数据、城市数字化指数

一、中国城市数字经济指数2017-2022年(数据代码报告) 中国城市数字化指数全面覆盖城市数字化规划、建设、运营的各个方面,能够有效评估城市各个领域的数字化建设水平和运营效果。 全国城市数字经济发展热图 数据来源:中国城市数字…

语音转换之CycleGan-VC2:原理与实战

非平行语音转换CycleGAN 之前学习了传统统计学习里的经典的语音转换模型GMM。随着深度学习的发展,出现了更好的语音转换方法,今天学习较为经典的CycleGan。 平行语音转换一般流程 典型代表就是基于GMM的语音转换。平行数据就是说源语音和目标语音一一…

矢量图斑局部狭长判断和定位局部狭长部分(PostGIS、Java、C#实现)

矢量数据在数据采集过程中由于数据处理导致出现局部狭窄的面状部分,如下图 1. 定义和解决方法 狭长结构是指图斑几何形态上窄而长的部分,符号化后出现图形粘连压盖现象,导致难以在图面上清晰地表达出来。因此,依据地图表达比例尺因素需要对狭长结构进行融解处理。在…

helm部署frps和连接

文章目录一. helm部署frps1.1 下载1.2 部署1.2.1 不开启dashboard界面1.2.2 开启dashboard界面1.2.3 卸载1.3 查看1.4 IP Port 允许端口1.5 Web Ingress二. frpc客户端连接2.1 IP Port 连接2.2 Web 域名连接一. helm部署frps 1.1 下载 mkdir -p /root/i/helm && cd…

并查集专题1_图篇

1.并查集介绍 并查集支持查询和合并操作,只回答两个节点是不是在一个连通分量中,并不回答路径问题。 如果一个问题具有传递性,可以考虑用并查集。并查集最常见的一种设计思想是把在同一个连通分量中的节点组织成一个树形结构。 2.并查集的…

动作捕捉技术应用于地面移动机器人协同

《一千零一夜》故事集中收录的《阿拉丁神灯》深受读者们的喜爱,其中阿拉丁拥有一块神奇的魔毯,它具有运载功能,可以将物体轻松便捷的从一个地方转移到另一个地方。在现实生活中,可变形布作为一种轻量便携且具有良好适应性的载体&a…

redhat9中mysql常用命令(持续更新)

目录 1、查看当前用户 2、查看选择的数据库 3、创建数据库 4、创建数据表 5、插入数据 6、查看表所以字段的内容 7、查看数据库当前密码策略 8、查看密码插件 9、更改密码策略为LOW,改为LOW或0 10、 更改密码长度 11、设置大小写、数字和特殊字符均不要求 …

微服务系列专栏介绍

文章目录一 专栏介绍1.1 微服务行业背景不同行业IT系统更新频率IT系统存在的问题微服务架构在企业中应用情况1.2 什么是微服务1.3 微服务的特点1.4 微服务诞生背景1.5 微服务架构的优势二 专栏目标三 专栏涉及技术四 专栏架构1.微服务架构:2.Go语言3.go-micro架构4.…

入侵无线WiFi的主要方式及防护要点

从攻击形态上看,无线网络攻击主要可以分为三个大类:被动型攻击、主动型攻击以及针对网络组件的攻击: 被动攻击一般发生在攻击者处于无线网络范围内并可以监视无线通信内容时,最常见的被动攻击是数据包嗅探。由于被动攻击者只是监…

HTTPS 的通信加解密过程,证书为什么更安全?

经典面试题 HTTPS 的通信加解密过程,证书为什么更安全? 考察点 《计算机网络》相关知识 了解 HTTPS 协议加解密的过程 了解数字证书认证的过程 技术点 对称加密和非对称加密 HTTPS 协议的加解密过程 数字证书认证过程 对称加密和非对称加密 对称加…

Mysql 小Tips

Mysql 小Tips 目录Mysql 小Tips1.group_concat2.char_length3.locate4.replace5.now6.insert into ... select7.insert into ... ignore8.select ... for update9.on duplicate key update10.show create table11.create table ... select12.explain13.show processlist14.mysq…

企业电子招投标采购系统源码之首页设计

​ 功能模块: 待办消息,招标公告,中标公告,信息发布 描述: 全过程数字化采购管理,打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力,为外…