【问题标题】:SSRS MDX dataset need dynamic field source, is there a workaround?SSRS MDX 数据集需要动态字段源,有解决方法吗?
【发布时间】:2015-01-19 11:28:14
【问题描述】:

我有以下有效的 MDX 查询。问题出在 TOPCOUNT 中,我在其中使用 case 语句来计算出我要计算的内容。

INVESTOR、ADVISER 和 ADVISERGROUP 实际上都是同一个维度,链接到事实表中的不同字段,即对于 Adviser,它将是 Entity.IDKey -> Fact.AdviserKey 或对于 Investor,它的 Entity.IDKey -> Fact.InvestorKey

所以问题是所有将返回相同的字段名称,[ID KEY] 但将有不同的位置,即数据集字段源定义需要不同。

在 SSRS 中,它仅适用于一种情况,即它在设计时运行的情况,而其他情况则返回错误。 有没有办法解决这个问题?

WITH MEMBER [Measures].[Previous Period] as
(   [Measures].[Fact TOL Activity Count] ,  
ParallelPeriod(
        IIF(@GroupBy = 'Y',   [Date].[Fiscal].[Fiscal Year],IIF(@GroupBy = 'Q' ,  [Date].[Fiscal].[Fiscal Quarter], [Date].[Fiscal].[Fiscal Month]))  
    , 1 
    ,[Date].[Fiscal].CurrentMember ))


MEMBER [Measures].[Current Period] as [Measures].[Fact TOL Activity Count] 

MEMBER [Measures].[CPeriod] as [Date].[Fiscal].CurrentMember.Name

MEMBER [Measures].[PPeriod] as 
ParallelPeriod(
      IIF( @GroupBy = 'Y',   [Date].[Fiscal].[Fiscal Year], IIF(  @GroupBy = 'Q' ,  [Date].[Fiscal].[Fiscal Quarter], [Date].[Fiscal].[Fiscal Month]))
    , 1 
    ,[Date].[Fiscal].CurrentMember ).Name

MEMBER [Measures].[Growth] as 

IIF (ISEMPTY([Measures].[Previous Period]), 0 , 
[Measures].[Fact TOL Activity Count]/ [Measures].[Previous Period] ), FORMAT = "Percent"


SELECT
{   
     [Measures].[Previous Period], [Measures].[Current Period],  [Measures].[Growth], [Measures].[PPeriod],[Measures].[CPeriod]

} ON COLUMNS,


(  TopCount(
    Except({

    CASE  [Dim User Type].[User Type Key].CurrentMember.NAME  
            WHEN "Adviser" THEN  [ADVISER].[ID Key].children 
            WHEN "Firm" THEN  [ADVISERGROUP].[ID Key].children
            WHEN "Investor" THEN [INVESTOR].[ID Key].children
            ELSE [INVESTMENTMANAGER].[ID Key].children 
    END

    } ,  

    CASE  [Dim User Type].[User Type Key].CurrentMember.NAME  
            WHEN "Adviser" THEN  [ADVISER].[ID Key].[Unknown]
            WHEN "Firm" THEN  [ADVISERGROUP].[ID Key].[Unknown]
            WHEN "Investor" THEN [INVESTOR].[ID Key].[Unknown]
            ELSE [INVESTMENTMANAGER].[ID Key].[Unknown]
    END
)

, 10
, (   [Measures].[Growth],  STRTOMEMBER(@CurrentPeriod, CONSTRAINED), [Dim EVENTTYPE].[IASEVENTTYPEKEY].&[ET00000040], STRTOMEMBER(@UserTypeKey, CONSTRAINED))
   )) on rows


FROM  [TOL Metrics Usage]

where  ( [Dim EVENTTYPE].[IASEVENTTYPEKEY].&[ET00000040],  STRTOMEMBER(@UserTypeKey, CONSTRAINED), STRTOMEMBER(@CurrentPeriod, CONSTRAINED) )

【问题讨论】:

    标签: dynamic reporting-services dataset field mdx


    【解决方案1】:

    您将@UserTypeKey 作为参数。因此,您可以根据此参数在报告中进行定位。

    当您想根据名称进行过滤并且不想仅为该名称创建另一个数据集时,您还可以添加另一个计算成员。

    MEMBER [Measures].[UserTypeKeyName] AS [Dim User Type].[User Type Key].CurrentMember.NAME
    

    【讨论】:

      猜你喜欢
      • 2011-06-07
      • 2014-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多