我正在创建要在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是硬编码的常量值。
结果具有正确的数据,但分为两行......
我需要做的是将预测估算的数字放在同一行,这样图表就可以看到所有4个数据点。像这样......
如果我只是取出源ID和源名称,那么查询将引入多维数据集中的所有8个数据源,并且数字很远。我可以将计算成员限制为与多维数据集中的范围语句类似的某个源ID吗?然后我可以为预测估算创建第四个计算成员。
感谢您的帮助!
答案 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
...