PowerBI - 滚动每月 OTD 计算列

PowerBI - Rolling Monthly OTD Calculated Column

我是 PowerBI 的新手,我正在尝试计算滚动 "Monthly On-Time Delivery" 计算列。

错误图片

添加每日装运计数(忽略不正确的 MTD 装运计数标题)

每一行代表矩阵中的一天

对于我想要获得 MonthShippedTotal / (MonthShippedTotal-MonthPastDue) 的每一天,这应该会给我滚动的准时交货百分比。

这是我到目前为止的结果,但结果还差得很远:

> MonthlyOTD =  VAR RowDate = opr_shipments[SHIP_DATE] RETURN
>     CALCULATE (
>         DIVIDE((COUNT(opr_shipments[CREATE_TIMESTAMP])-COUNTAX(opr_shipments,opr_shipments[PAST_DUE]="1")),COUNT(opr_shipments[CREATE_TIMESTAMP]),0),
>         FILTER (
>             opr_shipments,
>             opr_shipments[SHIP_DATE] <= RowDate
>                 && MONTH ( opr_shipments[SHIP_DATE] ) = MONTH ( RowDate ) && YEAR ( opr_shipments[SHIP_DATE] ) = YEAR ( RowDate )
>         )
>     )

MTD 出货量计算:

MTD Shipments = 
VAR RowDate = opr_shipments[SHIP_DATE]
RETURN
    CALCULATE (
        SUM ( opr_shipments[Daily Shipments] ),
        FILTER (
            opr_shipments,
            opr_shipments[SHIP_DATE] <= RowDate
                && MONTH ( opr_shipments[SHIP_DATE] ) = MONTH ( RowDate ) && YEAR ( opr_shipments[SHIP_DATE] ) = YEAR ( RowDate )
        )
    )

逾期总计:

PastDueTotal = 
VAR RowDate = opr_shipments[SHIP_DATE]
RETURN
    CALCULATE (
        SUM(opr_shipments[Daily Shipments]),
        FILTER (
            opr_shipments,
            opr_shipments[SHIP_DATE] <= RowDate
                && DAY ( opr_shipments[SHIP_DATE] ) = DAY ( RowDate ) && opr_shipments[PAST_DUE] = "1"
        )
    )

每个月都会重新开始计算。

My desired output is: Jan 1 | 98% Jan 2 | 98.3% Jan 3 | 95% ... Jan 31 | 94.5% Feb 1 | 100%

我认为类似的方法可以用于 MonthlyOTD 计算列。

MonthlyOTD =
VAR RowDate = opr_shipments[SHIP_DATE]
RETURN
    SUMX (
        FILTER (
            opr_shipments,
            [SHIP_DATE] <= RowDate
                && MONTH ( [SHIP_DATE] ) = MONTH ( RowDate )
                && YEAR ( opr_shipments[SHIP_DATE] ) = YEAR ( RowDate )
        ),
        DIVIDE ( [MTD Shipments], [MTD Shipments] - [PastDueTotal] )
    )

我会将这些计算创建为度量而不是计算列,请注意度量可以在任何上下文中计算,并且会受到通常需要的过滤器的影响。

更新: OP 似乎不需要每月累计总数所以最后的表达式是:

MonthlyOTD = DIVIDE ( ([MTD Shipment Count] - [Lines]), [MTD Shipment Count] )