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:

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.

Adrian Chodkowski
Follow me

Adrian Chodkowski

SQL geek, Data enthusiast, Consultant & Developer
Adrian Chodkowski
Follow me

2 Comments

  1. Piotr Ziuziański

    Czy mogę prosić o podanie życiowego przykładu, gdzie ustawienie tej właściwości na “Error” jest przydatne?

    Reply
    1. Adrian ChodkowskiAdrian Chodkowski (Post author)

      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.

      Reply

Leave a Comment

Your email address will not be published. Required fields are marked *