MultiDimensional eXpressions - MultiDimensional eXpressions

Multidimensional Expressions (MDX) é uma linguagem de consulta para processamento analítico online (OLAP) usando um sistema de gerenciamento de banco de dados . Muito parecido com o SQL , é uma linguagem de consulta para cubos OLAP . É também uma linguagem de cálculo, com sintaxe semelhante às fórmulas de planilhas.

Fundo

A linguagem MultiDimensional eXpressions (MDX) fornece uma sintaxe especializada para consultar e manipular os dados multidimensionais armazenados em cubos OLAP . Embora seja possível traduzir alguns deles em SQL tradicional, freqüentemente seria necessária a síntese de expressões SQL desajeitadas, mesmo para expressões MDX muito simples. O MDX foi adotado pela grande maioria dos fornecedores de OLAP e se tornou o padrão para sistemas OLAP.

História

O MDX foi introduzido pela primeira vez como parte da especificação OLE DB para OLAP em 1997 da Microsoft . Ele foi inventado pelo grupo de engenheiros do SQL Server , incluindo Mosha Pasumansky . A especificação foi rapidamente seguida pelo lançamento comercial do Microsoft OLAP Services 7.0 em 1998 e posteriormente pelo Microsoft Analysis Services . A versão mais recente da especificação OLE DB para OLAP foi emitida pela Microsoft em 1999.

Embora não fosse um padrão aberto, mas sim uma especificação de propriedade da Microsoft, foi adotado por uma ampla variedade de fornecedores de OLAP.

A especificação XML for Analysis se referia à especificação OLE DB para OLAP para obter detalhes sobre a linguagem de consulta MDX. No Analysis Services 2005, a Microsoft adicionou algumas extensões MDX Query Language como subseleções. Produtos como o Microsoft Excel 2007 começaram a usar essas novas extensões MDX Query Language. Alguns se referem a essa nova variante de MDX como MDX 2005.

mdXML

Em 2001, o Conselho XMLA lançou o padrão XML for Analysis (XMLA), que incluía mdXML como linguagem de consulta. Na especificação XMLA 1.1, mdXML é essencialmente MDX encapsulado na <Statement> marca XML .

Tipos de dados MDX

