MultiDimensional eXpressions - MultiDimensional eXpressions

Multidimensional Expressions (MDX) er et forespørgselssprog til online analytisk behandling (OLAP) ved hjælp af et databasestyringssystem . Meget som SQL er det et forespørgselssprog for OLAP-kuber . Det er også et beregningssprog med syntaks svarende til regnearkformler.

Baggrund

MDX-sproget (MultiDimensional eXpressions) giver en specialsyntaks til forespørgsel og manipulation af de flerdimensionelle data, der er gemt i OLAP-terninger . Selvom det er muligt at oversætte nogle af disse til traditionel SQL, vil det ofte kræve syntese af klodset SQL-udtryk, selv for meget enkle MDX-udtryk. MDX er blevet omfavnet af et stort flertal af OLAP-leverandører og er blevet standarden for OLAP-systemer.

Historie

MDX blev først introduceret som en del af OLE DB til OLAP- specifikationen i 1997 fra Microsoft . Det blev opfundet af gruppen af SQL Server- ingeniører, herunder Mosha Pasumansky . Specifikationen blev hurtigt efterfulgt af kommerciel frigivelse af Microsoft OLAP Services 7.0 i 1998 og senere af Microsoft Analysis Services . Den seneste version af OLE DB til OLAP- specifikationen blev udgivet af Microsoft i 1999.

Selvom det ikke var en åben standard, men snarere en Microsoft-ejet specifikation, blev den vedtaget af en lang række OLAP-leverandører.

XML til analyse-specifikationen henviste tilbage til OLE DB for OLAP-specifikationen for detaljer om MDX Query Language. I Analysis Services 2005 tilføjede Microsoft nogle MDX Query Language-udvidelser som undervalg. Produkter som Microsoft Excel 2007 begyndte at bruge disse nye MDX Query Language-udvidelser. Nogle henviser til denne nyere variant af MDX som MDX 2005.

mdXML

I 2001 udgav XMLA Council XML for Analysis (XMLA) -standarden, som omfattede mdXML som forespørgselssprog. I XMLA 1.1-specifikationen er mdXML i det væsentlige MDX indpakket i XML- <Statement> tagget.

MDX datatyper

Der er seks primære datatyper i MDX

  • Skalar . Skalar er enten et tal eller en streng . Det kan specificeres som en bogstavelig, fx nummer 5 eller streng "OLAP", eller den kan returneres af en MDX-funktion, f.eks. Aggregate (Nummer), UniqueName (streng), .Value (nummer eller streng) osv.
  • Dimension / hierarki . Dimension er en dimension af en terning . En dimension er en primær organisator af måle- og attributinformation i en terning. MDX kender ikke til og antager heller ingen afhængigheder mellem dimensioner - de antages at være indbyrdes uafhængige. En dimension vil indeholde nogle medlemmer (se nedenfor) organiseret i et eller andet hierarki eller hierarkier, der indeholder niveauer. Det kan specificeres ved sit unikke navn, f.eks. [Time] Eller det kan returneres med en MDX-funktion, f.eks .Dimension . Hierarkiet er en dimension hierarki af en terning . Det kan specificeres ved dets unikke navn, f.eks. [Time].[Fiscal] Eller det kan returneres med en MDX-funktion, f.eks .Hierarchy . Hierarkier er indeholdt i dimensioner. ( OLEDB til OLAP MDX-specifikation skelner ikke mellem dimension- og hierarkidatatyper. Nogle implementeringer, såsom Microsoft Analysis Services, behandler dem forskelligt. )
  • Niveau . Niveau er et niveau i et dimensionshierarki. Det kan specificeres ved sit unikke navn, f.eks. [Time].[Fiscal].[Month] Eller det kan returneres med en MDX-funktion, f.eks .Level .
  • Medlem . Medlem er medlem i et dimensionshierarki. Det kan angives ved sin unikke navn, f.eks [Time].[Fiscal].[Month].[August 2006] med kvalificeret navn, f.eks [Time].[Fiscal].[2006].[Q3].[August 2006] eller returneres af en MDX-funktion, fx .PrevMember , .Parent , .FirstChild osv Bemærk at alle medlemmer er specifikke for et hierarki. Hvis det samme produkt er medlem af to forskellige hierarkier ( [Product].[ByManufacturer] og [Product].[ByCategory] ), vil der være to forskellige medlemmer synlige, som muligvis skal koordineres i sæt og tupler (se nedenfor).
  • Tuple . Tuple er en ordnet samling af et eller flere medlemmer fra forskellige dimensioner. Tuples kan specificeres ved at opregne medlemmerne, f.eks. ([Time].[Fiscal].[Month].[August], [Customer].[By Geography].[All Customers].[USA], [Measures].[Sales]) Eller returneres af en MDX-funktion, f.eks .Item .
  • Indstil . Sæt er en ordnet samling af tupler med samme dimensionalitet eller hierarkalitet i tilfælde af Microsofts implementering. Det kan angives optælle tupler, f.eks {([Measures].[Sales], [Time].[Fiscal].[2006]), ([Measures].[Sales], [Time].[Fiscal].[2007])} eller returneres af MDX funktion eller operatør, fx Crossjoin , Filter , Order , Descendants etc.
  • Andre datatyper. Medlemsegenskaber svarer til attributter i datalagerforstanden. De kan hentes ved navn i en forespørgsel gennem en akse-PROPERTIES-sætning i en forespørgsel. Den skalære dataværdi for en medlemsegenskab for et eller andet medlem kan tilgås i et udtryk via MDX, enten ved at navngive egenskaben (for eksempel [Product].CurrentMember.[Sales Price] ) eller ved at bruge en særlig adgangsfunktion (for eksempel [Product].CurrentMember.Properties("Sales Price") ). I begrænsede sammenhænge tillader MDX også andre datatyper - for eksempel kan Array bruges inde i SetToArray funktionen til at specificere et array, der ikke behandles af MDX, men sendes til en brugerdefineret funktion i et ActiveX-bibliotek. Objekter af andre datatyper er repræsenteret som skalarstrenge, der angiver objektnavne, såsom målgruppenavn i Microsofts MeasureGroupMeasures funktion eller KPI-navn i for eksempel Microsofts KPIValue eller KPIGoal funktioner.

