为SSRS图表报告

时间:2016-04-01 19:55:54

标签: ssas mdx

我正在创建要在SSRS折线图报告中使用的数据集,该报告针对使用MDX的Analysis Services多维数据集。我们在Visual Studio 2008中使用SQL Server 2008 R2和BIDS。作为MDX的不常用户,我正在努力解决如何提取所需数据的问题。

目标: 创建一个包含4行的SSRS折线图: 1.本年度管理权数字(例如2016年) 2.去年的管理权数字(2015年) 3.管理权数据(2014年)两年后 4.当前年度预测估计数字(2016)

问题: 我已经创建了一个查询来获取正确的数据,但是没有用于构建图表的单行。这是我的疑问:

with 
member [Measures].[ ImpValueCurrQtr] as 
IIF([Measures].[DIVIDE NUMBER]=0, null, [Measures].[SUMOF IMP VALUE]/[Measures].[DIVIDE NUMBER])

member 
Measures.TrendPastYear as ([Measures].[ImpValueCurrQtr],
ParallelPeriod([DimDate].[BCast Qtr Week Number].[BCast Qtr], 4, [DimDate].[BCast Qtr Week Number].CurrentMember))

member 
Measures.TrendPast2Years as ([Measures].[ImpValueCurrQtr],
ParallelPeriod([DimDate].[BCast Qtr Week Number].[BCast Qtr], 8, [DimDate].[BCast Qtr Week Number].CurrentMember))

SELECT 
NON EMPTY { 
[Measures].[ImpValueCurrQtr],
[Measures].[TrendPastYear],
[Measures].[TrendPast2Years]
} ON COLUMNS, 
NON EMPTY { (
[DimNetwork].[Network].[Network].ALLMEMBERS *
[DimDate].[BCast Qtr Week Number].[BCast Qtr Week Number].ALLMEMBERS *
[DimDemograph].[Demo Name].[Demo Name].ALLMEMBERS *
[DimDelImpDataType].[Data Type Name].[Data Type Name].ALLMEMBERS *
[DimDelImpsSource].[DEL IMPS SOURCE ID].[DEL IMPS SOURCE ID].ALLMEMBERS *
[DimDelImpsSource].[Del Imps Source].[Del Imps Source].ALLMEMBERS *
[DimExecDaypartConformed].[Network Daypart].[Daypart Name].ALLMEMBERS   
) } 
ON ROWS 
FROM ( SELECT ( { 
[DimExecDaypartConformed].[Network Daypart].[Daypart Name].&[YYY]&[TPC] } ) ON COLUMNS 
FROM ( SELECT ({[DimDelImpsSource].[ SOURCE ID].&[1],[DimDelImpsSource].[ SOURCE ID].&[10]}) ON COLUMNS 
FROM ( SELECT ([DimDemograph].[Demo Name].&[A25-54] ) ON COLUMNS
FROM ( SELECT ([DimDelImpDataType].[Data Type Name].&[C3] ) ON COLUMNS 
FROM ( SELECT ([DimDate].[BCast Qtr Week Number].[BCast Qtr].&[Q116] ) ON COLUMNS 
FROM ( SELECT ([DimNetwork].[Network].&[XXX] ) ON COLUMNS 
FROM [TRACCube]))))));

子选择中的网络,BCast Qtr,数据类型名称和演示名称是报告中为此插图硬编码的参数。 SOURCE ID和Daypart Names是硬编码的常量值。

结果具有正确的数据,但分为两行......

Before Results

我需要做的是将预测估算的数字放在同一行,这样图表就可以看到所有4个数据点。像这样......

After Results

如果我只是取出源ID和源名称,那么查询将引入多维数据集中的所有8个数据源,并且数字很远。我可以将计算成员限制为与多维数据集中的范围语句类似的某个源ID吗?然后我可以为预测估算创建第四个计算成员。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

如果我理解正确,将特定成员移动到措施中应该相对容易:

with 
member [Measures].[ ImpValueCurrQtr] as 
IIF(
 [Measures].[DIVIDE NUMBER]=0
, null
, DIVIDE(
     //>>tuple start>>
     (
        [Measures].[SUMOF IMP VALUE]
       ,[DimDelImpsSource].[Del Imps Source].[Del Imps Source].[Stewardship]
     )
     //>>tuple end>>
    ,[Measures].[DIVIDE NUMBER]
  )
)

如果您希望将度量限制为层次结构中的特定成员,则可以在其他度量中使用上述内容。

另一个更漂亮的选择就是放置元组ON COLUMNS

WITH
...
...
SELECT 
NON EMPTY { 
 (  [Measures].[ImpValueCurrQtr]
   ,[DimDelImpsSource].[Del Imps Source].[Del Imps Source].[Stewardship] )
,(  [Measures].[TrendPastYear]
   ,[DimDelImpsSource].[Del Imps Source].[Del Imps Source].[Stewardship] )
,(  [Measures].[TrendPast2Years]
   ,[DimDelImpsSource].[Del Imps Source].[Del Imps Source].[Stewardship] )
,(  [Measures].[ImpValueCurrQtr]
   ,[DimDelImpsSource].[Del Imps Source].[Del Imps Source].[Forecast] )
} ON COLUMNS, 
NON EMPTY { (
[DimNetwork].[Network].[Network].ALLMEMBERS *
[DimDate].[BCast Qtr Week Number].[BCast Qtr Week Number].ALLMEMBERS *
[DimDemograph].[Demo Name].[Demo Name].ALLMEMBERS *
[DimDelImpDataType].[Data Type Name].[Data Type Name].ALLMEMBERS *
[DimExecDaypartConformed].[Network Daypart].[Daypart Name].ALLMEMBERS   
) } 
ON ROWS 

FROM
...