BI技巧丨RANKX浮点运算

news2024/12/23 9:44:49

RANKX这个函数,白茶之前已经写过很多期了,本期是对RANKX函数一个细节问题的补充。

我们常见的数据类型有很多,用来聚合的主要有三种数据类型:文本、整数、小数。

在大部分场合,小数是实际FACT数据中最为常见的数据类型,当小数与RANKX函数组合的时候,会产生意想不到的小问题。

案例数据:

案例数据比较简单,分别是产品表、分店表、销售事实表。

细心的小伙伴可能已经发现了,产品表中的价格和成本并不是整数,而是位数较多的小数。

将其导入到PowerBI中模型如下:

构建基础指标:

1.销售金额:

001.SalesAmount = 
SUMX ( 'Fact_Sales', 'Fact_Sales'[Quantity] * RELATED ( Dim_Product[Price] ) )

2.销售成本:

002.SalesCost = 
SUMX ( 'Fact_Sales', 'Fact_Sales'[Quantity] * RELATED ( Dim_Product[Cost] ) )

3.销售毛利:

003.SalesProfit = 
[001.SalesAmount] - [002.SalesCost]

4.在分店表维度下,进行排名:

004.ProfitRankx = 
IF (
    HASONEFILTER ( Dim_Store[City] ),
    RANKX ( ALLSELECTED ( 'Dim_Store' ), [003.SalesProfit] )
)

展示效果如下:

看到这里小伙伴会说,这不是挺正常的嘛,没看出来哪里不对啊。

别急,我们添加一个切片器,来查看一下筛选的效果。

问题描述:

这里有一个很明显的问题,就是白茶RANKX函数内部使用的是ALLSELECTED函数,那么我们得到的排名结果应该是相对排名。

不添加切片器筛选的时候,总体排名和绝对排名是一样的,看起来没什么问题,但是一旦我们添加了切片器筛选,就会明显的看到,两个数值不同的度量值排名居然是一样的。

这个问题产生的原因在于,我们计算依据的物理列价格和成本是包含小数的,多组小数格式数据计算会产生浮点数据,因此在底层逻辑转化过程中会造成数据的精度丢失。

因此解决办法有两种:

1.数据进入到PowerQuery中时,我们进行数据截断;

2.在计算结果上进行数据截断。

白茶推荐大家使用第二种方式,毕竟在PowerQuery中修改数据格式再进行数据UAT测试的时候,是很容易造成上下游数据偏差的。

修改RANKX度量值如下:

005.ProfitRankxAmend = 
IF (
    HASONEFILTER ( Dim_Store[City] ),
    RANKX ( ALLSELECTED ( 'Dim_Store' ), ROUND ( [003.SalesProfit], 2 ) )
)

展示效果如下:

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

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

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

相关文章

[1180]clickhouse查看数据库和表的容量大小

文章目录1.查看数据库容量、行数、压缩率2.查看数据表容量、行数、压缩率3.查看数据表分区信息4.查看数据表字段的信息5. 查看表的各个指标6.跟踪分区7.检查数据大小在mysql中information_schema这个数据库中保存了mysql服务器所有数据库的信息, 而在clickhouse&…

[附源码]Python计算机毕业设计SSM基于健身房管理系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Java 变量作用域、构造方法官方教程

一、变量作用域 Java 中的变量有3种: 📖 ① 全局变量:被定义在类中(成员变量) 📖 ② 局部变量:被定义在成员方法、代码块、静态代码块中定义的变量 📖 ③ 参数:方法声明中的变量 T…

1.Spring简介

1.概念 Spring是一个免费开源框架,为了简化企业级项目开发,提供全面的开发部署解决方案。 2.体系结构 Data Access/Integeration是Spring对数据持久层的支持,SpringDataJpa就是其中的一种。Web是Spring对表现层处理的支持,Spir…

Springboot多环境开发

文章目录一. 前言二. 单文件版多环境配置三. 多文件版多环境配置四. 多环境开发配置技巧五. 多环境配置分组管理一. 前言 在日常开发中我们使用的环境可能会不一样,比如开发环境,测试环境,生产环境,那么这些环境对应的配置也会不…

【计算机视觉】数据获取、数据标注、数据增强的概念简介

觉得有帮助麻烦点赞关注收藏~~~ 基于深度学习的视频分析算法是依赖于数据训练的,数据是深度学习的主要原料,对于算法性能的提升是非常重要的。本章将重点介绍数据的获取、标注、增强及处理方法。 一、数据获取 训练数据的来源主要包括网上公开数据库和…

