Многомерные выражения — фильтрация по значению меры?

Я хочу написать выражение MDX, которое использует значение меры в операторе WHERE.

Например: предположим, я хочу показать доход от проданных товаров в магазинах в разных городах, но я хочу подсчитать доход только от проданных товаров, цена которых превышает 10 долларов.

Это то, что я пробовал, но это не работает:

WHERE ([MEASURES].[Price]>10)

Как я могу сделать это с помощью MDX?


person gusper    schedule 16.08.2011    source источник


Ответы (1)


Если у вас есть доступ к olap db, вы можете просто создать другую метрику Price (например, создать выражение для таблицы фактов в DSV и создать метрику для этого поля) и использовать ее для дальнейших расчетов. Но если у вас нет доступа к БД, вы можете попробовать следующий скрипт:

WITH
MEMBER [Measures].[Price10] AS
    'IIF([Measures].[Price] < 10,0,[Measures].[Price])'
MEMBER [Measures].[COST] AS
    '[Measures].[Price10]*[Measures].[Unit Count]'
SELECT
    {[Measures].[COST]} ON COLUMNS,
    {[Customer].[Customer Geography].[City].Members,[Customer].[Customer Geography].[All Customers]} ON ROWS
from [Adventure Works]

Это всего лишь предложение... и оно зависит от типа агрегации, который используется для расчета метрики Цена.

person Max    schedule 17.08.2011
comment
Спасибо за ответ! У меня есть доступ к olap db, но дело в том, что предел цены должен быть введен пользователем, поэтому я не знаю заранее, каким будет предел. Я думаю, что второй сценарий слишком сложен, у меня есть много других параметров для ввода пользователем, поэтому запрос mdx будет слишком большим для меня. Но спасибо за помощь! - person gusper; 18.08.2011