【问题标题】:Second MDX Query has to return result for each row returned by 1st MDX Query第二个 MDX 查询必须为第一个 MDX 查询返回的每一行返回结果
【发布时间】:2011-09-12 17:22:53
【问题描述】:

我有一种情况,我正在寻找 MDX 指导。

环境:SQL Server 2008 R2,SSRS 2008 R2

维度:列 DimMainProvider :ProviderName DimA学年:学年 DimSectorSubjectArea:Estyn DimLearningAim:LearningAim参考

事实:列 Learning:MainProviderKey,AgeBandKey,LearningAimKey,SuccessFlag

我想要的是 1) 对于特定的 MainProvider,按成功率获取 Top 10 LearningAims 并在 tablix 中显示 2)对于 tablix 上的每一行,还显示箱线图,它基本上需要所有 Mainproviders 中特定 LearningAim 的 Min、Max、Quartile1、Quartile3 成功率

我有 2 个 MDX 查询

a) 获得主要提供者的前 10 项活动(简体) MDX 版本如下)

WITH
SET Top10LearningAimsForSuccessRate
AS 
NonEmpty(
        TOPCOUNT([ReportedLearningAims],10,[Measures].[SuccessRate]),
        [Measures].[SuccessRate]
        )
SELECT 
    {
      [Measures].[SuccessRate]
    } ON COLUMNS

 ,NON EMPTY 
    {  
        EXISTS( 
                Top10LearningAimsForSuccessRate
               ,,"Learnings")
     } ON ROWS
FROM 
(

SELECT {[Measures].[TerminatedAssessableLASum]
     ,[Measures].[SuccessfulLASum]} ON COLUMNS
     ,{(StrToSet("[DimMainProvider].[ProviderName].&[44]",CONSTRAINED))} On ROWS
FROM [FECube]
)
WHERE 
  ( StrToSet("[DimAcademicYear].[AcademicYear].[AcademicYear].[2009/10]",CONSTRAINED), 
    StrToSet("[DimSectorSubjectArea].[Estyn].&[2]",CONSTRAINED)
  )

b) 另一个接受 LearningAim 作为参数并执行的查询 统计计算并给我数值(简化版 MDX 下面)

WITH 
SET ProviderwideLearningAims
AS
ORDER(
        NonEmpty( [DimMainProvider].[ProviderName].[ProviderName],
                  [Measures].[SuccessRate]
                )
        ,[Measures].[SuccessRate],BASC        
    )

MEMBER [Measures].[MaxValue]
AS
Max(ProviderwideLearningAims,[SuccessRate]),FORMAT_STRING = "Percent"

MEMBER [Measures].[MinValue]
AS
Min(ProviderwideLearningAims,[SuccessRate]),FORMAT_STRING = "Percent"

MEMBER [Measures].[MedianValue]
AS
Median(ProviderwideLearningAims,[SuccessRate]),FORMAT_STRING = "Percent"


Member [Measures].[ProviderCount] As [ProviderwideLearningAims].Count   

MEMBER [Measures].[MeanValue]
AS 
(SUM(ProviderwideLearningAims,[SuccessRate])/[Measures].[ProviderCount]),FORMAT_STRING = "Percent"


MEMBER [Measures].[LearningAimUniqueName]
AS
[DimLearningAim].[LearningAimReference].CurrentMember.UniqueName                                  

Select
        {     [Measures].[LearningAimUniqueName]
             ,[Measures].[MinValue]     
             ,[Measures].[MaxValue]
             ,[Measures].[MedianValue]
             ,[Measures].[MeanValue]

        } ON COLUMNS,

       {
        NonEmpty([DimLearningAim].[LearningAimReference].[LearningAimReference],ProviderwideLearningAims)
       } ON ROWS
FROM
(
   SELECT 
   StrToSet("[DimLearningAim].[LearningAimReference].&[50024991]",CONSTRAINED) ON COLUMNS
   FROM [FECube]
   )
WHERE 
  ( StrToSet("[DimAcademicYear].[AcademicYear].[AcademicYear].[2009/10]",CONSTRAINED), 
    StrToSet("[DimSectorSubjectArea].[Estyn].&[2]",CONSTRAINED)

  )

我最初的想法是为收到的每个学习目标触发第二个查询 从第一个查询开始,但我无法在 SSRS 数据集中实现这一点 模型。 所以现在我回到了 MDX 级别并希望以某种方式合并这些 两个。

