首页 文章

Power BI(DAX)对于在日期过滤的空行显示0

提问于
浏览
0

我试图显示过去12个月中每个月的销售总额,但销售数据在几个月内缺失值 . 我希望这些显示为0

数据(链接到DimDate表)

SaleDate,Amount
20190101,25
20180201,30
20180301,12
20180501,10
20180502,5
20180701,60

enter image description here

dax非常简单

Failed Measure = 
VAR SelectedMonth = 201808
VAR SameMonthLastYear = SelectedMonth - 100
RETURN
    CALCULATE (
        Sum(sales[Amount]),
        DimDate[MonthInt] >= SameMonthLastYear,
        DimDate[MonthInt] <= SelectedMonth
    )

上面的SelectedMonth来自用户选择的过滤器,它只是为了发布而简化 .

所以dax确实有效,但结果表只显示销售表中数据存在的月份 .

if this is all I wanted I wouldn't need dax

如果我向 Sum(Sales[Amount]) 添加0,它会将所有空白月份显示为0并显示DimDate表中的所有月份 . 这是一种中途,但在那一点上,我需要过滤日期,只显示相关的12个月 .

close - but needs filtering

因此,上述内容仅显示2018年8月至2017年8月的数据

它似乎应该是容易的或常见的问题,但我没有找到解决方案的运气 .

1 回答

  • 1

    尝试:

    Hopefully Correct Measure =
    VAR SelectedMonth = 201808
    VAR SameMonthLastYear = SelectedMonth - 100
    RETURN
        SUMX ( VALUES ( 'Date'[MonthInt] ),
               IF ('Date'[MonthInt] >= SameMonthLastYear && 'Date'[MonthInt] <= SelectedMonth,
               SUM ( Sales[Amount] ) + 0 )
        )
    

    工作原理:“失败的度量”(零)的问题是DAX总是为所有MonthYearShort项计算它 . 过滤应用于计算输入,而不应用于枢轴行上的项目 . 如果计算结果为空,则默认情况下隐藏 . 如果对结果添加零,则它们不再是空白并将显示 .

    要解决此问题,您需要避免计算无关月份的金额 . 有几种方法可以做到;在我的方法中,我使用SUMX迭代MonthInt列表,测试它是否属于所需的时间段,如果是,则计算销售额,否则将其留空(默认情况下) .

相关问题