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:
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:
Ao se conectar selecione o cubo FoodMart 2000. Na imagem abaixo exibe uma tela de exemplo.
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]