Bartłomiej Głowacki BI Support Manager
Temat: MDX, calculated measure, pytanie dla specjalistów w...
Pytanie w tematyce MDX, OLAPPracuję nad stworzeniem tzw. "calculated measure", która ma być obliczana na podstawie wartości jednej z istniejących miar (measures) i jednego z atrybutów.
Konkretniej, chodzi o sprzedaż produktów, które mogą być sprzedawane jako opakowania i jako indywidualne sztuki. Atrybutem produktu jest jego [Product split code], dwa produkty z tym samym identyfikatorem mają się sumować. Np. puszka coli jest produktem X, natomiast zgrzewka produktem Y, ale ponieważ posiadają ten sam [Product Split Code] więc mając 3 puszki i 5 zgrzewek, można powiedzieć, że mamy 5,25 zgrzewki. To jaki jest ekwiwalent produktów dla opakowania zbiorczego mamy w "propertisie" o nazwie [Product Case Equivalent Amount]
Sprzedaż zawiera miary, w tym przypadku interesuje nas sprzedana ilość [Measures].[Invoice Qty]
Do tego dochodzi sytuacja, że w wymiarze produktów jest hierarchia kat.nadrzędna/kategoria/grupa/produkt. Produkt ze sprzedażą połączony jest poprzez [Product_ID]
Okej, teraz problem.
Chciałbym sobie wyliczyć prostą (z pozoru) rzecz, zapytanie od którego wychodzę wygląda tak:
with
-- to wyświetla mi ekwiwalent dla konkretnego produktu
member [Measures].[Case Equivalent Amount] as
CoalesceEmpty([Product].[Product].CurrentMember.Properties("Product Case Equivalent Amount"),0)
-- to wyświetla mi ilość w opakowaniach dla danego produktu
member [Measures].[Case Equivalent Qty] as
[Measures].[Invoice Qty] * [Measures].[Case Equivalent Amount]
SELECT
{
[Measures].[Invoice Qty],
[Measures].[Case Equivalent Qty]
}
ON COLUMNS,
{
[Product].[Product].Members
}
ON ROWS
FROM [MWP DWH Cube]
where
{
[Product].[Product Split Code].&[1-19sdfs]
}
Niestety wynik jest mało satysfakcjonujący:
All 132 0.00
Prod single 54 9.18
Prod 6pack 78 78.00
Oczywiście brakuje mi w All wartości 87.18! Co mogę zrobić, żeby tam się znalazła ? ! ? !
Próbuję wszelkich kombinacji funkcji takich jak:
SUM
Descendants
Ale albo nie wyświetla mi nic, albo zgłasza błąd, nie wiem jak się do tego dobrać, jakieś rady?
Dzięki!!!
PS. Uprzedzam pytania typu, żeby zrobić to inaczej, w tabelce/widoku itd. źródłowym zrobiłbym to w 4 godziny z testowaniem i wdrożeniem, trzeba byłoby jednak przebudować kostkę, na co niektórzy "decydenci" bardzo się krzywią, więc od 2 dni siedzę i dłubię w MDX, który niestety jest dla mnie cały czas nowością.Bartłomiej Głowacki edytował(a) ten post dnia 20.02.12 o godzinie 23:50