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

如何按产地、产品、缺陷筛选最新2条生产缺陷数据并汇总成本?

解决方案

1. 先确认数据基础关联

  • 如果产地信息未直接包含在生产缺陷数据表中,需确保缺陷表与存储「产地-产品对应关系」的表(比如生产基地对照表)已通过Product ID或产品类别字段正确关联,保证每条缺陷记录能准确匹配到所属产地。

2. 用DAX实现分组取TOP2+成本汇总

方法一:生成固定结果计算表

若需要一次性导出分组后的TOP2记录及总成本,使用以下DAX表达式创建计算表:

TOP2缺陷记录及总成本 = 
VAR 分组维度 = 
    SUMMARIZE(
        '生产缺陷数据表',
        '生产缺陷数据表'[产地],
        '生产缺陷数据表'[产品],
        '生产缺陷数据表'[Defect]
    )
VAR 分组取TOP2 = 
    ADDCOLUMNS(
        分组维度,
        "最新2条记录",
            TOPN(
                2,
                FILTER(
                    '生产缺陷数据表',
                    '生产缺陷数据表'[产地] = EARLIER('生产缺陷数据表'[产地]) &&
                    '生产缺陷数据表'[产品] = EARLIER('生产缺陷数据表'[产品]) &&
                    '生产缺陷数据表'[Defect] = EARLIER('生产缺陷数据表'[Defect])
                ),
                '生产缺陷数据表'[生产日期], DESC
            ),
        "缺陷总成本",
            CALCULATE(
                SUM('生产缺陷数据表'[缺陷成本(USD)]),
                TOPN(
                    2,
                    FILTER(
                        '生产缺陷数据表',
                        '生产缺陷数据表'[产地] = EARLIER('生产缺陷数据表'[产地]) &&
                        '生产缺陷数据表'[产品] = EARLIER('生产缺陷数据表'[产品]) &&
                        '生产缺陷数据表'[Defect] = EARLIER('生产缺陷数据表'[Defect])
                    ),
                    '生产缺陷数据表'[生产日期], DESC
                )
            )
    )
RETURN
    分组取TOP2
  • 逻辑说明:先通过SUMMARIZE生成所有唯一的「产地-产品-缺陷类型」组合,再用ADDCOLUMNS为每个组合筛选出最新2条记录,并计算对应成本总和;EARLIER用于锁定外层分组上下文,确保TOPN是在每个分组内筛选。

方法二:创建动态交互度量值

若需在报表中配合切片器动态展示,创建以下两个度量值:

(1)判断是否为分组内TOP2记录

是否为TOP2记录 = 
VAR 当前分组排名 = 
    RANKX(
        FILTER(
            ALLSELECTED('生产缺陷数据表'),
            '生产缺陷数据表'[产地] = MAX('生产缺陷数据表'[产地]) &&
            '生产缺陷数据表'[产品] = MAX('生产缺陷数据表'[产品]) &&
            '生产缺陷数据表'[Defect] = MAX('生产缺陷数据表'[Defect])
        ),
        MAX('生产缺陷数据表'[生产日期]),
        , DESC, DENSE
    )
RETURN
    IF(当前分组排名 <= 2, 1, 0)
  • 使用方式:在可视化组件的筛选器中,将该度量值设置为「等于1」,即可仅显示每个分组的最新2条记录。

(2)分组TOP2缺陷总成本

TOP2缺陷总成本 = 
CALCULATE(
    SUM('生产缺陷数据表'[缺陷成本(USD)]),
    FILTER(
        ALLSELECTED('生产缺陷数据表'),
        VAR 当前分组排名 = 
            RANKX(
                FILTER(
                    ALLSELECTED('生产缺陷数据表'),
                    '生产缺陷数据表'[产地] = EARLIER('生产缺陷数据表'[产地]) &&
                    '生产缺陷数据表'[产品] = EARLIER('生产缺陷数据表'[产品]) &&
                    '生产缺陷数据表'[Defect] = EARLIER('生产缺陷数据表'[Defect])
                ),
                '生产缺陷数据表'[生产日期],
                , DESC, DENSE
            )
        RETURN 当前分组排名 <= 2
    )
)
  • 作用:自动计算当前筛选上下文下,每个「产地-产品-缺陷类型」分组的最新2条记录成本总和。

3. 常见错误排查

  • 未锁定分组上下文:直接使用TOPN(2, '生产缺陷数据表', [生产日期], DESC)会取整个表的TOP2,而非每个分组内的,必须通过FILTER+EARLIER/MAX限定分组维度。
  • 日期格式异常:确保「生产日期」字段为日期/时间类型,若为文本格式会导致排序逻辑错误。
  • 重复日期处理:若多条记录生产日期相同,RANKX的DENSE参数会让相同日期的记录排名一致,避免漏选;若需严格取2条,改用默认的SKIP排名即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 11:45:16