ValidMeasure (многомерные выражения)
Возвращает для указанного кортежа значение меры в кубе путем перемещения неприменимых измерений на уровень «Все» (или элемент по умолчанию, если статистическая обработка невозможна).
Синтаксис
ValidMeasure(Tuple_Expression)
Аргументы
- Tuple_Expression
Допустимое многомерное выражение, возвращающее кортеж.
Замечания
Функция ValidMeasure возвращает значение кортежа, при этом пропускаются атрибуты, не имеющие связей с группой мер для меры, значение которой возвращает кортеж. Атрибут может быть не связан с мерой по двум следующим причинам.
Измерение атрибута не имеет связи с группой мер меры в кортеже.
Измерение атрибута не имеет связи с группой мер данной меры, но атрибут гранулярности не является ключевым атрибутом и не имеет прямой связи с атрибутом в кортеже.
Поведение, заданное этой функцией, является поведением на сервере по умолчанию и определяется свойством IgnoreUnrelatedDimensions объекта группы мер.
Для каждого атрибута в заданном кортеже с гранулярностью (то есть если элемент в кортеже не является элементом «Все») перемещение текущей координаты происходит следующим образом:
атрибуты, связанные с заданным атрибутом элемента, переносятся на элемент, существующий с текущим элементом;
атрибуты, связанные с заданным атрибутом элемента, переносятся на элемент уровня «Все» (или элемент по умолчанию, если статистическая обработка невозможна);
несвязанные атрибуты на элемент уровня «Все» (на основе меры).
Пример
Приведенный ниже запрос показывает пример использования функции ValidMeasure для переопределения поведения свойства IgnoreUnrelatedDimensions. В кубе Adventure Works группа мер Sales Targets имеет свойство IgnoreUnrelatedDimensions в значении False. Поскольку измерение Date соединяется с этой группой мер на гранулярности «Календарный квартал», это означает, что мера «Квота продаж» будет по умолчанию возвращать значение NULL для уровней ниже календарного квартала (хотя есть также вычисление в скрипте многомерных выражений, выделяющем значения вниз до уровня «Месяц»). Функцию ValidMeasure в вычисляемой мере можно использовать, чтобы мера «Квота продаж» вела себя, как если бы свойство IgnoreUnrelatedDimensions имело значение True и заставляло бы меру «Квота продаж» показывать значение текущего календарного квартала.
WITH MEMBER MEASURES.VTEST AS VALIDMEASURE([Measures].[Sales Amount Quota])
SELECT {[Measures].[Sales Amount Quota], MEASURES.VTEST} ON 0,
[Date].[Calendar].MEMBERS ON 1
FROM [Adventure Works]
Аналогичным образом группа мер «Sales Targets» вообще не имеет связей с измерением «Promotion», таким образом ниже уровня элемента «Все» любой иерархии в измерении «Promotion» группа мер будет возвращать значение NULL. Опять же это поведение можно изменить с помощью функции ValidMeasure:
WITH MEMBER MEASURES.VTEST AS VALIDMEASURE([Measures].[Sales Amount Quota])
SELECT {[Measures].[Sales Amount Quota], MEASURES.VTEST} ON 0,
[Promotion].[Promotions].members ON 1
FROM [Adventure Works]
См. также
Справочник
Справочник по функциям многомерных выражений (многомерные выражения)