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)
相关推荐
不羁。。1 小时前
【撸靶笔记】第七关:GET - Dump into outfile - String
数据库·笔记·oracle
yangchanghua1113 小时前
pgsql 如何查询今天范围内的数据(当天0点0分0秒 - 当天23点59分59秒....)
数据库·pgsql
larance3 小时前
SQLAlchemy 的异步操作来批量保存对象列表
数据库·python
python_chai3 小时前
从数据汇总到高级分析,SQL 查询进阶实战(下篇)—— 分组、子查询与窗口函数全攻略
数据库·sql·mysql
在努力的前端小白3 小时前
Spring Boot 敏感词过滤组件实现:基于DFA算法的高效敏感词检测与替换
java·数据库·spring boot·文本处理·敏感词过滤·dfa算法·组件开发
未来之窗软件服务3 小时前
自建知识库,向量数据库 (九)之 量化前奏分词服务——仙盟创梦IDE
数据库·仙盟创梦ide·东方仙盟·自建ai·ai分词
冒泡的肥皂6 小时前
MVCC初学demo(一
数据库·后端·mysql
.Shu.7 小时前
Redis Reactor 模型详解【基本架构、事件循环机制、结合源码详细追踪读写请求从客户端连接到命令执行的完整流程】
数据库·redis·架构
薛晓刚10 小时前
当MySQL的int不够用了
数据库
SelectDB技术团队10 小时前
Apache Doris 在菜鸟的大规模湖仓业务场景落地实践
数据库·数据仓库·数据分析·apache doris·菜鸟技术