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] )
我是 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] )