Power BI学习浅析(一) VAR值得注意的地方

本人Power BI小新一枚,因为工作的需要学习了解到了Power BI, 发现了她的强大之处,打算深入学习,将在这里记录下自己一些片面的学习理解,也帮助自己更快的成长:

刚刚学会了一些简单的DAX的应用,但是发现有时候需要通过定义变量的形式减少度量值的创建,并且使代码可用性提搞,开始摸索VAR的使用

目标是计算一个表格中每个省份的销售额占总的销售额比例

方法一:创建多个度量值,按顺序达成计算结果

/*1)各省销售额*/
销售额 = 
sumx(
    '销售订单',
    '销售订单'[数量]*'销售订单'[单价]
)
/*2)全国销售额*/
总销售额 = 
CALCULATE(
     [销售额],
     all('销售订单'[省份])//去除省份的上下文筛选
) 
/*3)全国销售额*/
销售额占比 = 
divide([销售额],[总销售额]) 

方法二:通过VAR创建一个度量值,完成上述操作

销售额占比2 = 
var sales_2019 = [销售额]
// var total_2019 = 
// CALCULATE(
//     sales_2019,
//     all('销售订单'[省份])    
// )
var total_2019 = 
CALCULATE(
    [销售额],
    all('销售订单'[省份])    
)
return DIVIDE(sales_2019,total_2019)

注意的雷区

  1. 上面这种方法里面,注释的部分没法使用,返回的并不是各个省份占全国的百分比,而都是100%,即自己比自己的结果
  2. 原因在于total_2019调用了sales_2019这个var,var此时相当于一个常量(这点很重要),即使在total_2019中加入了all的上下文筛选,此时的表格也是从sales_2019来的筛选过的固定表格。
  3. 因此要想达到方法一的效果,total_2019还是需要重新用一个独立的筛选上下文,如上面代码所示

因此VAR在日常中的应用可以涵盖到如下几个部分

1)通过VAR变量的语法,从而能够代替DAX中的筛选条件,做到简化DAX代码;
2)通过VAR变量命名,创建定义一张虚拟的列表或表;
3)通过VAR变量命名,定义需要的值列表,并分别放置于“不同的计算筛选环境"里来构建DAX的一个个逻辑条件(类似于EARLIER()函数的“当前行”),然后将这些条件按条件步骤组装成一个复杂的计算逻辑条件。

//举例说明:计算各省市的帕列托占比
帕列托占比 = 
var current_sales =[销售金额]

var accum_sales = 
CALCULATE(
    [销售金额],
    filter(
        all('销售订单'[省份]),
        [销售金额]>=current_sales
    )
)

var total_sales = CALCULATE(sum('销售订单'[金额]), all('销售订单'[省份]))

return divide(accum_sales,total_sales)
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值