DAX Previous Month to date total 给出整个上个月的全部总数
DAX Previous Month to date total is giving entire previous month's entire total
我在 Power BI 中使用 DAX 来计算迄今为止上个月的销售总额,以创建 KPI 视觉对象。即,如果今天是 12 月 7 日,那么我想获得从 11 月 1 日到 11 月 7 日的销售总额,并与当月迄今为止进行比较。
CurrentMTD = TOTALMTD(SUM(SALES_VOUCHERS[SaleValue]),DatesTable[Date])
这很好用。
然而,上个月 YTD 给了我整个 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))))
两个 return 相同的答案,这是整个上个月的总和。
如果我只是将开始日期和结束日期硬编码到上面版本的日期之间,那么我确实会得到想要的结果。但这不是解决方案。
我已将事实 table (Sales_VOUCHERS) 链接到 DatesTable,截至目前,报告页面上没有其他视觉对象。
请协助我遗漏的内容以及如何获得上个月年初至今的总计
如果您在月份级别进行汇总(即您查看的是 2016 年 12 月与 2016 年 11 月的对比),那么您上面的衡量标准将显示整个 12 月与整个 11 月的对比(由于 12 月是部分月份而 11 月不是,这会导致您看到的不匹配)。
如果您过滤到当前日期(例如 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 日 - 即使您正在查看您报告中的完整月份)。
旁注:您还可以编写上个月的度量来重新使用您的 MTD 度量而不是重新定义它。这样,如果您更改了 MTD 计算,先前的 MTD 计算会自动更新。
PMYTD = CALCULATE(
[CurrentMTD],
DATEADD(
FILTER(
DatesTable[Date],
DatesTable[Date]<TODAY()
),
-1,
MONTH
)
)
有用的资源:
- https://www.powerpivotpro.com/2016/01/year-to-date-in-previousprior-year/(涵盖此问题和各种解决方案的文章)
- https://community.powerbi.com/t5/Desktop/Compare-MTD-with-previous-period/td-p/24656(关于同一问题的论坛讨论)
- http://community.powerbi.com/t5/Desktop/Time-Intelligence-TOTALMTD-vs-DATESMTD-vs-DATEADD/td-p/10088(关于 DATESMTD 与 TOTALMTD 的论坛讨论)
我在 Power BI 中使用 DAX 来计算迄今为止上个月的销售总额,以创建 KPI 视觉对象。即,如果今天是 12 月 7 日,那么我想获得从 11 月 1 日到 11 月 7 日的销售总额,并与当月迄今为止进行比较。
CurrentMTD = TOTALMTD(SUM(SALES_VOUCHERS[SaleValue]),DatesTable[Date])
这很好用。 然而,上个月 YTD 给了我整个 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))))
两个 return 相同的答案,这是整个上个月的总和。 如果我只是将开始日期和结束日期硬编码到上面版本的日期之间,那么我确实会得到想要的结果。但这不是解决方案。
我已将事实 table (Sales_VOUCHERS) 链接到 DatesTable,截至目前,报告页面上没有其他视觉对象。 请协助我遗漏的内容以及如何获得上个月年初至今的总计
如果您在月份级别进行汇总(即您查看的是 2016 年 12 月与 2016 年 11 月的对比),那么您上面的衡量标准将显示整个 12 月与整个 11 月的对比(由于 12 月是部分月份而 11 月不是,这会导致您看到的不匹配)。
如果您过滤到当前日期(例如 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 日 - 即使您正在查看您报告中的完整月份)。
旁注:您还可以编写上个月的度量来重新使用您的 MTD 度量而不是重新定义它。这样,如果您更改了 MTD 计算,先前的 MTD 计算会自动更新。
PMYTD = CALCULATE(
[CurrentMTD],
DATEADD(
FILTER(
DatesTable[Date],
DatesTable[Date]<TODAY()
),
-1,
MONTH
)
)
有用的资源:
- https://www.powerpivotpro.com/2016/01/year-to-date-in-previousprior-year/(涵盖此问题和各种解决方案的文章)
- https://community.powerbi.com/t5/Desktop/Compare-MTD-with-previous-period/td-p/24656(关于同一问题的论坛讨论)
- http://community.powerbi.com/t5/Desktop/Time-Intelligence-TOTALMTD-vs-DATESMTD-vs-DATEADD/td-p/10088(关于 DATESMTD 与 TOTALMTD 的论坛讨论)