DAX / PP将可变项目边距汇总到列中

时间:2015-07-09 09:09:22

标签: powerpivot dax

我需要一个与此类似的解决方案:

DAX running total (or count) across 2 groups

但稍微复杂一点。

我有以下内容: (为布局道歉 - 我无法发布图片)

Name      Date       Monthly Rev  Total Rev   Margin( % Rev)
Proj 1    1/08/2014   0              7000     15%
Proj 1    1/09/2014   1000           7000     15%
Proj 1    1/10/2014   1000           7000     15%
Proj 1    1/11/2014   1000           7000     15%
Proj 1    1/12/2014   0              7000     15%
Proj 1    1/01/2015   0              7000     15%
Proj 1    1/02/2015   2000           7000     15%
Proj 1    1/03/2015   2000           7000     15%
Proj 2    1/11/2014   0              16000    10%
Proj 2    1/12/2014   1500          16000     10%
Proj 2    2/12/2014   1500           16000    10%
Proj 2    3/12/2014   1500          16000     10%
Proj 2    4/12/2014   1500           16000    10%
Proj 2    5/12/2014   2000           16000    10%
Proj 2    6/12/2014   2000            16000   10%
Proj 2    7/12/2014   0               16000   10%
Proj 2    8/12/2014   2000            16000   10%
Proj 2    9/12/2014   2000            16000   10%
Proj 2    10/12/2014  2000           16000    10%

月度转换是指一个月内收到的收入,总计是项目总价值,而保证金是收入的百分比。该表按日期链接到日期表。

我需要按日期显示保证金(表中还有其他描述性的列用于切片)但是保证金计算并不简单。

在excel表中,它看起来像这样:

Cumm simple margin  | Completion|   Cumm complex margin |   Margin earnt
0                        0%                 0                   0
150                      20%               30                   30
300                      40%               120                  90
450                     60%                 270                150
450                     60%                270                  0
450                      60%              270                   0
750                      80%              600                  330
1050                    100%               1050               450
0                        0%                  0                  0
150                      11%               17                   17
300                      22%               67                  50
450                     33%                150                   83
600                      44%               267                  117
800                      56%                444                 178
1000                    67%                 667                 222
1000                    67%                667                   0
1200                   78%                 933                  267
1400                    89%               1244                  311
1600                    100%              1600                  356

其中:

  1. 简单保证金按累计计算为每月修订版的百分比
  2. 项目完成百分比是根据获得收入的“活跃”月份计算的
  3. 累积简单保证金乘以%完成
  4. 特定月份的实际保证金是两个月之间的差额。
  5. 请注意,每月收入不一定是连续的。

    不知道如何在电力支点中重新创建这一点,任何建议都会得到很好的接受。

    干杯

1 个答案:

答案 0 :(得分:1)

假设

  1. 您的Project 2数据应该从2015年1月11日到2015年1月9日(而不是个别的12月日期)每月运行
  2. 您的数据位于名为' ProjectMargins'
  3. 的表格中
  4. 您的DateDim表名为'报告日期'
  5. 然后这些是您需要的DAX措施(尽管可能有更简单的方法来实现这些结果):

    [MonthlyRev]:=SUM(ProjectMargins[Monthly Rev])
    
    [ActiveMonth]:=CALCULATE(COUNTROWS('ProjectMargins'),FILTER('ProjectMargins',[MonthlyRev]>0))
    
    [AllActiveMonths]:=CALCULATE([ActiveMonth],ALL('Reporting Dates'[Date]))
    
    [Completion]:=DIVIDE(CALCULATE([ActiveMonth],FILTER(ALL('Reporting Dates'[Date]),'Reporting Dates'[Date] <= MAX(ProjectMargins[Date]))),[AllActiveMonths])
    

    如果您需要从每月修订版计算TotalRev,而不是它出现在原始源表中:     [TotalRev]:= IF(ISBLANK(MAX(ProjectMargins [Margin(%Rev)])),BLANK(),CALCULATE([MonthlyRev],ALL(&#39;报告日期&#39; [Date])))< / p>

    [Rev%]:=MAX(ProjectMargins[Margin( % Rev)])
    
    [Cumm Simple Margin]:=CALCULATE([MonthlyRev]*[Rev%],FILTER(ALL('Reporting Dates'[Date]),'Reporting Dates'[Date] <= MAX(ProjectMargins[Date])))
    
    [Cumm Complex Margin]:=[Completion]*[Cumm Simple Margin]
    
    [Previous Month Cumm Complex]:=CALCULATE([Cumm Complex Margin], DATEADD('Reporting Dates'[Date],-1,MONTH))
    
    [Margin Earnt]:=IF([Cumm Complex Margin]>0,[Cumm Complex Margin]-[Previous Month Cumm Complex],BLANK())
    

    注意:这假设保证金从不为负。

    确保在您的数据透视表中使用DateDim表中的日期字段,而不是事实表中的日期字段。

    enter image description here