我需要一个与此类似的解决方案:
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
其中:
请注意,每月收入不一定是连续的。
不知道如何在电力支点中重新创建这一点,任何建议都会得到很好的接受。
干杯
答案 0 :(得分:1)
假设
然后这些是您需要的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表中的日期字段,而不是事实表中的日期字段。