ValidMeasure (MDX)

Возвращает значение меры в кубе, форсируя неприменимые размерности на их All level (или элемент по умолчанию, если не агрегируемый) при возврате результата для определённого кортежа.

Syntax

  
ValidMeasure(Tuple_Expression)   

Arguments

Tuple_Expression
Допустимое выражение многомерных выражений (MDX), возвращающее кортеж.

Remarks

Функция ValidMeasure возвращает значение кортежа, игнорируя атрибуты, не связанные с группой мер меры, значение которой возвращает кортеж. Атрибут может быть не связан с мерой по двум причинам:

  • Размерность атрибута не связана с группой меры меры в кортеже.

  • Размерность атрибута не связана с группой меры меры, но атрибут гранулярности не является ключевым атрибутом, и атрибут гранулярности не имеет прямой связи с атрибутом в кортеже.

Поведение, заданное этой функцией, является стандартным на стороне сервера и управляется свойством IgnoreUnrelatedDimensions на объекте группы мер.

Для каждого атрибута в указанном кортеже с гранулярностью (то есть когда элемент кортежа не является элементом All) текущая координата для каждого такого атрибута перемещается следующим образом:

  • Связанные атрибуты с указанным атрибутом перемещаются в тот член, который существует вместе с текущим участником.

  • Связанные атрибуты с указанным атрибутом перемещаются в All (или в стандартный член, если иерархия не агрегируема).

  • Несвязанные атрибуты перемещаются в член All (в зависимости от измерения).

Пример

Следующий запрос показывает, как функция ValidMeasure может быть использована для отмены поведения свойства IgnoreUnrelatedDimensions. В кубе Adventure Works группа меры Sales Targets имеет IgnoreUnrelatedDimensions установлен как False; поскольку измерение Дата присоединяется к этой группе по гранулярности календарного квартала, это означает, что мера квоты продаж по умолчанию возвращает нулевой уровень ниже календарного квартала (хотя в MDX Script также есть расчёт, который распределяет значения до уровня месяца). Использование функции ValidMeasure в рассчитанной мере можно использовать для того, чтобы мера Sales Quota вела себя так, будто IgnoreUnrelatedDimensions была установлена в True, и заставить Sales Quota отображать значение текущего календарного квартала.

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]  

Аналогично, группа измерений целей продаж никак не связана с измерением Продвижение, поэтому ниже All Member любой иерархии по Промоушену она возвращает 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]