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)
相关推荐
【心态好不摆烂】5 分钟前
MySQL数据类型
数据库·mysql
码云骑士10 分钟前
jwt入门介绍
linux·运维·数据库
努力努力再努力wz13 分钟前
【Redis 入门系列】为什么需要 Redis?一文串起缓存、分布式、读写分离、分库分表与微服务
数据库·redis·分布式·sql·mysql·缓存·微服务
得闲喝茶13 分钟前
SQL处理数据的常用语法语句
数据库·笔记·sql·数据分析·excel
金玉满堂@bj21 分钟前
PostgreSQL:企业级全能开源数据库
数据库·postgresql·开源
todoitbo39 分钟前
CTE 与外层 JOIN 的条件下推:原理、边界与验证方法
数据库·join·cte
TEC_INO44 分钟前
Linux56:读取人脸图片并把特征值保存到sqlite3数据库
数据库·oracle
刘~浪地球44 分钟前
MongoDB分片集群实战:水平扩展海量数据
数据库·mongodb
鸽芷咕1 小时前
KingbaseES中的PL_SQL编程:存储过程、函数、触发器与包的开发指南
数据库·sql·oracle
4311媒体网1 小时前
帝国CMS新手入门教程:从零开始掌握企业级建站系统
数据库