2014-10-29 2 views
0

Использование Adventureworks DW 2008 cube Я пытаюсь создать запрос MDX, который вернет счет интернет-заказов, у которого не было кода конкретной причины для заказа.SSAS MDX для отношений многих-многих

FactInternetSales имеет много для многих с FactInternetSalesReason. Каждая продажа имеет 1 или более кодов причин.

Если я попытаюсь вернуть заказы, в которых не используется причина «Поощрение», я по-прежнему получаю заказы на продвижение, включенные в счет, потому что у них также есть другие причины.

Как написать MDX, чтобы сказать, что если этот порядок имеет эту причину, не включайте его в счет, независимо от каких-либо других причин?

Эквивалент SQL против авантюры работает SQL хранилища данных будет:

select count(distinct salesordernumber) from FactInternetSales 
where not exists (select salesorderNumber 
        from FactInternetSalesReason 
        where SalesReasonKey = 2 
        and FactInternetSales.SalesOrderNumber = FactInternetSalesReason.SalesOrderNumber 
       ) 

ответ

1

Это Интернет Заказ Количество:

SELECT 
    { 
    [Measures].[Internet Order Count] 
    } ON 0 
FROM [Adventure Works]; 

Это Интернет Заказ граф с Promotion отчужденным:

SELECT 
    { 
    [Measures].[Internet Order Count] 
    } ON 0 
FROM [Adventure Works] 
WHERE 
    Except 
    (
    [Sales Reason].[Sales Reason].[Sales Reason] 
    ,[Sales Reason].[Sales Reason].[On Promotion] 
); 

Следующие меры исключают следующие исключения:

WITH 
    MEMBER [Measures].[Internet Order Count OnPromotion] AS 
    (
     [Measures].[Internet Order Count] 
    ,[Sales Reason].[Sales Reason].[On Promotion] 
    ) 
    MEMBER [Measures].[Internet Order Count excl OnPromotion] AS 
     [Measures].[Internet Order Count] 
    - 
     [Measures].[Internet Order Count OnPromotion] 
SELECT 
    {[Date].[Calendar].[(All)]} ON 0 
,{ 
    [Measures].[Internet Order Count] 
    ,[Measures].[Internet Order Count OnPromotion] 
    ,[Measures].[Internet Order Count excl OnPromotion] 
    } ON 1 
FROM [Adventure Works]; 
+0

Спасибо. Это работает на кубе приключений, но он не работает в моем кубе. Что-то должно сломаться на моем кубе. Вернуться к доске для рисования. :) – Mike

+0

Когда я посмотрел цифры ближе, ваш второй запрос вернул 21,197 из AW-куба для заказов с включенным промо-акцией, но ваш третий запрос, используя рассчитанную меру, возвращает On Promotion Excluded orders как 24144. Итак, теперь я пытаюсь выяснить, что вызывает несоответствие – Mike

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