Existem seis tipos de dados primários em MDX

  • Escalar . Escalar é um número ou uma string . Pode ser especificado como literal, por exemplo, número 5 ou string "OLAP" ou pode ser retornado por uma função MDX, por exemplo, Aggregate (número), UniqueName (string), .Value (número ou string) etc.
  • Dimensão / Hierarquia . Dimensão é a dimensão de um cubo . Uma dimensão é um organizador primário de informações de medidas e atributos em um cubo. MDX não conhece, nem presume nenhuma, dependências entre dimensões - elas são consideradas mutuamente independentes. Uma dimensão conterá alguns membros (veja abaixo) organizados em alguma hierarquia ou hierarquias contendo níveis. Ele pode ser especificado por seu nome exclusivo, por exemplo, [Time] ou pode ser retornado por uma função MDX, por exemplo .Dimension . Hierarquia é uma hierarquia de dimensão de um cubo . Ele pode ser especificado por seu nome exclusivo, por exemplo, ou pode ser retornado por uma função MDX, por exemplo . Hierarquias estão contidas em dimensões. (A especificação OLEDB para OLAP MDX não faz distinção entre os tipos de dados de dimensão e hierarquia. Algumas implementações, como o Microsoft Analysis Services, os tratam de maneira diferente. ) [Time].[Fiscal].Hierarchy
  • Nível . Nível é um nível em uma hierarquia de dimensão. Ele pode ser especificado por seu nome exclusivo, por exemplo, [Time].[Fiscal].[Month] ou pode ser retornado por uma função MDX, por exemplo .Level .
  • Membro . Membro é um membro em uma hierarquia de dimensão. Ele pode ser especificado por seu nome original, por exemplo [Time].[Fiscal].[Month].[August 2006] , pelo nome qualificado, por exemplo, [Time].[Fiscal].[2006].[Q3].[August 2006] ou retornado por uma função MDX, por exemplo .PrevMember , .Parent , .FirstChild etc. Note-se que todos os membros são específicos para uma hierarquia. Se o mesmo produto for membro de duas hierarquias diferentes ( [Product].[ByManufacturer] e [Product].[ByCategory] ), haverá dois membros diferentes visíveis que podem precisar ser coordenados em conjuntos e tuplas (veja abaixo).
  • Tupla . Tupla é uma coleção ordenada de um ou mais membros de diferentes dimensões. As tuplas podem ser especificadas enumerando os membros, por exemplo, ([Time].[Fiscal].[Month].[August], [Customer].[By Geography].[All Customers].[USA], [Measures].[Sales]) ou retornadas por uma função MDX, por exemplo .Item .
  • Definir . Set é uma coleção ordenada de tuplas com a mesma dimensionalidade, ou hierarquia no caso de implementação da Microsoft. Pode ser especificado enumerando a tuplos, por exemplo, {([Measures].[Sales], [Time].[Fiscal].[2006]), ([Measures].[Sales], [Time].[Fiscal].[2007])} ou retornado por função ou operador MDX, por exemplo Crossjoin , Filter , Order , Descendants etc.
  • Outros tipos de dados. As propriedades dos membros são equivalentes aos atributos no sentido do data warehouse. Eles podem ser recuperados por nome em uma consulta por meio de uma cláusula PROPERTIES do eixo de uma consulta. O valor dos dados escalares de uma propriedade de membro para algum membro pode ser acessado em uma expressão por meio de MDX, nomeando a propriedade (por exemplo, [Product].CurrentMember.[Sales Price] ) ou usando uma função de acesso especial (por exemplo, [Product].CurrentMember.Properties("Sales Price") ). Em contextos limitados, o MDX também permite outros tipos de dados - por exemplo, Array pode ser usado dentro da SetToArray função para especificar um array que não é processado por MDX, mas passado para uma função definida pelo usuário em uma biblioteca ActiveX. Objetos de outros tipos de dados são representados como strings escalares indicando os nomes dos objetos, como o nome do grupo de medidas na MeasureGroupMeasures função da Microsoft ou o nome do KPI em, por exemplo, as funções KPIValue ou da Microsoft KPIGoal .

Consulta de exemplo

O exemplo a seguir, adaptado do SQL Server 2000 Books Online, mostra uma consulta MDX básica que usa a instrução SELECT. Esta consulta retorna um conjunto de resultados que contém os valores de vendas da loja de 2002 e 2003 para lojas no estado da Califórnia.

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

Neste exemplo, a consulta define as seguintes informações do conjunto de resultados

  • A cláusula SELECT define os eixos de consulta como o membro Store Sales da dimensão Measures e os membros 2002 e 2003 da dimensão Date.
  • A cláusula FROM indica que a fonte de dados é o cubo Vendas.
  • A cláusula WHERE define o "eixo de segmentação" como o membro Califórnia da dimensão Loja.

Observação: você pode especificar até 128 eixos de consulta em uma consulta MDX.

Se você criar dois eixos, um deve ser o eixo da coluna e o outro deve ser o eixo da linha, embora não importe em que ordem eles aparecem na consulta. Se você criar uma consulta que possui apenas um eixo, ele deve ser o eixo da coluna. Os colchetes ao redor do identificador de objeto específico são opcionais, desde que o identificador de objeto não seja uma das palavras reservadas e não contenha nenhum caractere além de letras, números ou sublinhados.

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

Referências

Leitura adicional

  • George Spofford, Sivakumar Harinath, Chris Webb, Dylan Hai Huang, Francesco Civardi: Soluções MDX: Com Microsoft SQL Server Analysis Services 2005 e Hyperion Essbase . Wiley, 2006, ISBN   0-471-74808-0
  • Mosha Pasumansky , Mark Whitehorn, Rob Zare: Fast Track to MDX . ISBN   1-84628-174-1
  • Larry Sackett: Relatórios e análises MDX com SAP NetWeaver BW . SAP Press, 2008, 978-1-59229-249-3

links externos