DAX上个月至今的总数是给出整个上个月的整个总数

时间:2016-12-07 19:32:24

标签: powerbi dax

我在Power BI中使用DAX来计算迄今为止的上个月销售总额,以创建KPI视觉效果。即如果今天是12月7日,那么我想从11月1日到11月7日获得销售总额,并与当前月份进行比较。

CurrentMTD = TOTALMTD(SUM(SALES_VOUCHERS[SaleValue]),DatesTable[Date])

这很好用。 然而,上个月的年初至今给出了整个11月份的总和。到目前为止我已尝试过以下内容

PMYTD = totalmtd(sum(SALES_VOUCHERS[SaleValue]),dateadd(DATESMTD(DatesTable[Date]),-1,month))

PMYTD = CALCULATE(sum(SALES_VOUCHERS[SaleValue]),
    DATESBETWEEN(DatesTable[Date],                    
        FIRSTDATE(PREVIOUSMONTH(DatesTable[Date])),   
        LASTDATE(DATEADD(DatesTable[Date],-1,MONTH))))

两者都返回相同的答案,这是整个上个月的总和。 如果我只是在上述版本之间的日期中硬编码开始和结束日期,那么我确实得到了所需的结果。但这不是解决方案。

我已将事实表(Sales_VOUCHERS)与DatesTable相关联,截至目前,报告页面上没有其他视觉效果。 请帮助我错过的内容以及如何获得上个月的年度总数

1 个答案:

答案 0 :(得分:0)

如果您在月份级别进行汇总(即您查看2016年12月与2016年11月),那么您上面的衡量标准将显示12月整月与整月相比十一月(自十二月起是部分月份而十一月不是,它会导致您看到的不匹配)。

如果您过滤到当前日期(例如12月7日),那么您的MTD和上个月MTD指标都只会显示相应月份的第7天。

假设您不想过滤到日期级别(不合理),您可以增强公式以过滤掉未来日期。例如:

 PMYTD = totalmtd(
    sum(SALES_VOUCHERS[SaleValue]),
    dateadd(
        FILTER(
            DATESMTD(DatesTable[Date]),
            DatesTable[Date]<TODAY()
        ),
        -1,
        month
    )
)

这就是说,如果日期是在今天之后,请不要将其传递给TOTALMTD计算(因此它只计算一个月的前7天,例如,如果今天是12月8日 - 即使您和#39;重新审视报告的完整月份。

旁注:您还可以编写上个月的衡量指标,以重新使用您的MTD指标,而不是重新定义它。这样,如果您更改了MTD计算,则先前的MTD计算会自动更新。

PMYTD = CALCULATE(
    [CurrentMTD],
    DATEADD(
        FILTER(
            DatesTable[Date],
            DatesTable[Date]<TODAY()
        ),
        -1,
        MONTH
    )
)

有用的资源:

  1. https://www.powerpivotpro.com/2016/01/year-to-date-in-previousprior-year/(涵盖此问题的文章和各种解决方案)
  2. https://community.powerbi.com/t5/Desktop/Compare-MTD-with-previous-period/td-p/24656(关于同一问题的论坛讨论)
  3. http://community.powerbi.com/t5/Desktop/Time-Intelligence-TOTALMTD-vs-DATESMTD-vs-DATEADD/td-p/10088(关于DATESMTD与TOTALMTD的论坛讨论)