SSASMissingMDXMember_00

Właściwość MDXMissingMemberMode

Dziś chciałbym napisać parę słów na temat właściwości MDXMissingMemberMode dostępnej w kostkach wielowymiarowych SQL Server Analysis Services. Właściwość ta odnosi się do wymiaru i czasem istnieje potrzeba jej zmiany. Posiada ona trzy możliwe wartości:

  • Default
  • Error
  • Ignore

gdzie domyślną wartością jest Ignore. W momencie gdy zostawimy domyślne ustawienie , wszystkie referencje z naszego kodu MDX do elementów atrybutów określonego wymiaru, które nie istnieją zostaną zignorowane tj. zwrócą pusty rezultat. Dla przykładu poniższe zapytanie:

SELECT 
       {} on 0,
       [Customer].[Customer].&[186951] ON 1
FROM 

nie zwróci nic, ponieważ element atrybutu o koordynatach [Customer].[Customer].&[186951] nie istnieje. W momencie gdy ustawimy właściwość MDXMissingMemberMode na Error wtedy to samo zapytanie zwróci nam następujący błąd:

Query (2, 1) The level ‘&[186951]’ object was not found in the cube when the string, [Customer].[Customer].&[186951], was parsed.

Domyślne zachowanie tej właściwości jest w większości przypadków odpowiednie, pozwala na bardziej elastyczne przygotowywanie kodu ponieważ w momencie gdy element hierarchii przechodzi z jednego elementu nadrzędnego na drugi wtedy automatycznie zmieniają się jego koordynaty. Jednakże jak to czasem bywa potrzebne jest inne zachowanie kostki i właśnie w tych wypadkach przydatna jest ta właściwość. Szczególnie w przypadku gdy budujemy nasze koordynaty ręcznie z poziomu kodu np. .NET.

2 Comments

    • W przypadku gdy budujemy nasze zapytanie z poziomu c# bazując na identyfikatorach, które nie pochodzą z kostki możemy przechwycić błąd i wyświeltić stosowny komunikat – może to okazać się prostsze niż sprawdzenie tego czy zbiór jest pusty czy też nie 🙂 Przypuśćmy, iż mamy wymiar czasu gdzie id ma format yyyyMMdd nasza aplikacja nie pobiera id z kostki i buduje go niezależnie. W przypadku gdy nie ma danych z jakiś dzień no to może zwrócić błąd, który my obsłużymy stosownym komunikatem.

Leave a Reply