2017-02-19 28 views
0

Я новичок в запросах Mdx, и у меня был вопрос о mdx, как можно извлечь первый член кортежей в наборе az новый набор в mdx? У меня есть запрос, как это:Извлечь первый член кортежей в наборе в MDX

WITH 
    SET [people in first date] AS 
    'Filter 
     ( 
     {[VW Dim Customer Broker Branch].[Customer Title].[Customer Title]*[Vw Dim Date].[Shamsi Date].&[1388/06/01]:[Vw Dim Date].[Shamsi Date].&[1388/06/02]}, 
     [Measures].[Trade Cnt]>3 
    ) ' 

     SET [people in second date] AS 
    'Filter 
     ( 
     {[VW Dim Customer Broker Branch].[Customer Title].[Customer Title]*[Vw Dim Date].[Shamsi Date].&[1388/06/03]:[Vw Dim Date].[Shamsi Date].&[1388/06/04]}, 
     [Measures].[Trade Cnt]>0 
    ) ' 

    /* SET [numberOfFirstItem] As 
     [people in first date].item(0)*/ 

    member [measures].[numberOfPeopleInFirstDate] AS 
    DistinctCount([people in first date]) 

    member [measures].[numberOfPeopleInFirstDate1] AS 
    Count([people in first date]) 

    member [measures].[numberOfPeopleInSecondtDate] AS 
    DistinctCount([people in second date]) 

    member [measures].[Ratio] AS 
    '(([measures].[numberOfPeopleInSecondtDate]-[measures].[numberOfPeopleInFirstDate])/IIF([measures].[numberOfPeopleInFirstDate]=0,1,[measures].[numberOfPeopleInFirstDate]))*100' 

select 
     [Measures].[Trade Cnt] on 0, 
     [people in first date] on 1 
     --{[measures].[numberOfPeopleInFirstDate],[measures].[numberOfPeopleInSecondtDate],[measures].[Ratio]} on 0 
     /* {[Measures].[Trade Cnt]} on 0, 
     [people in first date] on 1*/ 
     -- {[numberOfFirstItem]} on 0 

     from [DVPL] 

Я хочу, чтобы извлечь первый член tuples в первом сете - просто [VW Dim Customer Broker Branch].[Customer Title].[Customer Title], потому что я хочу отчетливый граф имя people с упомянутым запросом T получил повторы имен.

ответ

1

Если я правильно понимаю, вы хотите получить отчетливое количество всех [VW Dim Customer Broker Branch]. [Только название пользователя]. Легче вообще не использовать логику кортежа. Я бы создал меру, чтобы получить отличное количество всех членов для первой даты и отличное количество как для первой даты, так и для второй даты, плюс их рацион, по-видимому:

Member [Measures].[NumberOfPeopleInFirstDate] as 
SUM(
    existing [VW Dim Customer Broker Branch].[Customer Title].[Customer Title].Members, 
    IIF(
     Aggreagate(
      [Vw Dim Date].[Shamsi Date].&[1388/06/01]:[Vw Dim Date].[Shamsi Date].&[1388/06/02], 
      [Measures].[Trade Cnt] 
     ) > 3, 
     1, 
     NULL 
    ) 
) 


Member [Measures].[NumberOfPeopleInFirstDateAndSecondDate] as 
SUM(
    existing [VW Dim Customer Broker Branch].[Customer Title].[Customer Title].Members, 
    IIF(
     AGGREGATE(
      [Vw Dim Date].[Shamsi Date].&[1388/06/01]:[Vw Dim Date].[Shamsi Date].&[1388/06/02], 
      [Measures].[Trade Cnt] 
     ) > 3 
     and 
     AGGREGATE(
      [Vw Dim Date].[Shamsi Date].&[1388/06/03]:[Vw Dim Date].[Shamsi Date].&[1388/06/04], 
      [Measures].[Trade Cnt] 
     ) > 0, 
     1, 
     NULL 
    ) 
) 

Member [Measures].[Ratio] as 
[Measures].[NumberOfPeopleInFirstDateAndSecondDate]/[Measures].[NumberOfPeopleInFirstDate]