MDX SSRS参数类别选择所有子类别

时间:2016-09-07 13:55:10

标签: reporting-services ssas mdx ssrs-2012

我一直在寻找堆栈溢出,我无法弄明白。所以我有一个使用SSAS多维数据集的数据集,它有两个参数。它有一个类别和子类别。

我已经创建了数据集来填充这些参数,当我选择它们时它们工作正常。

我的报表运行方式是它是表中子报表的集合,它按类别和子类别分组。因此,当我选择类别参数时,它会列出所有子报告的每个子类别。

我要做的是获得该类别中所有子类别的总数。我尝试使用默认值为ALL但不起作用。我尝试在表格中对小组进行总计,但这不起作用 因此,对于G1组和子组SG1和SG2),以及子报告SR1,SR2,它就像这样

G1

-TOTAL(SG1 + SG2 + SG3)
--- SR1
--- SR2

-SG1
--- SR1
--- SR2


-SG2
--- SR1
--- SR2

通过将子报告中的category参数设置为传入类别的参数,子类别参数作为子组的值,我能够拉出子组报告部件。但我需要这个完整的。

我的类别的MDX是

SELECT { } ON COLUMNS, { ([Service].[Category].[Category].ALLMEMBERS ) } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS FROM [Sales-Cube] CELL PROPERTIES VALUE

子类别的MDX是

 SELECT { } ON COLUMNS, { ([Service].[Category].[Category].ALLMEMBERS * [Service].[SubCategory].[Subcategory].ALLMEMBERS ) } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS FROM [Sales-Cube] CELL PROPERTIES VALUE

我使用参数的数据集的MDX是使用设计器创建的,如下所示

SELECT NON EMPTY { [Measures].[Sales Count] } ON COLUMNS, 
NON EMPTY { ([Date].[Fiscal Year].[Fiscal Year].ALLMEMBERS ) } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS 
FROM ( SELECT ( Filter( [Service].[SubCategory].[SubCategory].ALLMEMBERS, Instr( [Service].[SubCategory].currentmember.Properties( 'Member_Caption' ), @ParamSubCategory )  > 0  ) ) ON COLUMNS 
FROM ( SELECT ( Filter( [Service].[Category].[Category].ALLMEMBERS, Instr( [Service].[Category].currentmember.Properties( 'Member_Caption' ), @ParamCategory )  > 0  ) ) ON COLUMNS 
FROM [Sales-Cube])) CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS

因此,根据从类别中选择的内容,它会将子类别仅过滤到类别中的子类别,以便级联。 任何资源或帮助都会很棒。

1 个答案:

答案 0 :(得分:2)

正如我在评论中所说,您不能使用您的成员的名称在MDX中切割您的多维数据集,您必须使用unique name。您必须处理它,以便当您的用户为Category X参数选择Category YParamCategory时,应将其设置为[Service].[Category].&[Category X][Service].[Category].&[Category Y]。这就是我要做的。

我使用MDX脚本返回标签(名称)和唯一名称以填充类别。

WITH MEMBER [Measures].[Category Label] AS
  [Service].[Category].CurrentMember.Name
MEMBER [Measures].[Category UniqueName] AS
  [Service].[Category].CurrentMember.UniqueName
SELECT
{ [Measures].[Category Label], [Measures].[Category UniqueName] } ON COLUMNS,
{} ON ROWS
FROM [Sales-Cube]

在参数属性/可用值中,您必须使用Category Label的{​​{1}}字段和Label field的{​​{1}}字段。

填充Category UniqueName的同一个评论。

Value field

注意我使用ParamSubcategory仅使用相关的子类别填充WITH MEMBER [Measures].[SubCategory Label] AS [Service].[SubCategory].CurrentMember.Name MEMBER [Measures].[SubCategory UniqueName] AS [Service].[SubCategory].CurrentMember.UniqueName SELECT { [Measures].[SubCategory Label], [Measures].[SubCategory UniqueName] } ON COLUMNS, { [Service].[SubCategory].[SubCategory] } ON ROWS FROM [Sales-Cube] WHERE ( StrToSet ( @ParamCategory ) )

现在您可以在MDX脚本中使用这些参数:

ParamCategory

注意ParamSubcategorySELECT NON EMPTY { [Measures].[Sales Count] } ON COLUMNS, NON EMPTY { ( [Date].[Fiscal Year].[Fiscal Year].AllMembers ) } Dimension Properties MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS FROM ( SELECT ( STRTOSET( @ParamSubcategory ) ) ON COLUMNS FROM ( SELECT ( STRTOSET ( @ParamCategory ) ) ON COLUMNS FROM [Sales-Cube] ) ) CELL Properties Value, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS 函数不是requerid,因为您传递了唯一的名称成员。

它没有经过测试但应该有效,祝你好运!

如果有帮助,请告诉我。