DAX 预测截止日期违规
DAX forecasting deadline breach
我需要你的帮助来解决我面临的有关 DAX 的问题:
我们有一个 table 显示何时会生成新一批案例以及预计有多少案例:
idx batch_date new_cases
1 5/1/2020 1504
2 5/3/2020 2005
3 5/13/2020 921
4 5/26/2020 770
我们还知道,平均每天将处理和关闭 95 个案例,并且假设在前一个完成之前不会处理新的批次;我们还有计算显示批次何时达到 10 和 15 的老化。
idx batch_date new_cases production days batch_start batch end day_10 day_15
1 5/1/2020 1504 95 16 5/1/2020 5/17/2020 5/11/2020 5/16/2020
2 5/3/2020 2005 95 22 5/18/2020 6/9/2020 5/13/2020 5/18/2020
3 5/13/2020 921 95 10 6/10/2020 6/20/2020 5/23/2020 5/28/2020
4 5/26/2020 770 95 9 6/21/2020 6/30/2020 6/5/2020 6/10/2020
在常规 Excel 中,我会使用这些公式:
days: =ROUNDUP([@[new_cases]]/[@production]],0)
batch_start: =if(*batch_end previous row* >=[@[batch_date]], *batch_end previous row*+1,[@[batch_date]])
batch_end: =[@[batch_start]]+[@[days]]
day_10: = [@[batch_date]]+10
day_15: = [@[batch_date]]+15
第一个问题:
当我尝试为 batch_start,
编写 DAX 计算列时
batch_start:= IF(LOOKUPVALUE(
forecast[batch_end], forecast[idx], forecast[idx] -1) >= forecast[batch_date],
forecast[batch_end], forecast[idx], forecast[idx] -1) +1,
forecast[batch_date])
我显然遇到了循环依赖错误。知道如何解决吗?
另一个问题是,这个练习的最终目标是计算我们每天在每个老化桶(<=10、11-15、>15)中有多少个案例。即,在 5 月 2 日,我有 1409 个来自 5/1 批次的未结案例(1504 - 95 个已经处理),全部在 <=10 个桶中;在 5 月 28 日,我在 <=10 桶中有 770 个,在 11-15 桶中有 921 个,在 >15 桶中有 1055 个等等。知道如何编写一个可以显示这一点的度量吗?我在 DropBox 上放了一个 xlsx 文件,我在其中手动计算了预期结果 (https://www.dropbox.com/s/pgfgdtcxqilxfnm/forecast.xlsx?dl=0)。
我在 DAX 中需要这个的原因是整个项目的前面步骤都是使用 PowerQuery、PowerPivot 和 DAX 完成的,这将是该项目的最后一个难题。
batch: expected outcome:
5/1 5/3 5/13 5/26 all open cases <=10 11-15 >15
2020-05-01 1504 1504 1504 0 0
2020-05-02 1409 1409 1409 0 0
2020-05-03 1314 2005 3319 3319 0 0
2020-05-04 1219 2005 3224 3224 0 0
2020-05-05 1124 2005 3129 3129 0 0
2020-05-06 1029 2005 3034 3034 0 0
2020-05-07 934 2005 2939 2939 0 0
2020-05-08 839 2005 2844 2844 0 0
2020-05-09 744 2005 2749 2749 0 0
2020-05-10 649 2005 2654 2654 0 0
2020-05-11 554 2005 2559 2559 0 0
2020-05-12 459 2005 2464 2005 459 0
2020-05-13 364 2005 921 3290 2926 364 0
2020-05-14 269 2005 921 3195 921 2274 0
2020-05-15 174 2005 921 3100 921 2179 0
2020-05-16 79 2005 921 3005 921 2084 0
2020-05-17 0 2005 921 2926 921 2005 0
2020-05-18 2005 921 2926 921 2005 0
2020-05-19 1910 921 2831 921 0 1910
2020-05-20 1815 921 2736 921 0 1815
2020-05-21 1720 921 2641 921 0 1720
2020-05-22 1625 921 2546 921 0 1625
2020-05-23 1530 921 2451 921 0 1530
2020-05-24 1435 921 2356 0 921 1435
2020-05-25 1340 921 2261 0 921 1340
2020-05-26 1245 921 770 2936 770 921 1245
2020-05-27 1150 921 770 2841 770 921 1150
2020-05-28 1055 921 770 2746 770 921 1055
2020-05-29 960 921 770 2651 770 0 1881
2020-05-30 865 921 770 2556 770 0 1786
2020-05-31 770 921 770 2461 770 0 1691
2020-06-01 675 921 770 2366 770 0 1596
2020-06-02 580 921 770 2271 770 0 1501
2020-06-03 485 921 770 2176 770 0 1406
2020-06-04 390 921 770 2081 770 0 1311
2020-06-05 295 921 770 1986 770 0 1216
2020-06-06 200 921 770 1891 0 770 1121
2020-06-07 105 921 770 1796 0 770 1026
2020-06-08 10 921 770 1701 0 770 931
2020-06-09 0 921 770 1691 0 770 921
2020-06-10 921 770 1691 0 770 921
2020-06-11 826 770 1596 0 0 1596
2020-06-12 731 770 1501 0 0 1501
2020-06-13 636 770 1406 0 0 1406
2020-06-14 541 770 1311 0 0 1311
2020-06-15 446 770 1216 0 0 1216
2020-06-16 351 770 1121 0 0 1121
2020-06-17 256 770 1026 0 0 1026
2020-06-18 161 770 931 0 0 931
2020-06-19 66 770 836 0 0 836
2020-06-20 0 770 770 0 0 770
2020-06-21 770 770 0 0 770
2020-06-22 675 675 0 0 675
2020-06-23 580 580 0 0 580
2020-06-24 485 485 0 0 485
2020-06-25 390 390 0 0 390
2020-06-26 295 295 0 0 295
2020-06-27 200 200 0 0 200
2020-06-28 105 105 0 0 105
2020-06-29 10 10 0 0 10
2020-06-30 0 0 0 0 0
2020-07-01 0 0 0 0 0
再次感谢您的帮助。
此致,米哈尔
假设您的生产没有差距,您可以计算 batch_start
,方法是取第一个 batch_generation_date
并向前滚动累计生产天数。
batch_start =
VAR FirstBatchDate = MIN ( forecast[batch_generation_date] )
VAR CurrBatchDate = forecast[batch_generation_date]
VAR CumulativeDays =
SUMX (
FILTER ( forecast, forecast[batch_generation_date] < CurrBatchDate ),
forecast[days] + 1
)
RETURN
FirstBatchDate + CumulativeDays
我需要你的帮助来解决我面临的有关 DAX 的问题:
我们有一个 table 显示何时会生成新一批案例以及预计有多少案例:
idx batch_date new_cases
1 5/1/2020 1504
2 5/3/2020 2005
3 5/13/2020 921
4 5/26/2020 770
我们还知道,平均每天将处理和关闭 95 个案例,并且假设在前一个完成之前不会处理新的批次;我们还有计算显示批次何时达到 10 和 15 的老化。
idx batch_date new_cases production days batch_start batch end day_10 day_15
1 5/1/2020 1504 95 16 5/1/2020 5/17/2020 5/11/2020 5/16/2020
2 5/3/2020 2005 95 22 5/18/2020 6/9/2020 5/13/2020 5/18/2020
3 5/13/2020 921 95 10 6/10/2020 6/20/2020 5/23/2020 5/28/2020
4 5/26/2020 770 95 9 6/21/2020 6/30/2020 6/5/2020 6/10/2020
在常规 Excel 中,我会使用这些公式:
days: =ROUNDUP([@[new_cases]]/[@production]],0)
batch_start: =if(*batch_end previous row* >=[@[batch_date]], *batch_end previous row*+1,[@[batch_date]])
batch_end: =[@[batch_start]]+[@[days]]
day_10: = [@[batch_date]]+10
day_15: = [@[batch_date]]+15
第一个问题: 当我尝试为 batch_start,
编写 DAX 计算列时batch_start:= IF(LOOKUPVALUE(
forecast[batch_end], forecast[idx], forecast[idx] -1) >= forecast[batch_date],
forecast[batch_end], forecast[idx], forecast[idx] -1) +1,
forecast[batch_date])
我显然遇到了循环依赖错误。知道如何解决吗?
另一个问题是,这个练习的最终目标是计算我们每天在每个老化桶(<=10、11-15、>15)中有多少个案例。即,在 5 月 2 日,我有 1409 个来自 5/1 批次的未结案例(1504 - 95 个已经处理),全部在 <=10 个桶中;在 5 月 28 日,我在 <=10 桶中有 770 个,在 11-15 桶中有 921 个,在 >15 桶中有 1055 个等等。知道如何编写一个可以显示这一点的度量吗?我在 DropBox 上放了一个 xlsx 文件,我在其中手动计算了预期结果 (https://www.dropbox.com/s/pgfgdtcxqilxfnm/forecast.xlsx?dl=0)。 我在 DAX 中需要这个的原因是整个项目的前面步骤都是使用 PowerQuery、PowerPivot 和 DAX 完成的,这将是该项目的最后一个难题。
batch: expected outcome:
5/1 5/3 5/13 5/26 all open cases <=10 11-15 >15
2020-05-01 1504 1504 1504 0 0
2020-05-02 1409 1409 1409 0 0
2020-05-03 1314 2005 3319 3319 0 0
2020-05-04 1219 2005 3224 3224 0 0
2020-05-05 1124 2005 3129 3129 0 0
2020-05-06 1029 2005 3034 3034 0 0
2020-05-07 934 2005 2939 2939 0 0
2020-05-08 839 2005 2844 2844 0 0
2020-05-09 744 2005 2749 2749 0 0
2020-05-10 649 2005 2654 2654 0 0
2020-05-11 554 2005 2559 2559 0 0
2020-05-12 459 2005 2464 2005 459 0
2020-05-13 364 2005 921 3290 2926 364 0
2020-05-14 269 2005 921 3195 921 2274 0
2020-05-15 174 2005 921 3100 921 2179 0
2020-05-16 79 2005 921 3005 921 2084 0
2020-05-17 0 2005 921 2926 921 2005 0
2020-05-18 2005 921 2926 921 2005 0
2020-05-19 1910 921 2831 921 0 1910
2020-05-20 1815 921 2736 921 0 1815
2020-05-21 1720 921 2641 921 0 1720
2020-05-22 1625 921 2546 921 0 1625
2020-05-23 1530 921 2451 921 0 1530
2020-05-24 1435 921 2356 0 921 1435
2020-05-25 1340 921 2261 0 921 1340
2020-05-26 1245 921 770 2936 770 921 1245
2020-05-27 1150 921 770 2841 770 921 1150
2020-05-28 1055 921 770 2746 770 921 1055
2020-05-29 960 921 770 2651 770 0 1881
2020-05-30 865 921 770 2556 770 0 1786
2020-05-31 770 921 770 2461 770 0 1691
2020-06-01 675 921 770 2366 770 0 1596
2020-06-02 580 921 770 2271 770 0 1501
2020-06-03 485 921 770 2176 770 0 1406
2020-06-04 390 921 770 2081 770 0 1311
2020-06-05 295 921 770 1986 770 0 1216
2020-06-06 200 921 770 1891 0 770 1121
2020-06-07 105 921 770 1796 0 770 1026
2020-06-08 10 921 770 1701 0 770 931
2020-06-09 0 921 770 1691 0 770 921
2020-06-10 921 770 1691 0 770 921
2020-06-11 826 770 1596 0 0 1596
2020-06-12 731 770 1501 0 0 1501
2020-06-13 636 770 1406 0 0 1406
2020-06-14 541 770 1311 0 0 1311
2020-06-15 446 770 1216 0 0 1216
2020-06-16 351 770 1121 0 0 1121
2020-06-17 256 770 1026 0 0 1026
2020-06-18 161 770 931 0 0 931
2020-06-19 66 770 836 0 0 836
2020-06-20 0 770 770 0 0 770
2020-06-21 770 770 0 0 770
2020-06-22 675 675 0 0 675
2020-06-23 580 580 0 0 580
2020-06-24 485 485 0 0 485
2020-06-25 390 390 0 0 390
2020-06-26 295 295 0 0 295
2020-06-27 200 200 0 0 200
2020-06-28 105 105 0 0 105
2020-06-29 10 10 0 0 10
2020-06-30 0 0 0 0 0
2020-07-01 0 0 0 0 0
再次感谢您的帮助。
此致,米哈尔
假设您的生产没有差距,您可以计算 batch_start
,方法是取第一个 batch_generation_date
并向前滚动累计生产天数。
batch_start =
VAR FirstBatchDate = MIN ( forecast[batch_generation_date] )
VAR CurrBatchDate = forecast[batch_generation_date]
VAR CumulativeDays =
SUMX (
FILTER ( forecast, forecast[batch_generation_date] < CurrBatchDate ),
forecast[days] + 1
)
RETURN
FirstBatchDate + CumulativeDays