You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power BI中按BL分组筛选全610标识行统计完全退货订单量

解决方案

方案1:使用DAX度量值(推荐,适合直接用于可视化统计)

不需要提前修改原始表结构,直接编写度量值即可统计完全退货订单数量,代码如下:

完全退货订单数 = 
COUNTROWS(
    FILTER(
        VALUES('你的表名'[BL]),
        CALCULATE(
            COUNTROWS('你的表名') = CALCULATE(COUNTROWS('你的表名'), '你的表名'[SORMVT] = 610)
        )
    )
)
  • 逻辑说明:先提取所有不重复的订单编号,逐个判断该订单的总行数是否等于SORMVT为610的行数,相等即代表该订单所有行都处于退货状态,最后统计符合要求的订单总数。
  • 优势:无需调整原始数据模型,编写完成后可直接拖入可视化组件使用,可动态响应页面筛选器。

方案2:使用M语言在Power Query中新增订单级标记列

M语言没有内置SWITCH函数,可通过分组聚合+if...else判断的方式实现订单标记,操作步骤如下:

  1. 打开Power Query编辑器,选中目标数据表
  2. 新增分组步骤,按BL字段分组,统计该订单的总行数、SORMVT=610的行数,参考M代码:
= Table.Group(
    上一操作步骤的名称, 
    {"BL"}, 
    {
        {"订单总行数", each Table.RowCount(_), Int64.Type}, 
        {"退货行数量", each Table.RowCount(Table.SelectRows(_, each [SORMVT] = 610)), Int64.Type}
    }
)
  1. 新增自定义列判断是否为完全退货订单:
= Table.AddColumn(
    分组步骤的名称, 
    "是否完全退货", 
    each if [订单总行数] = [退货行数量] then "是" else "否"
)
  1. 将生成的标记列合并回原始数据表,后续可直接用该字段做筛选、统计。

补充说明

如果需要同时校验ENTMVT也为610(即仅统计已发货后完成全退的订单),只需在上述两种方案的判断逻辑中增加ENTMVT = 610的过滤条件即可。仅需统计全退订单数量时优先使用DAX度量值方案,性能更好、维护成本更低。

内容的提问来源于stack exchange,提问作者YannP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 22:54:07