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

Power BI DAX:转置数据并填充1Months MaxQty空白值求助

问题描述

现有数据如下:

Product Date        Age bucket  Deliv_qty   Max_qty_PerPeriod
A       05/01/2024  3Months     100         200
B       05/02/2024  3Months     200         200
C       05/03/2024  3Months     150         200
A       08/04/2024  1Months     110         130
B       08/05/2024  1Months     130         130
A       02/10/2024  6Months     250         350
B       02/11/2024  6Months     350         350
C       01/01/2020  12Months    125         125

需将其转换为宽表格式,尝试以下DAX代码后,1-MonthMAX列始终显示空白:

JoinedT =
ADDCOLUMNS (
    CALCULATETABLE (
        SUMMARIZE (
            DailyMasterData,
            DailyMasterData[Symbol],
            DailyMasterData[Date],
            DailyMasterData[Age_bucket],
            DailyMasterData[DELIV_QTY]
        )
    ),
    "1-MonthMAX",
        CALCULATE (
            MAX ( DTable[Max_Qty_PerPeriod] ),
            ALLEXCEPT ( DTable, DTable[Symbol], DTable[Age_bucket] ),
            FILTER ( DTable, DTable[Age_bucket] = "1-month" )
        )
)
问题分析与解决方案

核心问题

  1. 文本匹配错误:数据中年龄分段值为1Months,但代码过滤条件写为"1-month",格式、大小写不匹配导致筛选无结果,返回空白。
  2. 表引用与上下文冲突:代码混用DailyMasterData和DTable两个表名(若为同一表则无需区分),且ALLEXCEPT保留Age_bucket筛选上下文后,叠加Age_bucket = "1-month"的筛选会与当前行的Age_bucket(如3Months)冲突,无法获取有效数据。

修正后的DAX代码

假设DailyMasterData为包含所有数据的主表,修正代码如下:

JoinedT =
ADDCOLUMNS (
    SUMMARIZE (
        DailyMasterData,
        DailyMasterData[Product], // 修正原代码中列名不匹配问题(原数据为Product,代码误写为Symbol)
        DailyMasterData[Date],
        DailyMasterData[Age bucket],
        DailyMasterData[Deliv_qty]
    ),
    "1-MonthMAX",
        CALCULATE (
            MAX ( DailyMasterData[Max_qty_PerPeriod] ),
            // 清除无关筛选上下文,仅保留当前行的Product关联
            ALL ( DailyMasterData[Date], DailyMasterData[Age bucket], DailyMasterData[Deliv_qty] ),
            DailyMasterData[Product] = EARLIER ( DailyMasterData[Product] ),
            DailyMasterData[Age bucket] = "1Months" // 匹配数据中的实际值
        )
)

关键修正说明

  • 统一列名:将代码中错误的Symbol改为数据实际列名Product。
  • 修正筛选值:把"1-month"改为数据中存在的"1Months",确保能匹配到目标数据。
  • 调整上下文逻辑:用ALL清除日期、年龄分段、交付量的筛选,结合EARLIER锁定当前行的产品,确保仅提取同一产品下1Months分段的最大允许量。

预期输出示例

ProductDateAge bucketDeliv_qty1-MonthMAX
A05/01/20243Months100130
B05/02/20243Months200130
C05/03/20243Months150(空白,C无1Months分段数据)
A08/04/20241Months110130

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 09:02:24