首页 文章

上个月DAX的Power BI滚动总数

提问于
浏览
0

我在POWER BI工作并尝试计算上个月滚动总数的DAX表达式 . 我有一个过滤器,我选择一个月,我想计算上个月的滚动总数 .

以下计算完美地计算所选日期范围的滚动总计 .

如何计算前几个月的滚动总数?

Rolling_Total_Current_Month = CALCULATE(
        SUM(SalesInvoice[Sales])
        ,FILTER(ALLSELECTED(SalesInvoice), (SalesInvoice[Date]) <= MAX(SalesInvoice[Date])))

以下是我的数据示例,我每天都有多个类别的销售额(事实上我有更多的详细信息列,但这已经简化了)

Date    Day Amount  Category
1/1/2016    1   100 A
1/1/2016    1   120 B
1/1/2016    1   90  C
1/2/2016    2   500 A
1/2/2016    2   321 B
1/2/2016    2   143 C

到目前为止,我已经提出了一个方程来解决滚动总数,但是当我尝试切片并查看单个类别的滚动总数时,它在上个月不起作用 . 我只保留了上个月的原始滚动总数 .

以下是上个月滚动总数的等式 . 但是,一旦根据类别切片,不会重新计算上个月的滚动总数 .

PREVIOUS_MONTH_ROLLING_TOTAL = 
CALCULATE(
    [Current Sales]
    ,FILTER(
        ALL( Orders )
        ,Orders[MonthNumber] = MAX( Orders[MonthNumber] ) - 1
            && Orders[Day] <= MAX( Orders[Day] )
    )
)

3 回答

  • 0

    我已经解决了如何让前几个月滚动总数 . 你必须做三件事 . 首先在数据表中创建一个Month Number列(这用作一个整数,从中减去1个月) . 您还必须创建一个日期列 .

    然后为当前销售或您的任何 Value 创建一个度量 .

    为当月销售创建度量

    Current Sales = SUM(Orders[Amount])
    

    那么这个等式 .

    PREVIOUS_MONTH_ROLLING_TOTAL = 
    CALCULATE(
        [Current Sales]
        ,FILTER(
            ALL( Orders )
            ,Orders[MonthNumber] = MAX( Orders[MonthNumber] ) - 1
                && Orders[Day] <= MAX( Orders[Day] )
        )
    )
    

    这个等式的想法是能够在X轴上显示前几个月滚动总数,X轴为“DAY”(所以1-31)然后你可以查看当前月份,上个月,去年同期所有相同的图表或表格 .

  • 0

    首先,我在名为Orders-的表中有这样的数据 -

    Date            Amount
    12/12/2017      100
    12/12/2017      200
    12/12/2017      300
    1/1/2018        400
    1/1/2018        500
    

    我首先使用以下公式创建一个名为Year&Month的计算列: -

    Year = YEAR(Orders[Date])
    Month = FORMAT(Orders[Date],"mmmm")
    

    然后我创建一个名为Month Number的列,当表中涉及一年以上以及识别上个月时,这将有助于排序 .

    MonthNumber = DATEDIFF(Min(Orders[Date]),Orders[Date],MONTH)
    

    当月销售额可以是度量值或计算列 . 在问题中,您通过计算列获得了当月销售的答案,如果您想要采取措施,那么这样的事情将适用于汇总表 .

    Current Month Sales = SUm(Orders[Amount])
    

    我还会创建一个名为Key的列: -

    Key = Orders[MonthNumber] & Orders[Category]
    

    现在,对于上个月销售,我将创建一个度量来查找我们创建的选定MonthNumber .

    Previous Month Sales = 
             Var SelectedCategory = SELECTEDVALUE(Orders[Category])                                                                                                                                                           
             Var SelectedMonthNumberr = SELECTEDVALUE(Orders[MonthNumber]) - 1                                                                                                                                                
             Var ReqKey = SelectedMonthNumberr & SelectedCategory  
    
       Return 
             IF(ISBLANK(SelectedCategory) <> True(), 
             CALCULATE(SUM(Orders[Amount]),FILTER(ALL(Orders), Orders[Key] = ReqKey)),
             CALCULATE(SUM(Orders[Amount]),FILTER(ALL(Orders), Orders[MonthNumber] = SelectedMonthNumberr)))
    

    或者你的措施

    PREVIOUS_MONTH_ROLLING_TOTAL = 
    CALCULATE(
        [Current Sales]
        ,FILTER(
            ALL( Orders )
            ,Orders[MonthNumber] = MAX( Orders[MonthNumber] ) - 1
                && Orders[Day] <= MAX( Orders[Day] )
        )
    )
    

    您可以添加另一个过滤项目 && Orders[Category] = SELECTEDVALUE(Orders[Category]) 但赢得't work when you don' t已选择任何类别,或者在没有类别的表格或视觉效果上添加.445094_ . 所以,你需要在我的测量公式中引用if else逻辑 .

    Summary Tables

    如果这有帮助,请告诉我 .

  • 0

    尝试这些方面的东西:

    Rolling_Total_Previous_Month =
        VAR CurrentMonth = MAX(SalesInvoice[Date])
        VAR PreviousMonth = EOMONTH(CurrentMonth,-1)
        RETURN CALCULATE(SUM(SalesInvoice[Sales]), SalesInvoice[Date] <= PreviousMonth)
    

相关问题