И-или в запросах MDX - PullRequest
       117

И-или в запросах MDX

0 голосов
/ 04 ноября 2019

Пожалуйста, рассмотрите этот MDX запрос:

SELECT {[Measures].[Internet Sales Amount]} ON COLUMNS,  
[Date].[Calendar Year].MEMBERS ON ROWS  
FROM [Adventure Works]  

Как я могу добавить предложение WHERE к вышеуказанному запросу с этими тремя критериями:

1) Где [Customer].[Customer Geography].[Country].&[United States] AND [Product].[Category].&[Bike]

2) Где [Customer].[Customer Geography].[Country].&[United States] OR [Product].[Category].&[Bike]

3) Где ([Customer].[Customer Geography].[Country].&[United States] OR [Product].[Category].&[Bike]) AND [Date].[Year].&[2008]

Спасибо

1 Ответ

2 голосов
/ 04 ноября 2019

1) Где [Клиент]. [География клиента]. [Страна]. & [США] И [Продукт]. [Категория]. & [Велосипед]

Дляэто ваше положение where будет

Where ([Customer].[Customer Geography].[Country].&[United States], [Product].[Category].&[Bike])

Приведенный выше код определяет кортеж, который состоит из данных о продажах велосипедов США

2) Где [Клиент]. [География клиента]. [Страна]. & [США] ИЛИ [Продукт]. [Категория]. & [Велосипед]

Для этого ваше условие Где будет

Where 
{([Customer].[Customer Geography].[Country].&[United States], [Product].[Category].defaultmember),
([Customer].[Customer Geography].[Country].[Country], [Product].[Category].&[Bike])}

Inв этом случае вам нужны данные, когда либо страна - США, либо Продукт - велосипед. Итак, я определил два кортежа, первый из которых говорит, что страна - это США, и категория продукта может быть любой категорией продукта. В следующем кортеже я говорю, что страной может быть любая страна, но продуктом является Bike. В MDX каждый кортеж в наборе должен быть равен с точки зрения иерархии и с точки зрения положения иерархии. В приведенном выше случае я не могу сделать набор, говорящий

{
([Customer].[Customer Geography].[Country].&[United States]),
([Product].[Category].&[Bike])
}

Этот набор невозможен в MDX, поэтому в первом кортеже я упомянул «[Product]. [Category] .defaultmember», что означает отсутствие конкретного значения. определяется так же, как в следующем кортеже я использовал «[Клиент]. [География клиента]. [Страна]. [Страна]», так как это пользовательская иерархия, я не могу использовать элемент по умолчанию, поэтому я использовал это выражение.

3) Где ([Клиент]. [География клиента]. [Страна]. & [США] ИЛИ [Продукт]. [Категория]. & [Велосипед]) И [Дата]. [Год]. &[2008]

Для этого вам нужно изменить предложения where и on on. Так что для этой части ваш запрос будет

SELECT {[Measures].[Internet Sales Amount]} ON COLUMNS,  
    [Date].[Calendar Year].&[2011] ON ROWS -- in my sample the strong name of 2011 is &[2011] yours may be diffrent 
    FROM [Adventure Works] 
    Where 
    {([Customer].[Customer Geography].[Country].&[United States], [Product].[Category].defaultmember),
    ([Customer].[Customer Geography].[Country].[Country], [Product].[Category].&[Bike])}
...