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

如何从DAX临时表变量中取值填充Sale交易的加权平均Days

DAX实现Sale行加权平均Days匹配方案

核心需求回顾

事实表fTrans中,Transaction = "Sale"的行Days字段为空,需基于关联的多笔Purchase计算加权平均Days;已生成临时表Days_Tbl(含Ticker、Sale date related to respective purchase、加权平均值字段),需将该平均值匹配到fTrans中对应Ticker、Date(Sale行日期)与临时表日期一致的行。

解决方法

1. 修正LOOKUPVALUE用法

之前的错误源于临时表列引用不规范、匹配条件未对齐,按以下步骤调整:

  • 先确保Days_Tbl生成时将加权平均值存入命名列(而非仅变量),示例:
Days_Tbl = 
ADDCOLUMNS(
    // 替换为你原有的Purchase与Sale关联分组逻辑
    SUMMARIZE(
        fTrans,
        fTrans[Ticker],
        fTrans[Date] // 对应临时表的Sale date字段
    ),
    "WghtdAvgDays", @WghtdAvgDays // 将变量值转为命名列
)
  • 在fTrans中创建计算列,使用规范的LOOKUPVALUE:
WghtdAvgDays_Sale = 
IF(
    fTrans[Transaction] = "Sale",
    LOOKUPVALUE(
        Days_Tbl[WghtdAvgDays],
        Days_Tbl[Ticker], fTrans[Ticker],
        Days_Tbl[Date], fTrans[Date] // 确保日期列匹配
    ),
    fTrans[Days]
)

2. 备选方案:CALCULATE + MAXX

若LOOKUPVALUE仍存在关联问题,可改用CALCULATE配合MAXX(因每个Ticker+Sale日期对应唯一平均值,MAXX会返回唯一匹配值):

WghtdAvgDays_Sale = 
IF(
    fTrans[Transaction] = "Sale",
    CALCULATE(
        MAXX(Days_Tbl, Days_Tbl[WghtdAvgDays]),
        FILTER(
            Days_Tbl,
            Days_Tbl[Ticker] = fTrans[Ticker] &&
            Days_Tbl[Sale date related to respective purchase] = fTrans[Date]
        )
    ),
    fTrans[Days]
)

3. 修正SUMMARIZECOLUMNS的聚合错误

若Days_Tbl用SUMMARIZECOLUMNS生成时聚合值错误,需确保分组维度与加权逻辑正确:

Days_Tbl = 
SUMMARIZECOLUMNS(
    fTrans[Ticker],
    fTrans[Date], // 分组维度:Ticker + Sale日期
    "WghtdAvgDays",
    // 加权平均计算:(Σ(Days*权重)) / (Σ权重),替换为你的权重字段(如数量、金额)
    DIVIDE(
        SUMX(RELATEDTABLE(fPurchase), fPurchase[Days] * fPurchase[Quantity]),
        SUMX(RELATEDTABLE(fPurchase), fPurchase[Quantity])
    )
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 17:23:29