Redis实现短信登录

文章目录一、基于Session实现登录二、基于Redis实现共享Session实现登录一、基于Session实现登录 ---------------------------------------------------Controller PostMapping("code") public Result sendCode(RequestParam("phone") String phone, Http…

JavaScript进阶教程——面向对象、原型对象、this关键字、bind appl call方法

文章目录面向对象ES2015的面向对象语法:ES5的面向对象语法:原型对象原型链Object对象的原型this关键字**指向调用方法的对象:****构造函数:**触发事件指向全局对象:箭头函数总结bind appl call方法call的用法参数apply…

【计算机图形学入门】笔记4:变换(模型、视图、投影)

目录04变换(模型、视图、投影)1.使用齐次坐标表示的三维变换2.view/Camera 视图变换3.Projection 投影变换1.Orthographic projection 正交投影2.Perspective projection 透视投影 ——更适合人眼成像(近大远小,鸽子为什么这么大&…

AlphaControls 读取存贮数据VCL OnChange事件的处理

AlphaControls 读取存贮数据VCL OnChange事件的处理 AlphaControls控件,窗口时显示,对于VCL控件的处理,需要通过调用皮肤模板重新画出来。因此,在窗口的显示过程中,对VCL控件的数据装载(变更&#x…

从获评毕马威中国领先地产科技50强 看贝壳的长期主义

11月9日,在上海进博会现场,毕马威发布了2022年度(第二届)“毕马威中国领先地产科技企业50”报告,并正式发布了年度毕马威中国领先地产科技企业50榜及地产科技新锐企业榜。作为国内居住产业数字服务平台的贝壳上榜。 众…

前辈给的 Spring Cloud 与 Docker 微服务实战,挽救了要被辞退的我

前言 还记得那天天气阴冷,整个人心都是拔凉拔凉的;原因是因为领导找我聊了一下,委婉地说觉得我的技术不太行,能力不突出;要么自己做出改变,要么选择离开。 说实话,我是有点难过的,…

Lambda完整学习指南

什么是Lambda表达式 Lambda表达式是Java SE 8中一个重要的新特性。lambda表达式允许你通过表达式来代替功能接口。lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块)。Lambda表达式还增强了集合库。 Java La…

大学生HTML作业篮球网页 HTML作业篮球网页期末作业 HTML+CSS篮球网页 HTML学生作业体育篮球网页

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

ARS系列毫米波雷达技术一览

近年来,自动驾驶成为了当下最热门的话题。随着自动驾驶技术的发展,作为其关键传感器之一的毫米波雷达,也得到了广泛关注。但就目前来看,海外巨头公司主导着全球毫米波雷达产业的发展,其中,大陆ARS540更以九…

吊打面试官,聊聊:Java中String对象的大小?(史上最全)

下面是一个常见的Java 面试题: 聊聊:Java中String对象的大小? 首先,看看空String占用的空间 当前内存大小是在默认开启压缩指针的条件下 对象头 12char[]数组引用 4int 类型 hash数据大小 4loss due to the next object alignm…

MacOS好用的系统清理工具CleanMyMac有哪些特点功能?

怎么样为Mac选择一款专业靠谱的清理工具?需要满足那些功能呢?对于大多数的新手用户可能并不知道如何来清理Mac系统,当然也不知道在众多清理工具中如何选择。选择一款清理工具最重要的是它的性能如何,能不能有效的帮助用户清理系统…

[附源码]JAVA毕业设计小说阅读网站(系统+LW)

[附源码]JAVA毕业设计小说阅读网站(系统LW) 项目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术&…

听说你还不了解二叉树?赶紧进来轻松解决

✨个人主页: Yohifo 🎉所属专栏: 数据结构 | C语言 🎊每篇一句: 图片来源 Only by self-respect will you compel others to respect you. 只有自尊才能迫使他人尊敬你。 文章目录📘前言📘正文…

java的vo实体类字段和返回前端接收的字段大小写不一致

java的vo实体类字段和返回前端接收的字段不一致 后台的vo字段和前端接收到的出现大小写一直的情况 例如: 后台字段 /** a_lwa */private String aLwa;前端实际接收到的 这是由于使用lombok插件导致的 解决办法 实体类添加注解强制绑定 /** a_lwa */JsonProperty("aLwa&…