Mariusz Buraczewski

Mariusz Buraczewski Starszy programista,
Asseco Business
Solutions S.A.

Temat: Kostki OLAP - CustomRollupColumn - specyficzna formuła

Witam,
mam problem z napisaniem wyrażenia MDX, które znajdowało by się w polu CustomRollupColumn atrybutu wymiaru, będącego drzewkiem.
Elementem nadrzędnym jest Sprzedaż.
Rozwija się w Ilość i Cena. Kolejnym wymiarem niech będą np. Produkty.

Jeśli dla elementu Sprzedaż przypisać formułę Ilość*Cena to przeglądając kostkę otrzymamy:
Produkt1 Produkt2 Total
Ilość 1 2 3
Cena 5 10 15
Sprzedaż 5 20 [45]

O ile Total dla Ilość i Cena (3 i 15) jest do przyjęcia to
Total dla Sprzedaż [45] nie za bardzo. Całkowita sprzedaż powinna być sumą
sprzedaży poszczególnych produktów tzn 1*5+2*10=5+20=25. Tymczasem w kostce występuje obliczenie 3*15=45.

Oczywiście wymiarów może być więcej. Produkty mogą być zgrupowane w kategorie. Przedstawiłem uproszczony wariant problemu.

Ogólnie jeśli obliczenia wykonywane są na liściach, chciałbym by Sprzedaż była liczona jako Ilość*Cena. Jeśli któryś z elementów nie jest liściem powinno nastąpić agregowania wartości już obliczonych.

Czy spotkaliście się z podobnym problemem?
Jak można go rozwiązać?

Pozdrawiam

Wojciech Gardziński

Wypowiedzi autora zostały ukryte. Pokaż autora
Robert Woźniak

Robert Woźniak Digital Advisor &
Founder

Temat: Kostki OLAP - CustomRollupColumn - specyficzna formuła

Zrób jeszcze jeden poziom ze sprzedaży:

Produkt1
Sprzedaż (jako unary operator ustaw '+')
Ilość (jako unary operator ustaw '*')
Cena (jako unary operator ustaw '*')

Nie mam pod ręką Analysis Services to nie sprawdzę ale powinien sumować sprzedaż dla produktów jako sumę sprzedaży, a samą sprzedaż jako iloczyn Ilość*Cena.

Zawsze możesz napisać zestaw formuł na różne poziomy agregacji.
Robert Woźniak

Robert Woźniak Digital Advisor &
Founder

Temat: Kostki OLAP - CustomRollupColumn - specyficzna formuła

Ech uciął spacje,

.Produkt1
..Sprzedaż (jako unary operator ustaw '+')
...Ilość (jako unary operator ustaw '*')
...Cena (jako unary operator ustaw '*')
Mariusz Buraczewski

Mariusz Buraczewski Starszy programista,
Asseco Business
Solutions S.A.

Temat: Kostki OLAP - CustomRollupColumn - specyficzna formuła

Dziękuję za odpowiedzi.
Robert - Produkty to drugi wymiar. Pierwszy wymiar zawiera sprzedaż, ilość, cena. Jak użyje unary operator, działanie będzie jak pisałem na poczatku.
Dla poszczególnych produktów sprzedaż będzie ok. Ale jak np. dodamy
Kategorię produktów jako poziom wyzej do produktów to dla kategorii policzy nie tak jak bym chciał.

wymiar Produkty:
.kategoria1
..produkt1
..produkt2
.kategoria2
..produkt3
..produkt4

wymiar Sprzedaż:
.Sprzedaż + (unary operator)
..Ilość +
..Cena *

Dla produktów będzie ilość*cena
Dla katerorii też będzie ilość*cena ale ilość jako suma ilosci produktów
a cena jako suma cen produktów kategorii i po wymnożeniu tych watości nie uzuskamy zadawalającej sprzedaży.
Robert Woźniak

Robert Woźniak Digital Advisor &
Founder

Temat: Kostki OLAP - CustomRollupColumn - specyficzna formuła

Chodzi mi o rozbicie wymiaru Sprzedaż na:
WymiarSprzedaz jako Total level 0
- Sprzedaz (root dla Ilosc i Cena) level 1
--- Ilosc level 2
--- Cena level 2
Grzegorz Stolecki

Grzegorz Stolecki konsultant Business
Intelligence, SQL
Server, MVP

Temat: Kostki OLAP - CustomRollupColumn - specyficzna formuła

Tak się tylko zapytam...
Czy konieczne jest trzymanie Sprzedaży, Ilości i Ceny jako elementów wymiaru a nie miar w kostce?
A drugie pytanie: której wersji SSAS używasz?

pozdrawiam
Mariusz Buraczewski

Mariusz Buraczewski Starszy programista,
Asseco Business
Solutions S.A.

Temat: Kostki OLAP - CustomRollupColumn - specyficzna formuła

Rozumiem. To jednak nic nie zmieni.
Dla Produktu1 i Produktu2 Sprzedaż będzie ok. Dla Kategoria1 dla Sprzedaż będzie nadal ilość * cena. Ilość dla Kategoria1 jest sumą ilosci Produkt1 i Produkt2. Podobnie z Ceną. Czyli dla Kategoria1 Sprzedaż będzie suma ilosci * suma cen. W
przykładzie zaznaczona wartość powstała jako cena*ilość czyli 45*90=4050. Chciałbym by tą wartością była: 690.
Mariusz Buraczewski

Mariusz Buraczewski Starszy programista,
Asseco Business
Solutions S.A.

Temat: Kostki OLAP - CustomRollupColumn - specyficzna formuła

Grzegorz Stolecki:
Czy konieczne jest trzymanie Sprzedaży, Ilości i Ceny jako elementów wymiaru a nie miar w kostce?
Miara jest jedna - wartość. Od wymiaru zależy jaka to wartość.
To, że podaje ilość*cena to tylko przykład. W tym miejscu może być dowolne obliczenie (definiowalne). Na przykładzie z ilością i ceną dobrze to widać.
A drugie pytanie: której wersji SSAS używasz?
SSAS 2008 Enterprise
Grzegorz Stolecki

Grzegorz Stolecki konsultant Business
Intelligence, SQL
Server, MVP

Temat: Kostki OLAP - CustomRollupColumn - specyficzna formuła

Te kostki są tworzone w PROPHIX ?
Wtedy konstrukcja jest zrozumiała.

W przeciwnym razie o wiele lepiej będzie zmienić strukturę kostki. Użycie wymiaru P-C mocno zwalnia działanie kostki.
Jeśli struktura kostki musi zostać bez zmian - poszedłbym w skrypt kalkulacyjny i modyfikację koordynaty poprzez SCOPE.

pozdrawiamGrzegorz Stolecki edytował(a) ten post dnia 15.06.10 o godzinie 15:19

Wojciech Gardziński

Wypowiedzi autora zostały ukryte. Pokaż autora
Mariusz Buraczewski

Mariusz Buraczewski Starszy programista,
Asseco Business
Solutions S.A.

Temat: Kostki OLAP - CustomRollupColumn - specyficzna formuła

Grzegorz Stolecki:
Te kostki są tworzone w PROPHIX ?
Wtedy konstrukcja jest zrozumiała.
Kostki nie są tworzone w PROPHIX. Tam operacje typu Cena*Ilość są wykonywane przez aplikacje. SSAS jedynie wyświetla te wartości :)

Następna dyskusja:

OLAP - MDX w Cell Data w Ro...




Wyślij zaproszenie do