我花了很多时间试图找到解决这个问题的端到端解决方案。
我想在SSAS OLAP多维数据集中创建一个报表操作,该操作生成一个格式化值列表,以传递给接受多值参数列表的SSRS报表参数。这将适用于
单间牢房
SSAS行动中的级别。我找到了一个最能让我受益的解决方案:
How to Pass Multiple Values from an SSAS Report Drill Through Action to an SSRS Multi-Value Parameter
,但不完全如此。该操作确实出现在Excel中,并且有效
如果
我从位于或低于我为其生成列表的维度属性的单元格中运行操作,
帐户密钥
.
下面是一个屏幕截图的链接(由于缺乏信誉而无法嵌入),显示Excel中的操作和维度结构。只要我在
帐户密钥
级别或以下。我希望能够在更高级别运行它,例如
主要客户
并且仍然生成所有相关的
帐户密钥
SSRS报告参数的值。以更高的速度运行
主要客户
级别不会触发报表运行。
Excel操作屏幕截图:
http://i.stack.imgur.com/QCGSp.png
下面是我用来生成报表参数值的MDX:
UrlEscapeFragment(
GENERATE(
DESCENDANTS(
[Account].[Account Key].CurrentMember,
[Account].[Account Key].[Account Key]
),
[Account].[Account Key].CURRENTMEMBER.Name,
"&rp:Account="
)
)
我希望我能以某种方式修改上面的MDX,使其返回所有
帐户密钥
的任何属性
账户
从任何测量单元运行时的维度,而不仅仅是在自身和的子级运行时
帐户密钥
在透视表中。
此外,如果有帮助,我可以对多维数据集执行以下MDX查询,并获得所需的结果。
WITH MEMBER [Measures].[Account Key List] as
GENERATE(
DESCENDANTS([Account].[Account].CurrentMember, [Account].[Account].[Account]),
[Account].[Account].CURRENTMEMBER.NAME,
"&rp:Account=")
SELECT {[Measures].[Account Key List]} on 0,
([Account].[Account Company Number].[Account Company Number],[Account].[Account Major].[Account Major]
) on 1
FROM [Company 10 Action Demo]
以下是部分结果:
10.116&rp:Account=10.116.010
10.117&rp:Account=10.117.010&rp:Account=10.117.020
10.120&rp:Account=10.120.005&rp:Account=10.120.006&rp:Account=10.120.010&rp:Account=10.120.020&rp:Account=10.120.030&rp:Account=10.120.040&rp:Account=10.120.050&rp:Account=10.120.060&rp:Account=10.120.380&rp:Account=10.120.999
10.123
问题
-
你知道我需要做什么吗
帐户密钥
账户
维
-
我是否需要改变我的
账户
多维数据集中的维度以使其工作?
提前感谢。
编辑1-Adventure Works Cube版本
我无法使用“Exists”函数得到建议的答案。为了更好地演示这个问题,我使用AdventureWorksCube重新创建了它。
我将专注于
顾客
尺寸,特别是
顾客
和
教育
属性。我创建了一个名为
测试报告操作
。下面是在多维数据集中为其创建的XML。
<Action xsi:type="ReportAction" dwd:design-time-name="f35ad5ee-5167-4fb8-a0e0-0a74cc6e81c6">
<ID>Report Action 1</ID>
<Name>Test Report Action</Name>
<TargetType>Cells</TargetType>
<Target></Target>
<Type>Report</Type>
<ReportServer>SQLSERVER</ReportServer>
<Path>ReportServer?/Test Report</Path>
<ReportParameters>
<ReportParameter>
<Name>Test Customer Existing</Name>
<Value>UrlEscapeFragment(
GENERATE(
EXISTING DESCENDANTS(
[Customer].[Customer].CurrentMember,
[Customer].[Customer].[Customer]
),
[Customer].[Customer].CURRENTMEMBER.Name,
"&rp:Customer="
)
)</Value>
</ReportParameter>
</ReportParameters>
<ReportFormatParameters>
<ReportFormatParameter>
<Name>rs:Command</Name>
<Value>Render</Value>
</ReportFormatParameter>
<ReportFormatParameter>
<Name>rs:Renderer</Name>
<Value>HTML5</Value>
</ReportFormatParameter>
</ReportFormatParameters>
</Action>
以下是重新创建问题的步骤。
-
连接到Excel中的多维数据集
-
添加维度
客户->更多字段->
顾客
-
添加度量值
互联网销售->互联网销售金额
-
右键单击“Internet销售金额”单元格,选择“其他操作”
->“测试报告操作”,并查看为URL创建的客户值
此时使用运行操作时
顾客
,我看到在URL显示的消息框中创建的值(因为在指定的位置没有SSRS报表服务器)。
现在我无法解决的部分
-
删除
顾客
标注并添加
客户->人口统计->教育
-
右键单击“Internet销售金额”单元格,选择“其他操作”->“测试报告操作”
什么都没有发生。如果我在“单身汉”旁边的单元格上运行该操作,我会希望它在
顾客
维度作为报表参数的一部分。如果多维数据集中没有使用
顾客
维度,则我希望它返回“所有客户”,或类似于显示所有客户都包含在聚合中。
到目前为止,我还不太懂MDX。我想我需要加入
客户
到
互联网销售金额
在Generate函数部分中。我尝试了几种不同的组合
顾客
尺寸和
互联网销售金额
,以及各种功能,看看我是否可以让它在没有成功的情况下工作。我希望像我这样有知识的人能找到解决办法。如果您需要更多详细信息,请询问,我会提供。