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


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]

См. также

Справочник по функции многомерных выражений (многомерные выражения)