Исключение члена по умолчанию из вычислений меры - PullRequest
1 голос
/ 11 ноября 2009

Я построил куб, содержащий информацию о продаже билетов.

У меня есть мера, которая отличается от количества номеров клиентов из таблицы фактов. Непроданные билеты на каждое представление заносятся в таблицу фактов и им присваивается «специальный» номер клиента, который ссылается на фиктивную запись клиента.

Я бы хотел, чтобы количество клиентов не совпадало с "специальным" номером клиента, который используется для непроданных билетов.

Моя лучшая попытка на данный момент - создать вычисляемый показатель, который исключает один номер клиента из результатов. Для запроса, приведенного ниже, цифры верны.

WITH SET [RealPeople] AS
    Filter([Customers].[CustomerNumber].CHILDREN, 
           [Customers].[CustomerNumber].CurrentMember.MemberValue <> -100)

MEMBER Measures.[Num Real Households] AS
    DISTINCTCOUNT([RealPeople])

SELECT {Measures.[Num Households], Measures.[Num Real Households]} ON 0,
[Location].[PostalCode].CHILDREN ON 1
FROM Tickets

Но это не работает, если пользователь запрашивает то же измерение, которое содержит номер клиента. Когда это происходит, показатель [Num Real Households] возвращает общее количество отдельных номеров клиентов для каждого элемента атрибута в результатах вместо предоставления промежуточных итогов для каждого элемента атрибута.

Я справился с этим, создав скрытое измерение, которое содержит только номера клиентов. Я использую это измерение для набора RealPeople. Никто не будет запрашивать это измерение, поэтому я избежал проблемы, описанной выше.

Есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 30 ноября 2009

Я думаю, что лучший способ сделать это с простой математикой. Вычитая количество этого специального клиента из показателя «Различное количество» (это работает только потому, что я предполагаю, что вы никогда не сможете иметь «непроданный» билет в том же домохозяйстве, что и проданный билет)

WITH 
  MEMBER Measures.[Num Real Households] AS Measures.[Num Households] 
                        - (Measures.[Num Households],[Customers].[CustomerNumber].&[-100])
SELECT {Measures.[Num Households], Measures.[Num Real Households]} ON 0
,[Location].[PostalCode].CHILDREN ON 1
FROM Tickets
...