Eksempel på forespørgsel

Følgende eksempel, tilpasset fra SQL Server 2000 Books Online, viser en grundlæggende MDX-forespørgsel, der bruger SELECT-sætningen. Denne forespørgsel returnerer et resultatsæt, der indeholder salgssummen for 2002 og 2003 for butikker i staten Californien.

SELECT
   { [Measures].[Store Sales] } ON COLUMNS,
   { [Date].[2002], [Date].[2003] } ON ROWS
FROM Sales
WHERE ( [Store].[USA].[CA] )

I dette eksempel definerer forespørgslen følgende resultatsætoplysninger

  • SELECT-klausulen indstiller forespørgseakserne som Store Sales-medlem af dimensionen Measures og medlemmerne 2002 og 2003 af dimensionen Date.
  • FROM-klausulen angiver, at datakilden er salgskuben.
  • WHERE-klausulen definerer "skæreaksen" som Californiens medlem af Store-dimensionen.

Bemærk: Du kan angive op til 128 forespørgseakser i en MDX-forespørgsel.

Hvis du opretter to akser, skal den ene være søjleaksen og den ene være rækkeaksen, selvom det ikke betyder noget i hvilken rækkefølge de vises i forespørgslen. Hvis du opretter en forespørgsel, der kun har en akse, skal den være søjleaksen. De firkantede parenteser omkring den bestemte objektidentifikator er valgfri, så længe objektidentifikatoren ikke er et af de reserverede ord og ellers ikke indeholder andre tegn end bogstaver, tal eller understregninger.

SELECT
    [Measures].[Store Sales] ON COLUMNS,
    [Date].Members ON ROWS
FROM Sales
WHERE ( [Store].[USA].[CA] )

Referencer

Yderligere læsning

  • George Spofford, Sivakumar Harinath, Chris Webb, Dylan Hai Huang, Francesco Civardi: MDX-løsninger: Med Microsoft SQL Server Analysis Services 2005 og Hyperion Essbase . Wiley, 2006, ISBN   0-471-74808-0
  • Mosha Pasumansky , Mark Whitehorn, Rob Zare: Fast Track til MDX . ISBN   1-84628-174-1
  • Larry Sackett: MDX-rapportering og analyse med SAP NetWeaver BW . SAP Press, 2008, 978-1-59229-249-3

eksterne links