Sql server 基于一个多维数据集中的两个日期维度计算%rate

Sql server 基于一个多维数据集中的两个日期维度计算%rate,sql-server,reporting-services,ssas,mdx,Sql Server,Reporting Services,Ssas,Mdx,设置-SSAS 2012,带有OLAP多维数据集(由供应商构建)和MS Report Builder v3。无法访问投标 我正在构建一个报告,需要根据单个多维数据集的数据计算处置率。从历史上看,这将根据两个单独的数据表进行计算,按记录日期按月统计新项目,按处置月份按月统计处置项目。然后可以使用查找或类似方法将其转换为处置率 空白处置日期可以(处置项目可能需要几个月) 我想把它保存在一个查询中,这样我就可以引入额外的维度来分析数据并以多种方式轻松地表示它。我的怀疑是,我需要一位经过深思熟虑的成员,

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

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

空白处置日期可以(处置项目可能需要几个月)

我想把它保存在一个查询中,这样我就可以引入额外的维度来分析数据并以多种方式轻松地表示它。我的怀疑是,我需要一位经过深思熟虑的成员,但我不确定从哪里开始。任何帮助都会得到很大的回报——我正在尝试一些东西,如果我自己解决了,我会更新这些东西

简单的公式是

=(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] 
您可以使用将对一个层次结构(如
[报告日期].[日历月]
)的引用移动到另一个层次结构(如
[处置日期].[日历月]
),前提是两个层次结构具有完全相同的结构。因此,只有在查询中使用
[报告日期]
,计算才能使用
[处置日期]
。查询如下所示:

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]
具有成员度量值。[在报告日期中处置]作为
(措施。[项目数量],
LinkMember([报告日期][日历月])。CurrentMember[处置日期][日历月],
[报告日期][日历月][全部]
)
成员措施。[处置率]如下所示
IIf([Measures].[No of Items]0,
措施。[在报告日期处置]/[措施][项目数量],
无效的
),格式_字符串='0%'
选择{[Measures].[No of Items],Measures.[Disposed in Date Reported],Measures.[Disposition Rate]}
在专栏上,
[报告日期].[日历月].[月].所有成员
成排
来自[项目]

您可能希望调整报告中的列标题。我忽略了这一点,使用的成员名称描述了他们所做的事情,而不是应该向用户显示的内容。

当没有记录该日期的记录时,7月份的计数怎么可能是45?不是应该是0,91吗?示例数据中的数字与预期的输出不匹配。很抱歉,我截断了数据,那里应该有一行7月份的数据-但我希望您了解过程的要点谢谢-我将在下周的工作中查看这一点,看看我是否能做到我想要的。谢谢-这很有效,但我需要了解如何添加数据我将需要额外的维度来轻松地将其切分,并确保我完全理解如何在需要的地方进行复制,因为我需要大量类似性质的%度量。我现在还使用它来生成计算成员,以便在拖放查询构建过程中更容易地使用。这意味着我可以在环境模板报告中对其进行测试,然后再将其作为新的完整度量生成。