Ssas 为SSRS图表报告构建MDX查询

Ssas 为SSRS图表报告构建MDX查询,ssas,mdx,Ssas,Mdx,我正在创建一个用于SSRS折线图报告的数据集,该数据集与使用MDX的Analysis Services多维数据集相反。我们在VisualStudio2008中使用SQLServer2008R2和BIDS。作为MDX的一个不经常使用的用户,我正在努力解决如何提取所需的数据 目标是: 创建包含4条线的SSRS折线图: 1.本年度管理人数(如2016年) 2.过去一年的管理人数(2015年) 3.过去两年的管理人数(2014年) 4.本年度预测估计数(2016年) 问题是: 我已经创建了一个查询,它可

我正在创建一个用于SSRS折线图报告的数据集,该数据集与使用MDX的Analysis Services多维数据集相反。我们在VisualStudio2008中使用SQLServer2008R2和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、数据类型名称和演示名称是本图中硬编码的报告参数。源ID和Daypart名称是硬编码的常量值

结果有正确的数据,但有两行

我需要做的是把预测估计数放在同一条线上,这样图表就可以看到所有4个数据点。像这样

如果我简单地取下源id和源名称,查询就会将多维数据集中的所有8个数据源都提取出来,并且数字相差很远。我可以将我的计算成员限制为与多维数据集中的scope语句类似的某个源id吗?然后我可以为Forecast Estimates创建第四个calculate成员


谢谢你的帮助

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

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]
  )
)
如果希望将度量限制为层次结构中的特定成员,则可以在其他度量中使用上述内容

另一种更漂亮的方法是将元组
放在列上

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
...

很好用!非常感谢。我很抱歉发布这样一个基本的问题,但我每6个月左右使用一次MDX。再次感谢!特别注意:Whytheq的答案是正确的,但SSRS中只有一种变体有效。两者都在SSMS中工作,但SSRS不喜欢SELECT语句中对维度层次结构的引用。SSRS给出的错误是:“无法准备查询:查询必须至少有一个轴。查询的第一个轴不应具有多个层次结构,也不应引用除度量维度以外的任何维度。”因此,必须在成员语句中限制范围时使用第一个变量。再次感谢,whytheq@BradD好的-我没有像我想的那样多地使用SSR,但我记得它喜欢mdx数据以特定的格式展平-这就是你的错误。在SSR中,列上总是有度量值,行上总是有维度。