0

"New Calculated Member"在 Visio Studio 2010 多维数据集项目中创建了一个计算度量

表达式如下:

[Measures].[Extended Price],
PARALLELPERIOD([Dim Calendar].[RetailCalendar].[Retail Year], 1,[Dim Calendar].[RetailCalendar].currentmember)

这使用 Dim Calendar 层次结构 RetailCalendar:

Retail Year,
Retail Quarter,
Retail Month,
Retail Week,
Retail Day

在 Excel 2010 数据透视表中使用此度量 Sales LY 时,只要仅选择日期层次结构的一个成员,它就可以工作。

eg. Retail Year 2016 only
eg. Retail Week 2016 24 only.

如何编写此计算以允许选择多个日期?

在寻找解决方案后,我得到了:

aggregate
(
    Generate(
        existing [Dim Calendar].[RetailCalendar].[PK Date].members,
        (PARALLELPERIOD(
            [Dim Calendar].[RetailCalendar].[Retail Year], 1,[Dim Calendar].[RetailCalendar].currentmember
            )
        )
    ,[Measures].[Extended Price])
)

这导致null

4

1 回答 1

1

我知道这篇文章现在已经很老了,希望你现在已经找到了答案!我遇到了完全相同的问题,我想我会发布我的解决方案来帮助其他人搜索。

第一步 - 您需要在多维数据集的 MDX 脚本中为 Date 维度创建一个动态集。IE

CREATE 
 DYNAMIC SET CURRENTCUBE.[Dates Selected] AS          
           EXISTING [Date].[Calendar].[Calendar Date]; 

第二步 - 获取动态集的 Head(first) 和 Tail(last)。这两个函数将结果生成为元组,因此我们需要使用 .Item(0) 来提取成员部分,即

HEAD([Dates Selected],1).Item(0)
TAIL([Dates Selected],1).Item(0)

这些可以与 Range 一起使用,并与 PARALLELPERIOD 和 SUM 结合使用以获得结果,即

CREATE 
 MEMBER CURRENTCUBE.[Measures].[Extend Price Prev Period] AS          
           SUM (
                    {
                        PARALLELPERIOD([Date].[Calendar].[Calendar Year],1,HEAD([Dates Selected],1).Item(0))
                        :
                        PARALLELPERIOD([Date].[Calendar].[Calendar Year],1,TAIL([Dates Selected],1).Item(0))
                       }
                ,[Measures].[Extend Price]);

我希望这有帮助!

于 2017-01-18T16:27:11.990 回答