Wielowymiarowe ekspresje

Wyrażenia wielowymiarowe ( MDX ) to język zapytań do przetwarzania analitycznego online (OLAP) przy użyciu systemu zarządzania bazą danych . Podobnie jak SQL , jest to język zapytań dla kostek OLAP . Jest to również język obliczeń, ze składnią podobną do formuł arkusza kalkulacyjnego.

Tło

Język MultiDimensional eXpressions (MDX) zapewnia specjalistyczną składnię do wykonywania zapytań i manipulowania wielowymiarowymi danymi przechowywanymi w kostkach OLAP . Chociaż możliwe jest przetłumaczenie niektórych z nich na tradycyjny język SQL, często wymagałoby to syntezy niezgrabnych wyrażeń SQL, nawet w przypadku bardzo prostych wyrażeń MDX. MDX został przyjęty przez zdecydowaną większość dostawców OLAP i stał się standardem dla systemów OLAP.

Historia

MDX został po raz pierwszy wprowadzony jako część specyfikacji OLE DB dla OLAP w 1997 roku przez Microsoft . Został wynaleziony przez grupę inżynierów SQL Server, w tym Mosha Pasumansky'ego . Po specyfikacji szybko w 1998 r. pojawiła się komercyjna wersja Microsoft OLAP Services 7.0, a później Microsoft Analysis Services . Najnowsza wersja OLE DB for OLAP została wydana przez Microsoft w 1999 roku.

Chociaż nie był to otwarty standard, ale raczej specyfikacja należąca do firmy Microsoft, został przyjęty przez wielu dostawców OLAP.

Specyfikacja XML for Analysis odwoływała się do specyfikacji OLE DB for OLAP w celu uzyskania szczegółowych informacji na temat języka zapytań MDX. W usługach Analysis Services 2005 firma Microsoft dodała kilka rozszerzeń języka zapytań MDX, takich jak podwybory. Produkty takie jak Microsoft Excel 2007 zaczęły używać tych nowych rozszerzeń języka zapytań MDX. Niektórzy określają ten nowszy wariant MDX jako MDX 2005.

mdXML

W 2001 r. Rada XMLA wydała standard XML for Analysis (XMLA), który zawierał mdXML jako język zapytań. W specyfikacji XMLA 1.1 mdXML to zasadniczo MDX opakowany w znacznik XML <Statement> .

Typy danych MDX

Istnieje sześć podstawowych typów danych w MDX

  • Skalar . Skalar to liczba lub ciąg znaków . Może być podany jako literał, np. liczba 5 lub ciąg znaków „OLAP” lub może zostać zwrócony przez funkcję MDX, np. Aggregate (liczba), UniqueName (ciąg znaków), .Value (liczba lub ciąg znaków) itp.
  • Wymiar / Hierarchia . Wymiar to wymiar sześcianu . Wymiar jest głównym organizatorem informacji o miarach i atrybutach w kostce. MDX nie zna i nie zakłada żadnych zależności między wymiarami - zakłada się, że są one wzajemnie niezależne. Wymiar będzie zawierał niektórych członków (patrz poniżej) zorganizowanych w pewną hierarchię lub hierarchie zawierające poziomy. Można go określić unikalną nazwą, np. [Czas] lub zwrócić funkcją MDX, np. .Dimension . Hierarchia to hierarchia wymiarów sześcianu . _ Może być określony poprzez unikalną nazwę, np. [Time].[Fiscal] lub może być zwrócony przez funkcję MDX, np. .Hierarchy . Hierarchie są zawarte w wymiarach. ( OLEDB dla specyfikacji OLAP MDX nie rozróżnia typów danych wymiarów i hierarchii. Niektóre implementacje, takie jak Microsoft Analysis Services, traktują je inaczej. )
  • Poziom . Poziom to poziom w hierarchii wymiarów. Można go określić poprzez jego unikalną nazwę, np. [Czas].[Fiscal].[Miesiąc] lub może być zwrócony przez funkcję MDX, np . .Level .
  • Członek . Członek jest członkiem w hierarchii wymiarów. Można go określić za pomocą unikalnej nazwy, np. [Czas].[Fiskalny].[Miesiąc].[Sierpień 2006] , za pomocą nazwy kwalifikowanej, np. [Czas].[Fiskalny].[2006].[Q3].[Sierpień 2006] lub zwrócone przez funkcję MDX, np . .PrevMember , .Parent , .FirstChild itp. Należy zauważyć, że wszystkie elementy członkowskie są specyficzne dla hierarchii. Jeśli ten sam produkt należy do dwóch różnych hierarchii ( [Produkt].[Według producenta] i [Produkt].[Według kategorii] ), będą widoczne dwa różne elementy, które mogą wymagać skoordynowania w zestawach i krotkach (patrz poniżej).
  • Krotka . Krotka to uporządkowana kolekcja jednego lub więcej członków z różnych wymiarów. Krotki można określić, wyliczając członków, np. ([Czas].[Fiskalny].[Miesiąc].[Sierpień], [Klient].[Według położenia geograficznego].[Wszyscy klienci].[USA], [Miary].[ Sales]) lub zwrócone przez funkcję MDX, np. .Item .
  • Ustaw . Zestaw to uporządkowany zbiór krotek o tej samej wymiarowości lub hierarchii w przypadku implementacji firmy Microsoft. Można go podać wyliczając krotki, np. {([Miary].[Sprzedaż], [Czas].[Fiskalny].[2006]), ([Miary].[Sprzedaż], [Czas].[Fiskalny].[ 2007])} lub zwracane przez funkcję lub operator MDX, np. Crossjoin , Filter , Order , Descendants itp.
  • Inne typy danych. Właściwości elementu członkowskiego są równoważne z atrybutami w sensie hurtowni danych. Można je pobrać według nazwy w zapytaniu za pomocą klauzuli WŁAŚCIWOŚCI osi zapytania. Dostęp do skalarnej wartości danych właściwości elementu członkowskiego dla niektórych elementów członkowskich można uzyskać w wyrażeniu za pośrednictwem języka MDX, nazywając właściwość (na przykład [Product].CurrentMember.[Sales Price] ) lub używając specjalnej funkcji dostępu (na przykład , [Produkt].CurrentMember.Properties("Cena sprzedaży") ). W ograniczonych kontekstach MDX pozwala również na inne typy danych - na przykład Array może być używany wewnątrz SetToArray w celu określenia tablicy, która nie jest przetwarzana przez MDX, ale przekazywana do funkcji zdefiniowanej przez użytkownika w bibliotece ActiveX. Obiekty innych typów danych są reprezentowane jako ciągi skalarne wskazujące nazwy obiektów, takie jak nazwa grupy miar w funkcji MeasureGroupMeasures firmy Microsoft lub nazwa KPI w funkcjach KPIValue lub KPIGoal firmy Microsoft .

