基于另一表日期区间计算表B数值总和的DAX实现求助
DAX解决方案:多表区间求和问题
步骤1:为Table A添加「上一日期」计算列
在Table A中创建计算列,获取每条记录对应的上一个Date_A值:
Previous_Date_A = VAR CurrentDate = TableA[Date_A] RETURN MAXX( FILTER(TableA, TableA[Date_A] < CurrentDate), TableA[Date_A] )
步骤2:计算Number_B的区间总和
在Table A中创建第二个计算列,统计Table B中符合日期范围的Number_B总和:
Number_B_Sum = VAR CurrentDate = TableA[Date_A] VAR PreviousDate = TableA[Previous_Date_A] VAR LatestDateA = MAXX(TableA, TableA[Date_A]) RETURN SUMX( FILTER( TableB, TableB[Date_B] >= IF(ISBLANK(PreviousDate), DATE(1900,1,1), PreviousDate) && TableB[Date_B] <= CurrentDate && TableB[Date_B] <= LatestDateA ), TableB[Number_B] )
最终结果
完成后Table A将生成预期结果:
| Date_A | Number_A | Number_B_Sum |
|---|---|---|
| 1/12-2022 | 1 | 1 |
| 5/12-2022 | 1 | 3 |
核心逻辑说明
MAXX(FILTER(...))筛选当前日期之前的最大Date_A,确定区间起始点SUMX(FILTER(...))遍历Table B中符合「上一Date_A到当前Date_A」区间的记录,累加Number_B- 通过
TableB[Date_B] <= LatestDateA排除Table B中晚于Table A最新日期的记录
内容的提问来源于stack exchange,提问作者Glen Højer
相关产品推荐
相关产品推荐

