根据一个多维数据集中的两个日期维度计算%率

时间:2014-07-31 14:01:00

标签: sql-server reporting-services ssas mdx

设置 - 带有OLAP多维数据集的SSAS 2012(由供应商构建)和MS Report Builder v3。无法访问BIDS。

我正在构建一份报告,需要根据单个多维数据集中的数据计算处置率。从历史上看,这可以从两个单独的数据表中计算出来,按月记录的新项目按月计算,按月处理的项目按月计算。然后可以使用查找或类似方法将其转换为处置率。

空白处置日期很好(处理物品可能需要数月)。

我想将此保留在一个查询中,以便我可以引入额外的维度来分析数据并轻松地以多种方式表示。我的怀疑是我需要一个计算成员,但我不知道从哪里开始这些。任何帮助都将受到极大的欢迎 - 我正在尝试一些事情,如果我自己解决,我会更新。

简单的公式将是

=(sumif(Items, DateReported="July 2014"))/(sumif(Items, Disposal Date="July 2014"))`

以下数据......

Month Recorded  Month Disposed  No of Items
May-14          May-14          25
May-14          Jun-14          3
May-14          Jul-14          45
Jun-14                          232
Jun-14          Jun-14          40
Jun-14          Jul-14          46

应该产生......

Month         No Recorded  No Disposed  Disposal Rate
01/05/2014    73           25           34%
01/06/2014    48           43           90%
01/07/2014    45           91           202%

我目前的MDX声明:

SELECT
NON EMPTY { [Measures].[No of Items] } ON COLUMNS,
NON EMPTY 
     { 
       ([Date Reported].[Calendar Months].[Month].ALLMEMBERS 
        * 
        [Disposal Date].[Calendar Months].[Month].ALLMEMBERS ) 
     } ON ROWS 
FROM [Items] 

1 个答案:

答案 0 :(得分:0)

如果两个层次结构具有完全相同的结构,您可以使用LinkMember将对一个层次结构(如[Date Reported].[Calendar Months])的引用移动到另一个层次结构(如[Disposal Date].[Calendar Months])。因此,仅在查询中使用[Date Reported],计算可以使用[Disposal Date]。查询将如下所示:

WITH MEMBER Measures.[Disposed in Date Reported] AS
            (Measures.[No of Items],
             LinkMember([Date Reported].[Calendar Months].CurrentMember, [Disposal Date].[Calendar Months]),
             [Date Reported].[Calendar Months].[All]
            )
     MEMBER Measures.[Disposal Rate] AS
            IIf([Measures].[No of Items] <> 0,
                Measures.[Disposed in Date Reported] / [Measures].[No of Items],
                NULL
               ), FORMAT_STRING = '0%'
SELECT { [Measures].[No of Items], Measures.[Disposed in Date Reported], Measures.[Disposal Rate] }
       ON COLUMNS,
       [Date Reported].[Calendar Months].[Month].ALLMEMBERS
       ON ROWS
FROM [Items]

您可能希望调整报告中的列标题。我把它排除在外,并使用的成员名称比他们应该向用户展示的内容更多。