8.6 PowerBI系列之DAX函数专题-非日期类型的累计聚合

文章讨论了在PowerQuery中如何实现需求1(索引列累加销售额)和需求2(产品销售额排名和累计销售额)。重点在于处理不同筛选上下文对计算的影响,包括使用变量、calculatedtable和all函数确保外部筛选器的正确传递。同时,提到了两种不同的方法来计算产品销售金额的排名和累计销售额,并指出了在存在外部筛选器时可能存在的计算错误问题。
摘要由CSDN通过智能技术生成

需求

需求1:
在这里插入图片描述
需求2:
在这里插入图片描述

实现

1.需求1实现:
(1)在power query中添加列-添加索引列;
(2)根据索引列进行累加计算。

度量值 累计聚合销售额 = 
var current_pro_type = selectedvalue('product type'[index])
return calculate(sum(order_2[订单金额],'product type'[index]<=current_po_type,all(order_2))

2.需求2实现:
(1)在product表中添加按照产品名称加总的金额列,命名为"amt";
(2)计算位次
1)按照product表里的"amt"列计算按照销售金额排名的位次度量值 cnt大于等于current(有多少产品的销售金额大于当前商品);
2)按照当前筛选上下文计算位次度量值 cnt大于等于current2;
(3)按照位次计算累计销售额。
方式1:

product = addcolumns(values(order_2[产品名称]),"amt",[total amount])
度量值 cnt大于等于current = 
var v_current_amt=[total amount]
return
calculate(countrows('product'),filter('product','product'[amt]>= v_current_amt)) //筛选出对应物理表中大于等于当前行次的记录,并计数,此时,外部筛选条件只传递给了视觉对象,未传递给物理表

注意,上述实现方式在创建该度量值时使用了实现创建好的产品表,由于该表的上下文是创建时的上下文,即计算销售额排名是以原表为基础,而非外部筛选器筛选过的表为基础,因此在存在其他外部筛选器的情况下,这种无法合并外部上下文的特性会导致度量值的计算错误。如下图
在这里插入图片描述

方式2:

度量值 cnt大于等于current2 = 
var v_product_table =  //内存中生成一个包含所有产品名称及销售金额的表,而不是提前生成一个物理表
addcolumns(calculatetable(values(order_2[产品名称]),
											all(order_2[产品名称]) // 首先移除原表产品名称列外部筛选器
											),
					"amt2",
					[total amount]
					)
var v_current_amt = [total amount]
return
calculate(countrows(values(order_2[产品名称])), //calculate 会传入计算时的外部筛选上下文,影响到values中的计算结果
				filter(v_product_table,[amt2] >= v_current_amt) //按照目前的上下文,筛选出变量表中金额大于等于当前行的记录
				)
Accumualte amt2 = 
var v_product_table = addcolumns(
									calculatetable(
									values(order_2[产品名称],removefilters(order_2[产品名称])
									),
		"amt2",
[total amount])
var v_current_amt = [Total Amount]
return calculate([Total Amount],filter(v_product_table,[amt2] >= v_current_amt)) //外部筛选条件传递给变量表
Accumulate Percent 2=
var v_totale_amt = calculate([Total Amount], Allselected(order_2))
return divide([accumulate amt 2],v_total_amt)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值