我需要按日期和类别显示运行总计。我应该只看到存在类别值的日期。报表用户可以使用切片器过滤类别。我的表是:
我的数据模型是:
我想写一个度量来计算Forecast.Qty和Actual.Qty的运行总计,同时还要考虑Job.Job上的切片器
因此,如果我为工作1切片,那么我需要获得:
Date ActualQty1 ForecastQty1
01/01/19 0 25
15/02/19 2.5 25
26/02/19 2.5 33
12/03/19 13.5 33
但是我要从Dates表中获取所有日期,而不仅仅是基础表中具有Forecast.Qty或Actual.Qty值的日期
我的措施是:
ActualQty1 =
VAR a =
CALCULATE (
SUM ( 'Actual'[Qty] ),
FILTER ( ALL ( Dates ), 'Dates'[Date] <= MAX ( 'Dates'[Date] ) )
)
RETURN
IF ( ISBLANK ( a ), 0, a )
ForecastQty1 =
VAR a =
CALCULATE (
SUM ( 'Forecast'[Qty] ),
FILTER ( ALL ( Dates ), 'Dates'[Date] <= MAX ( 'Dates'[Date] ) )
)
RETURN
IF ( ISBLANK ( a ), 0, a )
示例PBIX在这里:
有什么方法可以只返回所选作业的Forecast.Qty或Actual.Qty值的那些日期?
非常感谢您的所有帮助
答案 0 :(得分:1)
假设您正在寻找本年度迄今的总运行时间-如果我正确地理解了您的数据模型,则应该可以使用这种方法。
ActualQty = TOTALYTD ( SUM ( 'Actual'[Qty] ), 'DatesTable'[Date] )
编辑:与最近对问题所做的编辑相对应,如果只想返回事实表中存在的日期的值,则可以将度量包装在IF()
中,如下所示:>
ActualQty =
IF (
SUM ( 'Actual'[Qty] ) + SUM ( 'Forecast'[Qty] ) = BLANK(),
BLANK(),
TOTALYTD ( SUM ( 'Actual'[Qty] ), 'DatesTable'[Date] )
)
这将检查日期是否具有“实际”或“预测”值,并且仅当存在至少一个值时才返回值。
编辑(Naz): 只需对其进行进一步细化,以在01/01/19上获得ActualQty为0:
ActualQty3 =
IF (
SUM ( 'Actual'[Qty] ) + SUM ( 'Forecast'[Qty] )
= BLANK (),
BLANK (),
IF (
TOTALYTD ( SUM ( 'Actual'[Qty] ), 'Dates'[Date] ) = BLANK (),
0,
TOTALYTD ( SUM ( 'Actual'[Qty] ), 'Dates'[Date] )
)
)
编辑(Naz): 刚意识到它正在使用TOTALYTD函数,我不需要,因为这不是我的要求。因此,请使用罗里(Rory)的逻辑进一步对此进行修改,以给我:
ActualQty =
var a=
CALCULATE (
SUM ( 'Actual'[Qty] ),
FILTER ( ALL(Dates),'Dates'[Date]<=MAX('Dates'[Date]))
)
RETURN
IF (
calculate(SUM ( 'Actual'[Qty] )) + calculate(SUM ( 'Forecast'[Qty] ))
= BLANK (),
BLANK (),
IF (
a = BLANK (),
0,
a
)
)