1

キューブに関する mdx レポートがあります。部門番号レポート パラメーターの使用可能な値として、自動生成されたデータセット (データセット 1、社内のすべての部門を含む) があり、クエリは次のようになります。

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)があります(手順によって提供されるデータ)。データセット 1 の使用可能な値をデータセット 2 の値でフィルター処理する必要があります。

- レポート クエリが MDX であり、データセット 2 が提供しないタプルを期待しているため、部門番号の使用可能な値としてデータセット 2 を使用することはできません。データセット 2 の値をタプルに連結しようとすると、Object() 型に「&」を使用できないというエラーが表示されます。

-レポートに非表示のパラメーターを作成すると、使用可能なデフォルト値はデータセット 2 のものであり、フィルター式をデータセット 1 クエリに適用すると、"DivisionID in @hidden_​​parameter" と表示されます - Division パラメーターに使用できる値が取得されません ( Iテーブルをチェックすると、すべてのデータがそこにあります)

このフィルター式を機能させるにはどうすればよいですか...誰か助けてください:)

@mmarie 2 番目のデータセットは、ストアド プロシージャによって作成されます。

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 を使用しましたが、それでも通常のテキストです:(

4

2 に答える 2

0

結果セットが大きくない場合、これを行う簡単な方法は、MDX ではなくデータセットにフィルターを使用することです。

Expression=Trueと Value が次のようなブール フィルタを追加します。

=iif(instr(join(Parameters!DataSet2Parameter.Value,","),
Fields!ToDimDateHierarchy.Value)=0,True, False)
于 2013-09-10T15:56:52.457 に答える