使用PowerBI DAX:不分组统计Order_ID重复次数及订单产品数
Got it,这两个需求都是要在保留原表重复行、不分组的前提下计算对应数值,我给你写好DAX度量值并解释清楚:
需求1:计算Order_ID的重复次数(不分组)
要让原表的每一行都显示当前Order_ID在整个表中出现的总次数,不用合并相同Order_ID的行,可以用这个度量值:
Order_ID重复次数 = CALCULATE( COUNTROWS(Orders), ALLEXCEPT(Orders, Orders[Order_ID]) )
逻辑说明:ALLEXCEPT函数会移除除了Order_ID之外的所有筛选上下文,所以CALCULATE会统计整个表中与当前行Order_ID完全匹配的所有行数。这样不管原表有多少重复的Order_ID行,每一行都会显示对应的重复次数,完全保留原表结构。
需求2:计算每个Order_ID对应的Product_ID数量(保留原表格式)
这里分两种常见场景,你可以根据实际需求选择:
场景A:统计该Order_ID下的不同Product_ID数量(去重)
如果需要知道每个订单包含多少种不同的产品,用这个度量值:
订单不同产品数 = CALCULATE( DISTINCTCOUNT(Orders[Product_ID]), ALLEXCEPT(Orders, Orders[Order_ID]) )
逻辑说明:DISTINCTCOUNT会统计当前Order_ID对应的唯一Product_ID数量,配合ALLEXCEPT锁定当前行的Order_ID,确保每一行都显示该订单的独特产品数,不改变原表的重复行结构。
场景B:统计该Order_ID下的所有产品条目总数(含重复)
如果需要统计订单下所有产品记录的总数(比如同一个产品多次出现在订单里也会被计数),用这个度量值:
订单产品条目总数 = CALCULATE( COUNTROWS(Orders), ALLEXCEPT(Orders, Orders[Order_ID]) )
逻辑说明:和需求1的核心逻辑一致,只是这里的业务意义是统计当前订单包含的产品记录总数,同样保留原表的所有重复行。
内容的提问来源于stack exchange,提问作者Loay Haggag
相关产品推荐
相关产品推荐

