求助:编写DAX度量值从非快照数据生成含多维度的每日快照数据
DAX度量值:带Product/Customer维度的日历日期最新值聚合
你的原度量值问题在于没有考虑Product和Customer的筛选上下文,直接取全局的最大事实日期,导致加入维度后无法正确计算每个组合的最新值。以下是适配多维度的解决方案:
LatestValue_WithDimensions = SUMX( // 遍历当前筛选范围内的所有Product-Customer唯一组合 SUMMARIZE(tblData, tblData[Product], tblData[Customer]), VAR CurrentProduct = tblData[Product] VAR CurrentCustomer = tblData[Customer] VAR MaxCalendarDate = MAX(tblCalendar[Date]) // 定位当前组合在日历日期之前的最新事实记录日期 VAR LatestFactDate = CALCULATE( MAX(tblData[Date]), tblData[Product] = CurrentProduct, tblData[Customer] = CurrentCustomer, tblData[Date] <= MaxCalendarDate ) // 获取该最新日期下当前组合的Value总和(支持同一日期多条记录) VAR LatestValue = CALCULATE( SUM(tblData[Value]), tblData[Product] = CurrentProduct, tblData[Customer] = CurrentCustomer, tblData[Date] = LatestFactDate ) RETURN LatestValue )
关键逻辑说明:
SUMX作为迭代函数,会逐个处理当前筛选上下文里的每一组Product-Customer,确保每个维度组合独立计算最新值后再汇总。- 对每个组合,先获取当前日历表的日期(即视觉对象中当前行的日期)。
- 通过
CALCULATE锁定当前Product-Customer,找到不晚于日历日期的最新事实记录日期。 - 最后提取该日期下对应组合的
Value总和,若同一日期同一组合只有单条记录,SUM可替换为MAX或SELECTEDVALUE,结果一致。
验证场景:
例如筛选日历日期为2024/6/1时,Prod 1-Cust A的最新事实日期是2024/5/11,对应值为3;若同时存在Prod 2-Cust B的最新值为5,度量值会返回3+5=8的聚合结果。
内容的提问来源于stack exchange,提问作者BG Steve
相关产品推荐
相关产品推荐

