8.9 PowerBI系列之DAX函数专题- TopN和BottomN和otherN的实现

需求

在这里插入图片描述
在这里插入图片描述

实现

1 summary table = summarize(order_2,order_2[产品子类别],"订单金额",sum(order[订单金额]))
2 bottom5 table = topn(5,'summary table','summary table'[订单金额],desc)
// var v_sum_table = summarize(order_2,order_2[产品子类别],"订单金额",sum(order_2[订单金额]))
// return topn(5,v_sum_table,[订单金额],desc) --这个写法的问题在于直接用物理表取数,导致最终数据不受外部筛选器的影响
3 except top5 table = calculatetable('summary table',except('summary table','top5 table'))
// var v_sum = summarize(all(order_2),order_2[产品子类别],"订单金额",[销售额]) 
// var v_top5 = TOPN(5,v_sum,[订单金额])
// return except(v_sum,v_top5)
4 top5 and others table =
var top5_2 = selectcolumns('top5 rable',"产品子类型",'top5 table'[产品子类别],"总金额",'top5 table'[订单金额])
var others_2 = seleccolumns('except top5 table',"产品子类型","其他","总金额",'except top5 table'[订单金额])
return union(top5_a,others_a)
EXCEPT(<table_expression1>, <table_expression2>  

备注
如果某行同时出现在两个表中,则该行及其重复项不会出现在结果集中。 如果某行仅出现在 table_expression1 中,则该行及其重复项将出现在结果集中。

列名将与 table_expression1 中的列名相匹配。

返回的表的世系基于 table_expression1 中的列,与第二个表中列的世系无关。 例如,如果第一个 table_expression 的首列有模型中基本列 C1 的世系,则 Except 将基于第二个table_expression 首列中的值的可用性来减少行,并保持基本列 C1 的世系不变。

这两个表必须具有相同的列数。

列基于位置进行比较,并且不会进行类型强制转换的数据比较。

返回的行集取决于两个表达式的顺序。

返回的表不包括与 table_expression1 相关的表中的列。

在已计算的列或行级安全性 (RLS) 规则中使用时,不支持在 DirectQuery 模式下使用此函数。

示例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值