MDX заменить диапазон с фильтром - PullRequest
1 голос
/ 02 декабря 2009

Глядя на следующий ответ, я хотел заменить диапазон фильтром.

MDX - Параллельные вычисления на основе «диапазона времени записи»?

MDX:

with member [Measures].[TotalUsed] as sum({[Date].[YQM].&[20090501]:[Date].[YQM].&[20090907]}, [Measures].[Used])
select    {[Measures].[Total Used]}on columns,    
          {[Color].[Colors].[All].MEMBERS}on rows
from [Cube]

Я пытаюсь заменить диапазон дат таким фильтром:

with member [Measures].[TotalUsed] as sum(FILTER([Date].[YQM], [Date].[YQM] < [Date].[YQM].&[20090907]), [Measures].[Used])
select    {[Measures].[Total Used]}oncolumns,
          {[Color].[Colors].[All].MEMBERS}on rows
from [Cube]

Что условное утверждение ищет в плане сравнения значений? Любая помощь будет великолепна!

Спасибо!

1 Ответ

1 голос
/ 10 декабря 2009

Оператору Filter требуется SET, а затем EXPRESSION для фильтрации. Вы можете оставить это прямо в вашей функции SUM. Часть выражения фильтра может быть почти любой, но она должна преобразовываться в true / false для каждой ячейки в SET.

- ФИЛЬТР (УСТАНОВЛЕН, ВЫРАЖЕНИЕ)

Немного сложно не знать, как структурированы ваши данные, но ваша статистика, вероятно, в конечном итоге будет выглядеть следующим образом, отфильтровывая строки с менее чем 50 'UnUsed' для ваших временных периодов, а затем суммируя их в качестве примера.

`

WITH MEMBER [Measures].[TotalUsed] 
 AS SUM (FILTER ( [Date].[YQM].members, [Measures].[UnUsed] > 50 ), 
                  [Measures].[Used] )

SELECT    {[Measures].[Total Used]} ON COLUMNS,          
{[Color].[Colors].[All].MEMBERS} ON ROWS 
FROM [Cube] 
...