Второй MDX-запрос должен возвращать результат для каждой строки, возвращенной 1-м MDX-запросом. - PullRequest
0 голосов
/ 12 сентября 2011

У меня есть ситуация, когда я ищу руководство по MDX.

Среда: SQL Server 2008 R2, SSRS 2008 R2

Размер: Столбцы DimMainProvider: ProviderName DimAcademicYear: AcademicYear DimSectorSubjectArea: Estyn DimLearningAim: LearningAimReference

Факт: Столбцы Усвоение: MainProviderKey, AgeBandKey, LearningAimKey, SuccessFlag

То, что я хочу, это 1) Для конкретного MainProvider получите Топ-10 LearningAims по коэффициенту успеха и покажите его в таблице. 2) Для каждой строки таблицы также показан график графика Box, который, по существу, требует минимальных, максимальных, Quartile1, Quartile3 показателей успеха этой конкретной LearningAim для всех основных поставщиков

У меня есть 2 запроса MDX

а) тот, который получает 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 и хочу как-то объединить эти два.

1 Ответ

0 голосов
/ 14 сентября 2011

Вот как я это исправил с помощью Deepak Puri на форумах MSDN

С помощью [Top10LearningAims] в качестве TOPCOUNT (

Filter (([ReportedLearningAims] * [DimMainProvider]. [ProviderName] .MEMBERS), [DimMainProvider]. [ProviderName] .CURRENTMEMBER IS STRTOMEMBER ("[DimMainProvider]. [ProviderName]. & [44]")), 10, [Меры]. [TerminationAssessableLASum])

MEMBER [Меры]. [MaxValue] AS Макс. (NonEmpty ([DimMainProvider]. [ProviderName]. [ProviderName], [Меры]. [SuccessRate]), [Меры]. [SuccessRate]), FORMAT_STRING = "Процент"MEMBER [Показатели]. [MinValue] AS Min (NonEmpty ([DimMainProvider]. [ProviderName]. [ProviderName], [Показатели]. [SuccessRate]), [Измерения]. [SuccessRate]), FORMAT_STRING =" Percent "MEMBER[Меры]. [MedianValue] AS Медиана (NonEmpty ([DimMainProvider]. [ProviderName]. [ProviderName], [Меры]. [SuccessRate]), [Меры]. [SuccessRate]), FORMAT_STRING = "Percent"

MEMBER [Показатели]. [MeanValue] AS Avg (NonEmpty ([DimMainProvider]. [ProviderName]. [ProviderName], [Меры]. [SuccessRate]), [Меры]. [SuccessRate]), FORMAT_STRING = "Процент"

Элемент [Меры]. [ProviderCount] как Количество (NonEmpty ([DimMainProvider]. [ProviderName]. [ProviderName], [Показатели]. [SuccessRate])) Член [Показатели]. [PercentileInt25] как Int ((([Измерения]. [ProviderCount] - 1) * 25) / 100) Участник [Показатели].[PercentileFrac25] as (([Меры]. [ProviderCount] - 1) * 25) / 100 - [Меры]. [PercentileInt25] Элемент [Меры]. [PercentileLo25] as ([Меры]. [SuccessRate], Порядок (NonEmpty)([DimMainProvider]. [ProviderName]. [ProviderName], [Показатели]. [SuccessRate]), [Показатели]. [SuccessRate], BASC) .Item ([Измерения]. [PercentileInt25]). Item (0)),FORMAT_STRING = "Процент" Элемент [Меры]. [PercentileHi25] как ([Меры]. [SuccessRate], Порядок (NonEmpty ([DimMainProvider]. [ProviderName]. [ProviderName], [Меры]. [SuccessRate]), [Меры]. [SuccessRate], BASC) .Item ([Показатели]. [PercentileInt25] + 1) .Item (0)), FORMAT_STRING = "Percent" Элемент [Показатели]. [Percentile25Value]as ([Меры]. [PercentileLo25] * (1 - [Меры]. [PercentileFrac25])) + ([Меры]. [PercentileHi25] * [Меры]. [PercentileFrac25]), FORMAT_STRING = "Percent" Элемент [Меры]. [PercentileInt75] как Int ((([Меры]. [ProviderCount] - 1) * 75) / 100) Член [Меры]. [PercentileFrac75] как (([Меры]. [ProviderCount] - 1) * 75) /100 - [Меры]. [PercentileInt75] Член [Меры]. [PercentileLo75] as ([Меры]. [SuccessRate], Порядок (NonEmpty ([DimMainProvider]. [ProviderName]. [ProviderName], [Меры]. [SuccessRate])), [Меры]. [SuccessRate], BASC) .Item ([Меры]. [PercentileInt75]). Item (0)), FORMAT_STRING = "Процент" Член [Меры]. [PercentileHi75] как ([Меры]. [SuccessRate], Order (NonEmpty ([DimMainProvider]. [ProviderName]. [ProviderName], [Measures]. [SuccessRate]), [Measures]. [SuccessRate], BASC) .Item ([Меры]. [PercentileInt75] + 1) .Item (0)), FORMAT_STRING = "Процент" Элемент [Меры]. [Percentile75Value] as ([Меры]. [PercentileLo75] * (1 - [Меры]. [PercentileFrac75])))+ ([Меры]. [PercentileHi75] * [Меры]. [PercentileFrac75]), FORMAT_STRING = "Процент"

выберите {[Меры]. [TerminationAssessableLASum], [Меры]. [SuccessfulLASum], [Меры]. [SuccessRate], [Меры]. [SectorTerolvedAssessableLASum], [Меры]. [SectorSuccessfulLASum], [Меры]. [SectorSuccessRate], [Меры]. [ProviderCount], [Меры]. [Мин. Значение]
, [Меры]. [MaxValue], [Меры]. [MeanValue]
, [Меры]. [Percentile25Value], [Меры]. [MedianValue]
, [Меры]. [Percentile75Value]} на столбцах, EXISTS (NonEmpty (([DimLearningAim]. [LearningAimReference]. [LearningAimReference], [DimLearningAim]. [LearningAimTitle]. [LearningAimTitle]), ([Top10LearningAims], [Меры]. [SuccessRate])) * NonEmpty ([DimMainProvider]. [ProviderName]. [ProviderName],[Показатели]. [SuccessRate]) ,, "Learnings") DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS из FECube WHERE
(StrToSet ("[DimAcademicYear]. [AcademicYear]. [AcademicYear]. [AcademicYear]. [2009/10]ЗАПРЕЩЕНО), StrToSet («[DimLearnerAgeBand]. [AgeBand]. [All]», ЗАПРЕЩЕНО), StrToSet («[DimLearningCourseLength]. [CourseLength]. [All]« CONSTRAINED), StrToSetitythintitythitythity ([]]. [All] ", CONSTRAINED), StrToSet (" [DimLearnerGender]. [Gender]. [All] ", CONSTRAINED), StrToSet (" [DimDeprivationDecile]. [Дециль]. [All] ", CONSTRAINED), StrToSet ("[DimSectorSubjectArea]. [Estyn]. & [2]", CONSTRAINED), StrToSet ("[DimLearningActivityLevel]. [ActivityLevel]. [All]", CONSTRAINED), StrToSet ("[DimLearningActivityType]. [AllType]. Activity] ", ЗАДЕРЖАНО)) ЗНАЧЕНИЕ СВОЙСТВ СООТВЕТСТВУЕТ, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS

...