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


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]

См. также

Справочник

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