Przykładowe zapytanie

Poniższy przykład, zaadaptowany z SQL Server 2000 Books Online, pokazuje podstawowe zapytanie MDX używające instrukcji SELECT. Ta kwerenda zwraca zestaw wyników zawierający kwoty sprzedaży w sklepach w stanie Kalifornia w latach 2002 i 2003.


       
        
 
    WYBIERZ  {  [  Miary  ]  .  [  Sprzedaż w sklepie  ]  }  NA  KOLUMNACH  ,  {  [  Data  ]  .  [  2002  ]  ,  [  Data  ]  .  [  2003  ]  }  W  RZĘDACH  OD  SPRZEDAŻY  GDZIE  (  [  Sklep  ]  .  [  USA  ]  .  [  CA  ]  ) 

W tym przykładzie zapytanie definiuje następujące informacje o zestawie wyników

  • Klauzula SELECT ustawia osie zapytania jako element Store Sales wymiaru Measures oraz elementy 2002 i 2003 wymiaru Date.
  • Klauzula FROM wskazuje, że źródłem danych jest kostka Sales.
  • Klauzula WHERE definiuje „oś fragmentatora” jako element kalifornijski wymiaru Sklep.

Uwaga: W zapytaniu MDX można określić maksymalnie 128 osi zapytań.

Jeśli tworzysz dwie osie, jedna musi być osią kolumny, a druga osią wiersza, chociaż nie ma znaczenia, w jakiej kolejności pojawiają się one w zapytaniu. Jeśli utworzysz zapytanie, które ma tylko jedną oś, musi to być oś kolumny. Nawiasy kwadratowe wokół identyfikatora konkretnego obiektu są opcjonalne, o ile identyfikator obiektu nie jest jednym ze słów zastrzeżonych i nie zawiera innych znaków niż litery, cyfry lub podkreślenia.


      
      
 
    WYBIERZ  [  Miary  ]  .  [  Sprzedaż sklepowa  ]  NA  KOLUMNACH  ,  [  Data  ]  .  Członkowie  W  RZĘDACH  OD  Sprzedaż  GDZIE  (  [  Store  ]  .  [  USA  ]  .  [  CA  ]  ) 

Dalsza lektura

  •   George Spofford, Sivakumar Harinath, Chris Webb, Dylan Hai Huang, Francesco Civardi: Rozwiązania MDX: z Microsoft SQL Server Analysis Services 2005 i Hyperion Essbase . Wiley, 2006, ISBN 0-471-74808-0
  •   Mosha Pasumansky , Mark Whitehorn, Rob Zare: Szybka ścieżka do MDX . ISBN 1-84628-174-1
  • Larry Sackett: raportowanie i analiza MDX z SAP NetWeaver BW . Prasa SAP, 2008, 978-1-59229-249-3

Linki zewnętrzne