PowerBI基础——第四天 如何按照日期变化滚动求和,X系列函数和earlier函数碰撞出的火花,VAR代替earlier函数的另一种花火

1、X系列函数

我们常见的一些函数如:SUM、AVERAGE、COUNT......,当他们后面跟上X,会出现什么样的变化呢?

SUMX('表','表达式')函数返回表中的每一行算的表达式的和;

AVERAGEX('表','表达式')函数返回表中的每一行算的表达式的平均值;

COUNTX('表','表达式')函数, 在对 表上的表达式求 值时 包含非空白 的行数或 非空白 的表达式 数。

2、earlier函数

earlier函数,返回所述列的外部传递中指定列的当前

注意:

EARLIER 行速度可能比 较缓 慢,因 从理 ,它可能需要 行大量操作,操作次数接近于 行数 (列中)乘以相同数字(具体因表达式的语 法而异)。 例如,如果列中有 10 行, 可能需要大 100 次操 作;如果有 100 行, 可能会 行接近 10,000 次操作。

3、VAR函数

编写 DAX 表达式时,可以通过使用变量避免重复书写相同的表达式。变量在被定义的计值上下文中计算,而不在使用它们的环境中计算,一旦变量被计算,它的值就不在变化,在定义变量时要用VAR这个函数定义

 

4、案例:求出每个商品的累计销量

首先,按照SUMX('表','表达式')函数,先确定表,首先把商品编码给筛选出来,利用filter函数生成需要的表,即:表 = filter(‘销售明细’,‘销售明细’[销售编码] = EARLIER(‘销售明细’[销售编码] ))

然后,确定筛选条件,开始筛选日期,让当前日期小于等于日期,筛选条件 = ‘销售明细’,‘销售明细’[日期] <= EARLIER(‘销售明细’[日期] )

接下来,filter(表,筛选条件)

最后套进SUMX中,即:

累计销量 = 
​​​​​​​SUMX(
    FILTER(
        FILTER(
            '销售明细',
            '销售明细'[商品编码] = EARLIER('销售明细'[商品编码])
        ),
        '销售明细'[日期] <= EARLIER('销售明细'[日期])
    ),'销售明细'[销售数量]
)

当用VAR函数时,程序应该这样写

累计销量 = 
VAR SKU_bm = SELECTEDVALUE('销售明细'[商品编码])
VAR date_buy = SELECTEDVALUE('销售明细'[日期])
RETURN

​​​​​​​SUMX(
    FILTER(
        FILTER(
            '销售明细',
            '销售明细'[商品编码] = SKU_bm)
        ),
        '销售明细'[日期] <= date_buy)
    ),'销售明细'[销售数量]
)

        这里首先使用VAR语句获取当前日期和之前日期的值,然后使用fiter函数进行筛选,按照商品编码汇总,在套用FITER函数获取之前日期的销售额,最后将当前日期和之前日期的销售额相加。这样就能够实现按照日期变化滚动求和的功能

结果入下图所示:

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值