Поделиться через


Filter (многомерные выражения)

Возвращает набор, получающийся в результате фильтрации заданного набора на основе условия поиска.

Синтаксис

Filter(Set_Expression, Logical_Expression )

Аргументы

  • Set_Expression
    Допустимое многомерное выражение, возвращающее набор.

  • Logical_Expression
    Допустимое многомерное выражение иерархии, принимающее значение «true» или «false».

Замечания

Функция Filter вычисляет указанное логическое выражение для каждого кортежа в заданном наборе. Функция возвращает набор, состоящий из всех кортежей указанного набора, для которых логическое выражение принимает значение true. Если выражение не принимает значение true ни для каких кортежей, возвращается пустой набор.

Функция Filter работает аналогично функции IIf. Функция IIf возвращает только одно из двух значений, исходя из многомерного логического условия. Функция Filter возвращает набор кортежей, удовлетворяющих заданному условию поиска. Фактически функция Filter выполняет функцию IIf(Logical_Expression, Set_Expression.Current, NULL) для каждого кортежа набора и возвращает результирующий набор.

Примеры

В следующем примере показано использование функции Filter на оси строк запроса, чтобы получить только даты, когда мера «Продажи через Интернет — сумма продаж» больше 10 000 долларов США:

SELECT [Measures].[Internet Sales Amount] ON 0,

FILTER(

[Date].[Date].[Date].MEMBERS

, [Measures].[Internet Sales Amount]>10000)

ON 1

FROM

[Adventure Works]

Функция Filter может также использоваться в определениях вычисляемых элементов. В следующем примере возвращается сумма значений Measures.[Order Quantity], собранных за первые девять месяцев 2003 г. и содержащихся в измерении Date куба Adventure Works. Функцией PeriodsToDate определяются кортежи в наборе, который передается функции Aggregate. Filter ограничивает возвращаемые кортежи теми, у которых значения меры Reseller Sales Amount за предыдущий период меньше.

WITH MEMBER Measures.[Declining Reseller Sales] AS Count
   (Filter
      (Existing
         (Reseller.Reseller.Reseller), 
            [Measures].[Reseller Sales Amount] < 
               ([Measures].[Reseller Sales Amount],[Date].Calendar.PrevMember)
        )
    )
MEMBER [Geography].[State-Province].x AS Aggregate 
( {[Geography].[State-Province].&[WA]&[US], 
   [Geography].[State-Province].&[OR]&[US] } 
)
SELECT NON EMPTY HIERARCHIZE 
   (AddCalculatedMembers 
      ({DrillDownLevel
         ({[Product].[All Products]})}
        )
    ) DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON COLUMNS 
FROM [Adventure Works]
WHERE ([Geography].[State-Province].x, 
   [Date].[Calendar].[Calendar Quarter].&[2003]&[4],
   [Measures].[Declining Reseller Sales])