2016-07-19 2 views
0

Для отображения набора результатов требуется 2 минуты. Есть ли способ оптимизировать запрос?MDX: оптимизация запросов

WITH MEMBER [Measures].[TestMeasure] AS 
    ( 
    [Measures].[EnrollPatientCnt] 
    + [Measures].[AssessmentPatientCnt] 
    + [Measures].[ProgramAssessmentPatientCnt] 
) 
MEMBER [Measures].[TotalCount] AS 
    Count( 
    NonEmpty(
    ( 
     { [DimAssessment].[AssessmentText].[AssessmentText] }, 
     { [DimAssessment].[QuestionText].[QuestionText] }, 
     { [DimAssessment].[AnswerText].[AnswerText] } 
    ) 
    ,{ 
     [Measures].[AssessmentPatientCnt] 
    , [Measures].[TestMeasure] 
    } 
)) 
SELECT 
    NON EMPTY [Measures].[TotalCount] ON COLUMNS 
FROM [NavigateCube] 
WHERE 
    (
    { 
     ( 
     { 
     [DimManagedPopulation].[ManagedPopulationName].&[1034]&[TC Tammy Brown Care Team] 
     } 
    ) 
    } 
); 

ответ

0

Как этот запрос выполняется?

WITH MEMBER [Measures].[TestMeasure] AS 
    IIf(
    Not(IsEmpty([Measures].[EnrollPatientCnt])) 
    or Not(IsEmpty([Measures].[AssessmentPatientCnt])) 
    or Not(IsEmpty([Measures].[ProgramAssessmentPatientCnt])) 
    ,1 
    ,Null 
) 
MEMBER [Measures].[TotalCount] AS 
    Sum (
    ({ [DimAssessment].[AssessmentText].[AssessmentText] }, 
    { [DimAssessment].[QuestionText].[QuestionText] }, 
    { [DimAssessment].[AnswerText].[AnswerText] }), 
    [Measures].[TestMeasure] 
) 
SELECT NON EMPTY [Measures].[TotalCount] ON COLUMNS 
FROM [NavigateCube] 
WHERE (
{ 
    ({ [DimManagedPopulation].[ManagedPopulationName].&[1034]&[TC Tammy Brown Care Team] }) 
}) 

Это не идентичны, но это такая же концепция, что Моша писал о here.

+0

Грег - 'mdx' тег был предложен для документации - вы можете добавить свой голос, пожалуйста, как нам нужны несколько голосов, чтобы создать документацию по этой метке: stackoverflow.com/documentation/mdx – SouravA

+0

@greg - неудивительно, поскольку MS, вероятно, раздражала его непрерывную последовательность обращений !, ссылка, которую вы включили, больше не работает – whytheq

+0

@whytheq спасибо за головы. Исправлена. Моша больше не в Microsoft. – GregGalloway

0

В принципе такой же подход, как Грег/Мош:

WITH 
MEMBER [Measures].[TestMeasure] AS 
    [Measures].[EnrollPatientCnt] 
    + [Measures].[AssessmentPatientCnt] 
    + [Measures].[ProgramAssessmentPatientCnt] 
MEMBER [Measures].[MeasureIsEmpty] AS 
    IIF(
     NOT ISEMPTY([Measures].[TestMeasure]) 
    OR NOT ISEMPTY([Measures].[AssessmentPatientCnt]) 
    ,1 
    ,NULL 
) 
MEMBER [Measures].[TotalCount] AS 
    SUM(
    [DimAssessment].[AssessmentText].[AssessmentText] 
    *[DimAssessment].[QuestionText].[QuestionText] 
    *[DimAssessment].[AnswerText].[AnswerText] 
    ,[Measures].[MeasureIsEmpty] 
) 
SELECT 
    NON EMPTY [Measures].[TotalCount] ON 0 
FROM [NavigateCube] 
WHERE [DimManagedPopulation].[ManagedPopulationName].&[1034]&[TC Tammy Brown Care Team]; 
+0

Привет @whytheq, приведенный выше запрос мне очень помогает. thank u – Deepthi

+0

рад, что это была какая-то помощь – whytheq

Смежные вопросы