DAX / PowerPivot交叉连接types的查询传播到unsummarize / de-aggregate数据

所以,我对前面提到的问题有了一个扩展(参考DAX / PowerPivot查询函数来传播一段时间内的汇总值 ),我一直在用头撞墙。

我有相同的一般数据(MS项目输出的输出),其中包含任务,工期,任务等。任务已根据与哪个项目/应用程序相关的分类进行分类,并且能够做到这一点一段时间没有问题。 问题的关键在于传播自定义领域的价值观。

来自现有枢纽的示例输出:

当前输出表

我试图得到的是从“所有”的一切均匀分布在所有其他相关的应用程序 – 大约有20,有一个表,所以我会使用一个COUNTROWS()

使用上面的例子,我试图得到的是,使每个ALL的小时(和名称)出现在每个Related_Applications中。 例如,2015年第2月的信息保障和安全应以小时/国家(所有(相关应用程序))为准。 同样,如果您要使用系统pipe理员值,则需要传播并将其添加到现有的行值。 DAX的目标输出就像是一个CrossJoin,最终结果如下:

所需的输出表

我一直认为我很近,并添加了一个“SpreadValuesSheet”的虚拟表来使用ALLEXCEPT和ALL函数。 它包含应该传播的值(目前有3x … ALL,PM和CM)。 我有另一个“ApplicationsSheet”的表,有30X左右的应用程序的时间应该传播到。

数据模型@ current是这样设置的:

数据模型

我可以单独获得这些作品; 但似乎无法让工作返回AssignmentsSheet(所以我可以有时间传播,资源筛选等)…我pipe理与计算列和措施的定义如下:

AssignmentsSheet:

 MeasureSumScheduledWork:=sum([Scheduled_Work]) Hours Apportioned Raw:=DIVIDE ( CALCULATE ( [MeasureSumScheduledWork], FILTER ( AssignmentsSheet, AssignmentsSheet[Start_Date] <= MAX ( DateSheet[Date] ) && AssignmentsSheet[Finish_Date] >= MAX ( DateSheet[Date] ) ) ) , ( COUNTROWS(DATESBETWEEN ( DateSheet[Date], FIRSTDATE ( AssignmentsSheet[Start_Date] ), LASTDATE ( AssignmentsSheet[Finish_Date] )))) ) SpreadHoursMeasure:=SUMX ( VALUES ( DateSheet[Date] ), SUMX ( VALUES ( AssignmentsSheet[Index] ), [Hours Apportioned RAW] ) ) 

这是完美的。 试图分散其他人,我开始遇到问题。 目前我坚持采取以下措施:

 UFSpreadHoursMeasure:=CALCULATE( SUMX ( VALUES ( DateSheet[Date] ), SUMX( VALUES ( AssignmentsSheet[Index]), [Hours Apportioned Raw]) ), RELATEDTABLE(SpreadValuesSheet)) SpreadAllValuesMeasure:=[SpreadHoursMeasure]+CALCULATE([UFSpreadHoursMeasure],all(ApplicationsSheet)) 

SpreadValuesSheet:

 Calculated Column: SumHours =[SpreadHoursMeasure] MeasureSpreadHours:=sum([SumHours]) 

ApplicationsSheet

 Calculated Columns: SumHours=[SpreadHoursMeasure] SpreadHours=[MeasureSpreadHours]/COUNTROWS(ApplicationsSheet) TotalHours==[SumHours]+[SpreadHours] MeasureSpreadSumTotalHours:=sum([TotalHours])