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

Power BI计算列需求:实现SKU状态一旦变为Inactive保持不变

解决SKU状态永久保持Inactive的DAX方案

核心问题分析

你的原DAX计算列仅基于当前周期条件判断状态,未追踪SKU的历史状态,导致触发Inactive后,后续周期若满足Active条件会被重新标记,不符合“一旦Inactive就永久保持”的要求。直接调用自身计算列会引发循环引用错误,因为计算列的行上下文无法直接依赖自身其他行的计算结果。

解决方案:分两步构建状态逻辑

1. 创建基础状态辅助列

先定义仅基于当前周期条件的基础状态,不考虑历史状态:

Base Status = 
IF(
    [Date_time_year] = 2019,
    "",
    IF(
        [Month_Diff] < 12,
        "Active",
        IF(
            [Sales_Qty_L12M] < 51,
            "Inactive",
            "Active"
        )
    )
)

2. 创建最终SKU状态列

通过筛选当前SKU的所有历史周期,检查是否曾触发过Inactive状态,若有则永久保持Inactive,否则使用基础状态:

SKU Status = 
VAR CurrentSKU = [SKU]
-- 替换为你用于排序周期的日期/周期列,确保能正确筛选当前周期之前的记录
VAR CurrentPeriodDate = [Date]
VAR HasInactiveHistory = 
    CALCULATE(
        NOT ISBLANK(
            SELECTCOLUMNS(
                FILTER('Summary Facts', 
                    [SKU] = CurrentSKU && 
                    [Date] <= CurrentPeriodDate && 
                    [Base Status] = "Inactive"
                ),
                "Dummy", 1
            )
        )
    )
RETURN
IF(HasInactiveHistory, "Inactive", [Base Status])

关键说明

  • 必须确保表中有唯一标识每个周期的日期/周期列(比如每个行对应SKU+月的组合),才能正确筛选当前周期之前的历史记录。
  • 若你的表是按SKU+年度/月度聚合的结构,上述代码可直接适配;如果是原始交易表,需先聚合到SKU+周期的粒度再计算。
  • 避免循环引用的核心是拆分逻辑:用独立的辅助列计算基础状态,再基于辅助列的历史结果判断最终状态,而非直接引用自身计算列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 07:33:12