Neste artigo será utilizado Analysis Service para demonstração das consultas MDX com o cubo "Warehouse", exemplo fornecido pela ferramenta após a instalação.

A tecnologia OLAP é um método ágil e eficiente para gerenciar e armazenar todos os dados importantes da empresa mantendo. Um histórico possibilitando uma mineração de sobre os dados transformando-os em informações para análise e tomada de decisões.

Pode ser aplicado em diversas áreas como finanças, vendas e marketing. Utilizado em ferramentas de BI (Business Inteligence), como no Microsoft Analysis Service e MetaWarehouse Analytical Server.

Cubo é uma estrutura de uma base de dados de consultas gerencias voltado para a integração dos diversos registros de uma fonte de dados, possibilitando a visualização destes de forma multidimensional e desempenho.

Uma dimensão é um agregado de hierarquias orientado a um assunto que será objeto da análise e o tempo é sempre uma das dimensões consideradas, onde cada uma desta agrupa um conjunto de níveis conveniente para análise. Cada nível é um detalhe de uma hierarquia, que por sua vez agrupa membros. Membro é um dado qualitativo ou descritivo de um nível.

Abaixo, temos uma imagem para visualizar graficamente com detalhes à estrutura citada acima:

Dimensões com níveis hierárquicos

Podem-se visualizar três dimensões (Produto, Tempo, Região).

Na dimensão Região pode-ser observar uma única hierarquia com três níveis e vários membros.

No nível região, temos os membros Sul, Sudeste, Nordeste e outros. Detalhando o membro Nordeste, chegamos ao nível estado onde encontramos os membros Bahia, Ceará e outros.

A linguagem Multidimensional Expression (MDX) foi criada com propósito de manipular dados multidimensionais Analysis Services e outras ferramentas. Sua sintaxe possui uma semelhança com SQL.

Utilização:

  • Ferramentas de Business Inteligence.
  • Navegação em estruturas de uma fonte de dados OLAP.
  • DDL (linguagem de definição de dados).
  • Obtém informações sobre a estrutura do cubo com expressões MDX.
  • Permite utilizar membros e células calculadas.
  • Funcionalidade Drill-Through (Visualização mais detalhada referente a um dado qualitativo).
    • Ex.: 1.500 é o custo do cliente "Petrobrás" no ano de 2007.

      Com drill-through, poderemos observar, por exemplo, o telefone/código do cliente.

  • Baseado em dois eixos (Linhas e colunas).

Na prática:

Iremos iniciar o MDX Sample Application que é instalado junto ao Analysis Services e utilizar o cubo Warehouse.

Iniciar > Programas > Microsoft SQL Server > Analysis Service > MDX Sample application.

Será exibida uma tela solicitando o nome do servidor e o provider. Servidor=Nomde_da_Máquina Provider=MSOLAP

Veja no link a tela exibida:

SQL para OLAP

Ao se conectar selecione o cubo FoodMart 2000. Na imagem abaixo exibe uma tela de exemplo.

SQL para OLAP

Agora, iremos executar alguns comandos MDX no Analysis Service. Syntax básica MDX:


SELECT  <set> ON COLUMNS,

      <set> ON ROWS

      FROM [<cube_name>]

SET é definido por um conjunto de membros de uma dimensão ou um cruzamento várias dimensões. Exemplo 1:

Aqui está um exemplo básico de uma MDX filtrando pelo estado de Canadá utilizando a cláusula "WHERE".


SELECT

  { [Measures].[Warehouse Cost] } ON COLUMNS,

  { [Time].[1997], [Time].[1998] } ON ROWS

FROM [Warehouse]

WHERE ( [Warehouse].[All Warehouses].[USA].[CA] )

Observe o resultado retornado: Uma visão multidimensional. Exemplo 2:

No exemplo abaixo incluímos um membro calculado dinamicamente na MDX.

Criamos um membro chamado lucro onde está definido por "venda - custo" formatando sua saída. Exemplo 3:

Neste exemplo utilizaremos uma das funções mais utilizadas em MDX (CROSSJOIN).

Estamos cruzando todos os membros do nível ano, ou seja, todos os anos, pelo país "USA".


SELECT

  { [Measures].[Warehouse Sales], [Measures].[Warehouse Cost] } ON COLUMNS,

CROSSJOIN (

       { [Time].[Year].Members},

       { [Store].[Store Country].[USA] }

) ON ROWS

FROM [Warehouse]