【发布时间】:2013-09-13 21:40:45
【问题描述】:
我有一个多维数据集的 mdx 报告。作为部门编号报告参数的可用值,我有一个自动生成的数据集(dataset1,包含公司中的所有部门),其查询如下所示:
WITH MEMBER [Measures].[ParameterCaption] AS
[Dim Division].[Hierarchy].CURRENTMEMBER.MEMBER_CAPTION
MEMBER [Measures].[ParameterValue] AS
[Dim Division].[Hierarchy].CURRENTMEMBER.UNIQUENAME
MEMBER [Measures].[ParameterLevel] AS
[Dim Division].[Hierarchy].CURRENTMEMBER.LEVEL.ORDINAL
SELECT {[Measures].[ParameterCaption], [Measures].[ParameterValue], [Measures].[ParameterLevel]}
ON COLUMNS ,
[Dim Division].[Hierarchy].ALLMEMBERS
ON ROWS
FROM ( SELECT ( STRTOMEMBER(@FromDimDateHierarchy, CONSTRAINED) : STRTOMEMBER(@ToDimDateHierarchy, CONSTRAINED) )
ON COLUMNS
FROM [ArveCubeBiceps]
)
我有另一个数据集(dataset2),它仅包含那些登录用户应该能够查看的分区编号(由程序提供的数据)。我需要通过 dataset2 的值过滤 dataset1 的可用值。
-我不能只使用 dataset2 作为分区编号的可用值,因为报表查询是 MDX,并且需要元组,而 dataset2 不提供。当我尝试将 dataset2 值连接到元组中时,我收到一个错误,我不能将“&”用于 Object() 类型。
-当我在报表上创建一个隐藏参数时,可用的默认值是来自 dataset2 的参数,然后将过滤器表达式应用于 dataset1 查询,上面写着“@hidden_parameter 中的 DivisionID”-我没有得到 Division 的可用值参数(我检查了表格,所有数据都在那里)
我必须做些什么才能让这个过滤器表达式工作......请帮助任何人:)
@mmarie 第二个数据集由存储过程创建:
USE [Biceps]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[ArveDivisionsByUserID]
@ldapuid nvarchar(30)
AS
BEGIN
declare @hier as hierarchyid
declare @managerID as int
select @managerID = em.employeeID from Dim_Employee2 em where em.ldapuid = @ldapuid
select @hier = dv.hier from Dim_Division dv where dv.managerID = @managerID and hier is not null order by hier desc
select divisionID from Dim_Division dv where hier.IsDescendantOf(@hier)=1 order by hier
END
@FrankPI - 题外话 不知道为什么,我用了 ctrl+k 的代码,但它仍然是常规文本:(
【问题讨论】:
-
你能发布第二个数据集的内容吗?
-
@mmarie - 将您要求的代码添加到主帖
-
@ArturChmielewski 要格式化代码块,请不要将它们包含在反引号中,但至少缩进四个空格。在反引号中包含用于文本代码。
标签: reporting-services dataset report ssas mdx