ValidMeasure (MDX)

Zwraca wartość miary w sześcianie, wymuszając nieodpowiednie wymiary do ich poziomu All (lub domyślnego członka, jeśli nie jest agregowalny) podczas zwracania wyniku dla określonej krotki.

Syntax

  
ValidMeasure(Tuple_Expression)   

Arguments

Tuple_Expression
Poprawne wyrażenie z zakresu wyrażeń wielowymiarowych (MDX), które zwraca krotkę.

Remarks

Funkcja ValidMeasure zwraca wartość krotki, ignorując atrybuty, które nie mają związku z grupą miar miary, której wartość krotka zwraca. Atrybut może być niezwiązany z miarą z dwóch powodów:

  • Wymiar atrybutu nie ma związku z grupą miar miary w krotkach.

  • Wymiar atrybutu nie ma związku z grupą miar miary, ale atrybut ziarnistości nie jest atrybutem kluczowym, a atrybut ziarnistości nie ma bezpośredniego związku z atrybutem w krotkach.

Zachowanie określone przez tę funkcję jest domyślnym zachowaniem po stronie serwera i jest kontrolowane przez właściwość IgnoreUnrelatedDimensions na obiekcie grupy miar.

Dla każdego atrybutu w określonej krotki z dokładnością (czyli gdzie element w krotki nie jest elementem All), bieżąca współrzędna dla każdego takiego atrybutu jest przesuwana następująco:

  • Powiązane atrybuty z określonym członkiem atrybutu są przenoszone do członka istniejącego z aktualnym członkiem.

  • Powiązane atrybuty z określonym członkiem atrybutu są przenoszone do All member (lub domyślnego członka, jeśli hierarchia nie jest agregowalna).

  • Niepowiązane atrybuty są przenoszone do funkcji All member (na podstawie miary).

Example

Poniższe zapytanie pokazuje, jak funkcję ValidMeasure można użyć do nadpisania zachowania właściwości IgnoreUnrelatedDimensions. W kostce Adventure Works grupa miar Sales Targets ma ustawione IgnoreUnrelatedDimensions na False; ponieważ wymiar Daty łączy się z tą grupą miar przy szczegółowości Kwartału Kalendarzowego, oznacza to, że miara Kwoty Sprzedaży domyślnie zwraca wartość null poniżej Kwartału Kalendarzowego (choć istnieje także obliczenie w skrypcie MDX, które przydziela wartości do poziomu Miesiąca). Użycie funkcji ValidMeasure w obliczonej miare może sprawić, że miara Sales Quota zachowuje się tak, jakby IgnoreUnrelatedDimensions było ustawione na True i wymusić wyświetlanie wartości Sales Quota za bieżący kwartał kalendarzowy.

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]  

Podobnie, grupa miar Sales Targets nie ma żadnego związku z wymiarem Promocja, więc poniżej poziomu All Member dowolnej hierarchii w Promotion zwraca się na null. Ponownie, to zachowanie można zmienić, używając 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]