encyklopedia.run.place

MDX (Multidimensional Expressions)

MDX (Multidimensional Expressions) to język zapytań używany do odczytu i manipulacji danymi w systemach OLAP (Online Analytical Processing). Jego składnia i semantyka są inspirowane SQL, jednak jest zaprojektowany z myślą o pracy z danymi przechowywanymi w strukturach wielowymiarowych, takich jak kostki wymiarowe w Microsoft Analysis Services czy innych platformach hurtowni danych.

Historia

MDX zostało opracowane w latach 90. przez firmę Microsoft jako część projektu SQL Server Analysis Services (SSAS). Pierwsza wersja języka pojawiła się w 1998 roku wraz z wydaniem SQL Server 7.0. Od tego czasu MDX rozwija się równolegle z rozwojem technologii OLAP, wprowadzając nowe funkcje, optymalizacje i rozszerzenia.

Podstawowe pojęcia

  • Wymiar (wymiar) – struktura organizująca dane w hieryarchiczne poziomy (np. czas, produkt, geografia).
  • Miara (miara) – ilościowa wartość podlegająca agregacji (np. sprzedaż, koszt, liczba zamówień).
  • Kostka (kostka) – zbiór wymiarów i miar tworzący wielowymiarową strukturę danych.
  • Set – zbiór elementów (np. członków wymiaru) wykorzystywany w wyrażeniach.
  • Tuple – jednokrotny zestaw członków wymiarów określający konkretne położenie w kostce.

Składnia języka

MDX składa się z kilku podstawowych elementów:

SELECT

Instrukcja SELECT określa dwie główne osie zapytania:

  • Axes – najczęściej ROWS (wiersze) i COLUMNS (kolumny).
  • FROM – nazwa kostki, z której pobierane są dane.
SELECT
    {[Measures].[Sprzedaż]} ON COLUMNS,
    {[Czas].[Rok].Members} ON ROWS
FROM [KostkaSprzedaży]

WHERE (kontekst filtrujący)

Klauzula WHERE ogranicza zestaw danych do określonych członków wymiarów:

SELECT
    {[Measures].[Zysk]} ON COLUMNS
FROM [KostkaFinansowa]
WHERE ([Produkt].[Kategoria].&[Elektronika])

Funkcje i operatory

MDX udostępnia bogaty zestaw funkcji, podzielonych na grupy:

  • Funkcje agregujące – SUM, AVG, MIN, MAX, COUNT.
  • Funkcje czasowe – ParallelPeriod, Lag, Lead, PeriodstoDate.
  • Funkcje hierarchiczne – Descendants, Ancestors, Children.
  • Funkcje setowe – Union, Intersect, Except, Filter.
  • Operatory logiczne – AND, OR, NOT.

Przykładowe zapytania

1. Suma sprzedaży w podziale na kwartały

SELECT
    {[Measures].[Sprzedaż]} ON COLUMNS,
    {[Czas].[Kwartal].Members} ON ROWS
FROM [KostkaSprzedaży]

2. Porównanie sprzedaży rok do roku (YoY)

WITH MEMBER [Measures].[Sprzedaż_RokPoprzedni] AS
    ([Measures].[Sprzedaż], ParallelPeriod([Czas].[Rok], 1, [Czas].CurrentMember))

SELECT
    {[Measures].[Sprzedaż], [Measures].[Sprzedaż_RokPoprzedni]} ON COLUMNS,
    {[Czas].[Miesiąc].Members} ON ROWS
FROM [KostkaSprzedaży]

3. Top‑10 produktów według przychodu

SELECT
    {[Measures].[Przychód]} ON COLUMNS,
    TopCount([Produkt].[Produkt].Members, 10, [Measures].[Przychód]) ON ROWS
FROM [KostkaProdukty]

Zastosowanie i narzędzia

MDX jest wykorzystywane w różnorodnych aplikacjach analitycznych, m.in.:

Porównanie z SQL

Choć SQL operuje na tabelach i relacjach, MDX pracuje na kostkach i wymiarach. Najważniejsze różnice to:

CechaSQLMDX
Model danychRelacyjne (tabele)Wielowymiarowe (kostki)
Podstawowa jednostkaWierszTuple (zestaw członków wymiarów)
AgregacjeGROUP BYFunkcje agregujące w kontekście wymiarów
Słowo kluczowe SELECTOkreśla kolumnyOkreśla osie (COLUMNS, ROWS)
FiltrowanieWHEREWHERE (kontekst), slicery, FILTER()

Wersje i kompatybilność

MDX jest standardem de facto, jednak nie istnieje formalny, jednorodny standard ISO. Różne platformy mogą wprowadzać własne rozszerzenia, np.:

Problemy i ograniczenia

  • Składnia MDX może być trudna do opanowania dla osób przyzwyczajonych do SQL.
  • Optymalizacja zapytań wymaga znajomości architektury kostki i sposobu przechowywania agregatów.
  • Niektóre funkcje są zależne od konkretnego silnika (np. StrToMember w SSAS).

Przyszłość

Wraz z rosnącym znaczeniem modeli tabularnych i języka DAX (Data Analysis Expressions), MDX traci na popularności w nowych projektach, ale pozostaje kluczowym narzędziem w istniejących środowiskach OLAP opartych na kostkach. Wsparcie dla MDX jest przewidywane w kolejnych wersjach SQL Server oraz w platformie Azure Analysis Services.

Bibliografia i źródła

  1. „Multidimensional Expressions (MDX) Reference”, dokumentacja Microsoft Analysis Services.
  2. „MDX Solutions: With Microsoft SQL Server Analysis Services”, Tom Brune, 2002.
  3. „The MDX Query Language”, Henry Liu, 2004.

Powiązane pojęcia

OLAP | SQL | hurtownia danych | Microsoft Analysis Services | DAX | Power BI