AnalysisServices_UnaryOperators_00

Operatory unarne w Analysis Services

W niniejszym poście chciałbym krótko wprowadzić czytelnika w tematykę i zachęcić do zgłębienia tematu – szczególnie, że ta technika bywa niezwykle przydatna. Czym są operatory unarne? Jest to technika pozwalająca zaprogramować dostosowane do określonych potrzeb operacje agregacji/zwijania.

W standardowych hierarchiach elementy dzieci są agregowane przy użyciu standardowych funkcji agregacji takich jak np. suma której znakiem jest unarnym +. W niektórych przypadkach występują różne operatory dla różnych elementów dzieci – jak coś takiego osiągnąć? Można użyć języka MDX lub właśnie operatorów unarnych przeznaczonych do tego typu zastosowań. Ponadto zalecaną praktyką jest używanie wbudowanych funkcjonalności gdy to tylko możliwe zamiast osiągać ten sam efekt w sposób programowy.

Operatory unarne pozwalają nam osiągnąć pożądany efekt z wykorzystaniem tabeli wymiaru takiego jak został przedstawiony na poniższym zrzucie:

Co oznaczają symbole w polu UnaryOperator? To co następuje:

Total=LevelA+LevelB

LevelA=LevelA1-LevelA2-LevelA3

LevelB=-LevelB1

Oczywiście + i – nie są jedynymi dostępnymi operatorami – poniższa tabela zawiera pełną listę operatorów dostępnych w Analysis Services :

 

Po zapoznaniu się z dostępnymi operatorami unarnymi zbudujmy przykładowy wymiar z zaimplementowanymi operatorami unarnymi. Wykorzystam wymiar DimCost, przedstawiony wyżej, który stworzyłem w mojej testowej bazie danych. Pierwszym krokiem jest implementacja standardowej hierarchii parent-child:

Jedyną rzeczą jaką musimy skonfigurować musimy ustawić właściwość UnaryOperatorColumn dla atrybutu ParentGroup (zawierającego hierarchię Parent-Child):

Teraz możemy sprawdzić rezultat naszej pracy wykorzystując dowolny eksplorator kostki:

Jak można zauważyć wszystko działa. Zmieńmy nasz wymiar aby osiągnąć bardziej skomplikowaną logikę:

Dodajmy również dane do tabeli faktów:

Po przeprocesowaniu otrzymujemy prawidłowe rezultaty:

Jak można zauważyć operatory unarne dają nam możliwość prostej implementacji nawet bardzo złożonych obliczeń. Z własnego doświadczenia z pracą z różnymi implementacjami kostek wielowymiarowych wiem, że funkcjonalność ta jest bardzo słabo znana wśród deweloperów- mam nadzieję, że wy teraz znając tą technikę będziecie mogli ją wykorzystać w razie potrzeby w swoich własnych projektach.

Leave a Reply