计算今年而不是前一年销售的产品的销售额

时间:2019-02-22 11:53:30

标签: powerbi dax

我想计算今年(2019年)有销售但去年(2018年)没有销售的产品的NetSales总和。

这就是我正在尝试的方法(以及与此类似的一百万个变体):

NetSales CY Not LY = 
VAR ThisYear= 2019
VAR YearBefore= 2018
VAR TabelaThisYear = SUMMARIZE(FILTER(SUMMARIZE('Facts';Facts[ArticleNo];Facts[InvoiceDate];Facts[NetSalesCurr]);YEAR('Facts'[InvoiceDate])=ThisYear && Facts[NetSalesCurr]>0);Facts[ArticleNo])
VAR TabelaYearBefore = SUMMARIZE(FILTER(SUMMARIZE('Facts';Facts[ArticleNo];Facts[InvoiceDate];Facts[NetSalesCurr]);YEAR('Facts'[InvoiceDate])=YearBefore && Facts[NetSalesCurr]>0);Facts[ArticleNo])
VAR ProdutosOnlyThisYear = EXCEPT(TabelaThisYear;TabelaYearBefore)
RETURN
CALCULATE(SUM(Facts[NetSalesCurr]);ProdutosOnlyThisYear)

2 个答案:

答案 0 :(得分:1)

在不对年份进行硬编码的情况下,我将使用以下方法:

NetSales CY Not LY=
CALCULATE(
    SUM(Facts[NetSalesCurr]),
    FILTER(
        VALUES(Facts[ArticleNo]),
        CALCULATE(
            COUNTROWS(Facts),
            PREVIOUSYEAR(Calendar[Date])
        ) = 0
    )
)

让我们分解一下:

  1. 内部FILTER函数遍历VALUES(Facts[ArticleNo]) -这是在当前选定时期内具有销售量的所有ArticleNo。
  2. 对于这些ArticleNo中的每一个,我们都计算上一年的事实表上的行数。 CALCULATE(COUNTROWS(Facts), PREVIOUSYEAR(Facts[InvoiceDate]))
  3. 我们仅保留编号为= 0的那些ArticleNo。
  4. 然后从FILTER的外部语句中使用从CALCULATE返回的ArticleNo列表,这样我们就只能获得上一年没有任何销售的商品的NetSales总和。 / li>

有关更多信息,请参见New and returning customers-pattern

答案 1 :(得分:0)

如果您有日历表,则可以使用下面的dax公式;

this year = CALCULATE ( SUM[measure];DATEADD(CALENDAR[DATE]),0,YEAR)
last year = CALCULATE ( SUM[measure];DATEADD(CALENDAR[DATE]),-1,YEAR)