2016-03-02 3 views
0

Я пытаюсь собрать первый запрос для диаграммы приборной панели CDE .MDX Сортировать по месяцам

Запуск запроса

WITH 
    SET [~COLUMNS] AS 
    {[DimProgram.Name].[Name].MEMBERS} 
    SET [~ROWS] AS 
    {[DimTime.CalendarYearMonth].[CalendarYearMonth].MEMBERS} 
SELECT 
    NON EMPTY 
    CrossJoin 
    (
     [~COLUMNS] 
    ,{[Measures].[SubmissionCount]} 
    ) ON COLUMNS 
,NON EMPTY 
    [~ROWS] ON ROWS 
FROM [PSE_FactSubmission]; 

enter image description here

Этот запрос возвращает данные, которые я хочу, но должен быть изменен немного, чтобы быть готовым к фактическому использованию. Я хочу сортировать по дате по убыванию и ограничить только последние 12 месяцев.

Я прочитал несколько веб-страниц по сортировке в MDX, но не смог собрать запрос, который будет запущен. Когда запрос не запускает только приглашение «Ошибка».

заказа Покушение

WITH 
    SET [~COLUMNS] AS 
    {[DimProgram.Name].[Name].MEMBERS} 
SELECT 
    NON EMPTY 
    CrossJoin 
    (
     [~COLUMNS] 
    ,{[Measures].[SubmissionCount]} 
    ) ON COLUMNS 
,NON EMPTY 
    Order 
    (
     [DimTime.CalendarYearMonth].[CalendarYearMonth].MEMBERS 
    ,[DimTime.CalendarYearMonth].CurrentMember.Member_Key 
    ,DESC 
    ) ON ROWS 
FROM [PSE_FactSubmission]; 

Любые советы по сортировке или как ограничить последние X месяцев будет очень высокую оценку.

ответ

0

Обычно размер даты/времени заказывается естественным образом в дизайне куба, поэтому нет необходимости использовать Order. Мне не нужно использовать кубы, которые я использую.

Если в странном порядке в кубе, то вам нужно разбить (B) этот иерархический порядок с помощью BASC или BDESC:

WITH 
    SET [~COLUMNS] AS 
    {[DimProgram.Name].[Name].MEMBERS} 
    MEMBER [Measures].[orderMeas] AS 
    [DimTime.CalendarYearMonth].CurrentMember.Member_Key 
    SET [~ROWS] AS 
    Order 
    (
     [DimTime.CalendarYearMonth].[CalendarYearMonth].MEMBERS 
    ,[Measures].[orderMeas] 
    ,BASC 
    ) 
SELECT 
    NON EMPTY 
    CrossJoin 
    (
     [~COLUMNS] 
    ,{[Measures].[SubmissionCount]} 
    ) ON COLUMNS 
,NON EMPTY 
    [~ROWS] ON ROWS 
FROM [PSE_FactSubmission]; 

Чтобы получить самые последние 12 месяцев вы можете использовать Tail функция - лучше использовать его против непустых месяцев:

WITH 
    SET [~COLUMNS] AS 
    {[DimProgram.Name].[Name].MEMBERS} 
    MEMBER [Measures].[orderMeas] AS 
    [DimTime.CalendarYearMonth].CurrentMember.Member_Key 
    SET [~ROWS] AS 
    Order 
    (
     NonEmpty 
     (
     [DimTime.CalendarYearMonth].[CalendarYearMonth].MEMBERS 
     ,[Measures].[SubmissionCount] 
    ) 
    ,[Measures].[orderMeas] 
    ,BASC 
    ) 
SELECT 
    NON EMPTY 
    CrossJoin 
    (
     [~COLUMNS] 
    ,{[Measures].[SubmissionCount]} 
    ) ON COLUMNS 
,NON EMPTY 
    Tail 
    (
     [~ROWS] 
    ,12 
    ) ON ROWS 
FROM [PSE_FactSubmission]; 

Здравствуйте, Andrew - против AdvWrks у меня есть следующие работы без каких-либо ошибок. Мне нужно изменить Member_Key к MemberValue:

WITH 
    SET [~COLUMNS] AS 
    [Product].[Product Categories].[Product] 
    MEMBER [Measures].[orderMeas] AS 
    [Date].[Calendar].CurrentMember.MemberValue 
    SET [~ROWS] AS 
    Order 
    (
     NonEmpty 
     (
     [Date].[Calendar].[Month].MEMBERS 
     ,[Measures].[Internet Sales Amount] 
    ) 
    ,[Measures].[orderMeas] 
    ,ASC 
    ) 
SELECT 
    NON EMPTY 
    CrossJoin 
    (
     [~COLUMNS] 
    ,{[Measures].[Internet Sales Amount]} 
    ) ON COLUMNS 
,NON EMPTY 
    Tail 
    (
     [~ROWS] 
    ,12 
    ) ON ROWS 
FROM [Adventure Works]; 
+0

Спасибо за ответ. Глядя на запрос заказа, чтение кода само по себе имеет смысл, но при вставке он не запускается. Есть ли любимый инструмент, который вы используете для написания/тестирования таких запросов? Я предполагаю, что мне нужно вернуться, по крайней мере, полуполезное сообщение об ошибке, чтобы увидеть, где я ошибся. –

+0

просто 'SSMS' должно выдать сообщение об ошибке? Я использую MDX Studio (это бесплатно), чтобы играть с mdx. Позвольте мне создать прототип, подобный вашему сценарию, против куба AdvWrks, чтобы проверить структуру моего ответа. – whytheq

+0

Кажется, что большинство людей используют услуги анализа, и большинство инструментов ориентированы на это. –

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