前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Power BI系列:为什么度量值计算的占比全是100%?

Power BI系列:为什么度量值计算的占比全是100%?

作者头像
博文视点Broadview
发布2023-04-04 11:05:56
1.3K0
发布2023-04-04 11:05:56
举报
文章被收录于专栏:博文视点Broadview

不管是Power BI中还是在Excel的Power Pbiot中使用DAX,都支持VAR变量的写法。变量的方法不仅提高了代码的性能,还能减少代码的重复使用带来的阅读不方便。

但是很多的新手朋友们在编写表达式的时候,使用变量可能会犯这样一个错误。来看看你是不是也有这样的习惯和问题。先来看一下数据模型。

比如,要计算每个大区的订单金额占所有大区订单总金额的占比。这是一个简单的度量值,新手朋友们有可能的一种编写的代码是:

代码语言:javascript
复制
订单金额占比 =VAR salestotal =    SUM ( 'T05_订单子表'[F_06_产品销售金额] )VAR salespct =    DIVIDE (        salestotal,        CALCULATE(            salestotal,            ALL ( 'D00_大区表'[F_02_大区] )        )    )RETURN   salespct

然后我们将其放入到矩阵中,来观察一下结果。发现结果全是100%.如图所示:

上述公式虽然没有报错,但是其本身计算的结果是硬错误的,因为每个大区的订单金额占比都是100%,这是显而易见的。出现这种错误的原因是,代码关于VAR变量的理解是不正确的:

变量只在定义的时候计算,不会在使用变量的时候计算结果,并且变量的计算只进行一次。在这个例子中,已经定义的salestotal的变量不会受到CALCULATE函数的影响,即不考虑调用变量时的筛选上下文,所以后面的占比计算的时候,每一个大区返回的都是一样的值值。

所以,上述错误的代码,可以分成来写成2个度量值:

代码语言:javascript
复制
订单金额: = SUM ( 'T05_订单子表'[F_06_产品销售金额] )

再编写金额占比的度量值,如下:

代码语言:javascript
复制
订单金额占比 =DIVIDE (    [订单金额],    CALCULATE (        [订单金额],        ALL( 'D00_大区表'[F_02_大区] )    ))

再来看一下结果,就正确了。

所以,你知道你写的变量为什么总是返回100%了嘛~


作者新书

发布:刘恩惠

审核:陈歆懿

代码语言:javascript
复制

▼点击阅读原文,了解本书详情~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-02-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 博文视点Broadview 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档