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

需求

需求1:

需求2:

实现

1.需求1实现:

(1)在power query中添加列-添加索引列;

(2)根据索引列进行累加计算。

cpp 复制代码
度量值 累计聚合销售额 = 
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:

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

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

方式2:

cpp 复制代码
度量值 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) //按照目前的上下文,筛选出变量表中金额大于等于当前行的记录
				)
cpp 复制代码
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)) //外部筛选条件传递给变量表
cpp 复制代码
Accumulate Percent 2=
var v_totale_amt = calculate([Total Amount], Allselected(order_2))
return divide([accumulate amt 2],v_total_amt)
相关推荐
凌虚20 小时前
面向 MySQL 用户的 PostgreSQL 快速上手指南
数据库·后端·架构
五阿哥永琪20 小时前
MySQL中操作json的函数!
数据库·mysql·json
来者皆善20 小时前
了解Mysql优化吗?如何优化索引?
数据库·mysql
赤壁小虾1 天前
【渲染流水线】[逐片元阶段]-[透明度测试]以UnityURP为例
java·前端·数据库
MC皮蛋侠客1 天前
SQLAlchemy 系列(七):高级建模与高效写入——批量 DML、方言与扩展
数据库·python
奈斯先生Vector1 天前
把 Midjourney 二次编辑做成生产系统:customId 能力令牌、Action Graph 与 WebUI 精修工作台
数据库·人工智能·架构·aigc·音视频·midjourney
Lethehong1 天前
双擎并驱·全链路并行:KFS让TB级异构增量同步秒级到达
数据库
MC皮蛋侠客1 天前
SQLAlchemy 系列(八):AsyncIO、并发与 Web 生命周期——让每个并发任务持有自己的 Session
数据库·python
一水1 天前
Redis实战:一个AI工作流系统里的五个应用场景,从传参到限流的完整链路
数据库·redis·wpf
枫叶v.1 天前
Prompt Injection 防不住怎么办?从 Source-Sink 模型设计 Agent 安全边界
数据库·安全·prompt