PowerBI中基于双日期计算对角线值并构建目标矩阵需求
解决方案:适配矩阵的对角线值DAX度量值
针对你的需求——在以Customer为行、CalcYear/CalcMonth为列的矩阵中展示指定对角线值,原度量值的问题在于上下文获取逻辑不符合矩阵的单元格上下文规则,以下是调整后的实现方案:
调整后的DAX度量值
VAR CurrentCustomer = SELECTEDVALUE(table[Customer]) -- 获取当前Customer对应的起始年月(不受列上下文影响) VAR CustomerStartYear = CALCULATE(SELECTEDVALUE(table[StartYear]), ALLEXCEPT(table, table[Customer])) VAR CustomerStartMonth = CALCULATE(SELECTEDVALUE(table[StartMonth]), ALLEXCEPT(table, table[Customer])) -- 获取当前列对应的计算年月 VAR CurrentCalcYear = SELECTEDVALUE(table[CalcYear]) VAR CurrentCalcMonth = SELECTEDVALUE(table[CalcMonth]) RETURN -- 仅当起始年月与计算年月匹配时返回求和值,否则返回空 IF( CustomerStartYear = CurrentCalcYear && CustomerStartMonth = CurrentCalcMonth, CALCULATE(SUM(table[FixedFee]), ALLEXCEPT(table, table[Customer], table[CalcYear], table[CalcMonth])), BLANK() )
关键修改说明
- 上下文隔离:使用
ALLEXCEPT(table, table[Customer])清除除Customer之外的所有上下文,确保能准确获取每个客户对应的StartYear/StartMonth,不受矩阵列的CalcYear/CalcMonth影响。 - 对角线匹配逻辑:通过判断客户起始年月与当前列的计算年月是否一致,仅在匹配的对角线位置返回数值,其余位置留空,完美贴合你需要的矩阵样式。
- 求和上下文控制:计算
FixedFee总和时,用ALLEXCEPT(table, table[Customer], table[CalcYear], table[CalcMonth])确保只聚合当前客户、当前计算年月对应的数值。
矩阵配置步骤
- 行区域:拖入
Customer字段 - 列区域:依次拖入
CalcYear和CalcMonth(按年份→月份的层级排列) - 值区域:拖入上述
FF_Diagonal度量值
内容的提问来源于stack exchange,提问作者Veli K
相关产品推荐
相关产品推荐