【问题讨论】:

    标签: ssas mdx


    【解决方案1】:

    这是我在 MSDN 论坛上的 Deepak Puri 的帮助下修复它的方法

    将 [Top10LearningAims] 设置为 TOPCOUNT(

    过滤器(([ReportedLearningAims]*[DimMainProvider].[ProviderName].MEMBERS),[DimMainProvider].[ProviderName].CURRENTMEMBER 是 STRTOMEMBER("[DimMainProvider].[ProviderName].&[44]") ) ,10,[措施].[TerminatedAssessableLASum] )

    MEMBER [Measures].[MaxValue] AS Max(NonEmpty([DimMainProvider].[ProviderName].[ProviderName], [措施].[SuccessRate]), [措施].[SuccessRate]),FORMAT_STRING = “百分比”成员 [度量].[MinValue] AS Min(NonEmpty([DimMainProvider].[ProviderName].[ProviderName], [措施].[SuccessRate]), [措施].[SuccessRate]),FORMAT_STRING = “百分比”成员 [度量].[MedianValue] AS 中位数(非空([DimMainProvider].[ProviderName].[ProviderName], [措施].[SuccessRate]), [措施].[SuccessRate]), FORMAT_STRING = “百分比”

    成员 [度量].[平均值] AS Avg(NonEmpty([DimMainProvider].[ProviderName].[ProviderName], [措施].[SuccessRate]), [措施].[SuccessRate]), FORMAT_STRING = “百分比”

    成员 [Measures].[ProviderCount] 为 Count(NonEmpty([DimMainProvider].[ProviderName].[ProviderName], [Measures].[SuccessRate])) 成员 [Measures].[PercentileInt25] 为 Int((([Measures].[ProviderCount] - 1) * 25) / 100) 成员 [Measures].[PercentileFrac25] as (([Measures].[ProviderCount] - 1) * 25) / 100 - [Measures].[PercentileInt25] 成员 [Measures].[PercentileLo25] 为 ([措施]。[成功率], Order(NonEmpty([DimMainProvider].[ProviderName].[ProviderName], [措施].[成功率]),[措施].[成功率], BASC).Item([Measures].[PercentileInt25]).Item(0)), FORMAT_STRING = “百分比”成员 [Measures].[PercentileHi25] 为 ([措施]。[成功率], Order(NonEmpty([DimMainProvider].[ProviderName].[ProviderName], [措施].[成功率]),[措施].[成功率], BASC).Item([Measures].[PercentileInt25] + 1).Item(0)), FORMAT_STRING = “百分比”成员 [Measures].[Percentile25Value] 为 ([测量].[PercentileLo25] * (1 - [测量].[PercentileFrac25])) + ([Measures].[PercentileHi25] * [Measures].[PercentileFrac25]), FORMAT_STRING = "Percent" 成员 [Measures].[PercentileInt75] 为 Int((([Measures].[ProviderCount] - 1) * 75) / 100) 成员 [Measures].[PercentileFrac75] as (([Measures].[ProviderCount] - 1) * 75) / 100 - [Measures].[PercentileInt75] 成员 [Measures].[PercentileLo75] 为 ([措施]。[成功率], Order(NonEmpty([DimMainProvider].[ProviderName].[ProviderName], [措施].[成功率]),[措施].[成功率], BASC).Item([Measures].[PercentileInt75]).Item(0)), FORMAT_STRING = “百分比”成员 [Measures].[PercentileHi75] 为 ([措施]。[成功率], Order(NonEmpty([DimMainProvider].[ProviderName].[ProviderName], [措施].[成功率]),[措施].[成功率], BASC).Item([Measures].[PercentileInt75] + 1).Item(0)), FORMAT_STRING = “百分比”成员 [Measures].[Percentile75Value] 为 ([测量].[PercentileLo75] * (1 - [测量].[PercentileFrac75])) + ([Measures].[PercentileHi75] * [Measures].[PercentileFrac75]), FORMAT_STRING = "百分比"

    选择 { [措施].[TerminatedAssessableLASum] ,[措施].[SuccessfulLASum] ,[措施].[成功率] ,[措施].[SectorTerminatedAssessableLASum] ,[措施].[SectorSuccessfulLASum] ,[措施].[部门成功率] ,[Measures].[ProviderCount] ,[Measures].[MinValue]
    ,[Measures].[MaxValue] ,[Measures].[MeanValue]
    ,[Measures].[Percentile25Value] ,[Measures].[MedianValue]
    ,[Measures].[Percentile75Value]} 在列上, EXISTS(NonEmpty(([DimLearningAim].[LearningAimReference].[LearningAimReference],[DimLearningAim].[LearningAimTitle].[LearningAimTitle]),([Top10LearningAims],[Measures].[SuccessRate]))*NonEmpty([DimMainProvider] .[提供者名称].[提供者名称], [Measures].[SuccessRate]),,"Learnings") DIMENSION PROPERTIES MEMBER_CAPTION,MEMBER_UNIQUE_NAME ON ROWS 来自 FECube WHERE
    ( StrToSet("[DimAcademicYear].[AcademicYear].[AcademicYear].[2009/10]",CONSTRAINED), StrToSet("[DimLearnerAgeBand].[AgeBand].[All]",CONSTRAINED), StrToSet("[DimLearningCourseLength].[CourseLength].[All]",CONSTRAINED), StrToSet("[DimLearnerEthnicity].[Ethnicity].[All]",CONSTRAINED), StrToSet("[DimLearnerGender].[Gender].[All]",CONSTRAINED), StrToSet("[DimDeprivationDecile].[Decile].[All]",CONSTRAINED), StrToSet("[DimSectorSubjectArea].[Estyn].&[2]",CONSTRAINED), StrToSet("[DimLearningActivityLevel].[ActivityLevel].[All]",CONSTRAINED), StrToSet("[DimLearningActivityType].[ActivityType].[All]",CONSTRAINED) ) 单元格属性值 ,BACK_COLOR ,FORE_COLOR ,FORMATTED_VALUE ,FORMAT_STRING ,FONT_NAME ,FONT_SIZE ,FONT_FLAGS

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-18
      • 2012-10-10
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 2015-03-16
      • 1970-01-01
      相关资源
      最近更新 更多