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


Определение содержимого оси среза (многомерные выражения)

Ось среза фильтрует данные, возвращаемые инструкцией многомерных выражений SELECT. При этом возвращаются только данные, пересекающиеся с заданными элементами. Ее можно представить как дополнительную невидимую ось запроса. Ось среза определяется в предложении WHERE инструкции многомерных выражений SELECT.

Синтаксис определения оси среза

Для явного определения оси среза используется следующий синтаксис в инструкции многомерных выражений <SELECT slicer axis clause>.

<SELECT slicer axis clause> ::=  WHERE Set_Expression

В приведенном синтаксисе определения оси среза аргумент Set_Expression может принимать либо кортежное выражение, интерпретируемое как набор при вычислении предложения, либо выражение набора. Если задано выражение набора, язык многомерных выражений пытается вычислить набор с использованием статистического вычисления по результирующим ячейкам в каждом кортеже набора. Иными словами, используется функция Aggregate для набора, при этом каждая мера статистически обрабатывается с помощью связанной статистической функции. Кроме того, если выражение набора нельзя выразить в виде перекрестного соединения элементов иерархии атрибута, при вычислении в языке многомерных выражений ячейки, находящиеся за пределами выражения набора, с помощью которого определена ось среза, интерпретируются как имеющие значения NULL.

Важное примечаниеВажно!

В отличие от предложения WHERE в SQL, предложение WHERE инструкции многомерного выражения SELECT никогда не фильтрует непосредственно данные, возвращаемые в оси строк запроса. Для фильтрации содержимого осей строк или столбцов запроса можно использовать различные функции многомерных выражений, такие как FILTER, NONEMPTY или TOPCOUNT.

Неявная ось среза

Если элемент иерархии в кубе не включен явно в ось запроса, элемент по умолчанию этой иерархии неявно включается в ось среза. Дополнительные сведения об элементах по умолчанию см. в разделе Определение элемента по умолчанию.

Примеры

Следующий запрос не содержит предложения WHERE. Он возвращает значение меры объема продаж в Интернете (Internet Sales Amount) за все календарные годы (Calendar Year):

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

Добавление предложения WHERE, как показано далее:

SELECT {[Measures].[Internet Sales Amount]} ON COLUMNS,
[Date].[Calendar Year].MEMBERS ON ROWS
FROM [Adventure Works]
WHERE([Customer].[Customer Geography].[Country].&[United States])

не изменяет содержимое, возвращаемое в строках или столбцах запроса; изменяются только значения, возвращаемые в каждой из ячеек. В этом примере для запроса выполняется срез таким образом, что он возвращает значение величины продаж в Интернете (Internet Sales Amount) за все календарные годы (Calendar Year), но только для клиентов (Customer), проживающих в США (United States). В предложение WHERE можно добавить несколько элементов из различных иерархий. В следующем запросе отображается значение величины продаж в Интернете (Internet Sales Amount) за все календарные годы (Calendar Year) для клиентов (Customer), проживающих в США (United States) и приобретавших продукты (Product) в категории (Category) велосипедов (Bikes):

SELECT {[Measures].[Internet Sales Amount]} ON COLUMNS,
[Date].[Calendar Year].MEMBERS ON ROWS
FROM [Adventure Works]
WHERE([Customer].[Customer Geography].[Country].&[United States], [Product].[Category].&[1])

Если необходимо использовать несколько значений из одной и той же иерархии, в предложение WHERE следует включить набор. Например, следующий запрос отображает величину продаж в Интернете (Internet Sales Amount) за все календарные годы (Calendar Year) для клиентов (Customer), проживающих в США (United States) или в Великобритании (United Kingdom) и приобретавших продукты (Product) в категории (Category) велосипедов (Bikes):

SELECT {[Measures].[Internet Sales Amount]} ON COLUMNS,
[Date].[Calendar Year].MEMBERS ON ROWS
FROM [Adventure Works]
WHERE(
{[Customer].[Customer Geography].[Country].&[United States]
, [Customer].[Customer Geography].[Country].&[United Kingdom]}
, [Product].[Category].&[1])

Как уже упоминалось, при использовании набора в предложении WHERE неявно объединяются значения для всех элементов набора. В этом случае запрос отображает в каждой из ячеек совокупные значения для США (United States) и Великобритании (United Kingdom).