Powerbi 正在运行日期和切片类别的总计-返回的日期不正确

Powerbi 正在运行日期和切片类别的总计-返回的日期不正确,powerbi,dax,powerbi-desktop,Powerbi,Dax,Powerbi Desktop,我需要按日期和类别显示运行总数。我应该只看到存在类别值的日期。该类别可以由报表用户使用切片器进行筛选。我的桌子是: 我的数据模型是: 我想写一个度量来计算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

我需要按日期和类别显示运行总数。我应该只看到存在类别值的日期。该类别可以由报表用户使用切片器进行筛选。我的桌子是:

我的数据模型是:

我想写一个度量来计算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值的日期?

假设您正在寻找一个运行的总YTD-如果我正确理解了您的数据模型,类似的方法应该可以工作

ActualQty = TOTALYTD ( SUM ( 'Actual'[Qty] ), 'DatesTable'[Date] )
编辑:为了与最近对您的问题所做的编辑相对应,如果您只想返回事实数据表中存在的日期的值,您可以将度量值包装在if中,如下所示:

ActualQty =
IF (
    SUM ( 'Actual'[Qty] ) + SUM ( 'Forecast'[Qty] ) = BLANK(),
    BLANK(),
    TOTALYTD ( SUM ( 'Actual'[Qty] ), 'DatesTable'[Date] )
)
这将检查日期是否具有Acual或Forecast的值,并且仅当至少存在一个值时才返回一个值

编辑Naz: 只是对其进行了进一步改进,以在19年1月1日获得实际数量的0:

实际数量3=

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
    )
)

你是在寻找一个运行的总YTD吗?是的,但格式如上所述,因此它在没有数据的日期上填写“空白”,这不符合我的需要,因为它包括日期表中的每个日期,但我只需要从Forecast表或Actual表中获得具有相应数量值的日期。在这种情况下,我建议使用视觉过滤器排除不需要的值。如果您确实希望在度量本身中应用修复,那么可以添加一个If条件,使实际和预测之和为空的日期返回空。这有意义吗?不过我不需要,请看我上面的例子。如果由于该日期没有数据而出现空白,则运行总计将返回有值日期的最后一个运行总计。为了进一步澄清,我希望返回实际表和预测表中包含的所有日期的运行总计,没有空格。第一条评论中预测表或实际表中具有相应数量值的日期与第二条评论中实际表和预测表中包含的日期相矛盾。恐怕你把我弄丢了!