Você está na página 1de 21

BANCO DE DADOS

MULTIDIMENSIONAIS
CONSULTANDO O CUBO
DE DADOS
(MDX SQL SERVER
2008)
Andresson Firmino

Banco de Dados Avanado - Prof. Valeria Times

Importando o Cubo de
Dados

O SQL Server 2008 possui dois tipos de servidor


DataBase Engine
Base

Analysis Service
Base

de dados do ambiente transacional


de dados multidimensional

Por padro apenas o DataBase Engine


carregado
Para carregar o Analysis Service
Menu File => Connect Object Explorer
Server Type: Analysis Service
Connect
Cin/UFPE - Banco de Dados Avanado - Prof. Valria Times

Importando o Cubo de
Dados

Para importar o cubo, no Analysis Service

Clique Direito em Databases, Restore..


Na seo Restore Source, clique em Browser
Especifique o Diretrio e o nome do Arquivo
OK, OK
Clique Direito em Analysis Service, Refresh

Cubo Importado

Cin/UFPE - Banco de Dados Avanado - Prof. Valria Times

Esquema Multidimensional do Cubo

Cin/UFPE - Banco de Dados Avanado - Prof. Valria Times

Consultando o Cubo de
Dados

Para criar uma consulta

Clique Direito em Analysis Service


New Query, MDX

Para executar a consulta

Clique em execute

Cin/UFPE - Banco de Dados Avanado - Prof. Valria Times

Consultando o Cubo de
Dados

Minha primeira consulta MDX Pontos importantes

Resultados MDXs so sub-cubos

Dimenses do cubo so mapeadas para eixos do sub-cubo

Uma consulta MDX pode ter mais de um eixo. Porm,


MDX Analysis Server s suporta no max. 2 (columns e
rows)

Dimenses no especificadas nos eixos podem aparecer


no WHERE
Cin/UFPE - Banco de Dados Avanado - Prof. Valria Times

Consultando o Cubo de
Dados

Minha Primeira Consulta MDX

Operao Slice

Os clientes e os filmes alugados no


primeiro ano.

SELECT
([DIM CLIENTE].[Nome].children) ON COLUMNS,
([DIM FILME].[Nome].children) ON ROWS
FROM [POINTFILMES]
WHERE [DIM_TIME].[Year].firstChild -- OPERAO DE SLICE!!

Cin/UFPE - Banco de Dados Avanado - Prof. Valria Times

Consultando o Cubo de
Dados

Conceitos importantes

Tuples
Coleo

de membros, os quais so de diferentes


Executa
No Executa
dimenses.

No suporta mais de um membro


de uma mesma dimenso
SELECT
SELECT

Sintaxe:

([Dim1].[Member], [Dim2].[Member], [Dim3].


([DIM FUNCIONARIO].
[Member])

{[DIM FUNCIONARIO].
[Nome].[Andresson],
Sets

[Nome].[Andresson],

Conjunto de membros de [DIM


um nica
dimenso
[DIM FUNCIONARIO].
FUNCIONARIO].
Sintaxe:

{[Dim].[Member], [Dim].[Member], [Dim].


[Nome].[Carol]} ON
[Nome].[Carol]) ON
[Member]}
Cin/UFPE - Banco de Dados Avanado - Prof. Valria
Times
COLUMNS,
COLUMNS,

Consultando o Cubo de
Dados

Conceitos importantes

Sets podem conter um conjunto de tuplas


Ex:

SELECT
{([DIM FUNCIONARIO].[Nome].[Andresson]),
([DIM FUNCIONARIO].[Nome].[Carol])} ON COLUMNS,
([DIM FILME].[Nome].children) ON ROWS
FROM [POINTFILMES]
WHERE ([DIM_TIME].[Year].firstChild, [DIM CLIENTE].[Sexo].[M])

Ateno!!! No se usa Set no WHERE.

Cin/UFPE - Banco de Dados Avanado - Prof. Valria Times

Consultando o Cubo de
Dados

Conceitos importantes (vrgula X dois


pontos)
SELECT
Com

vrgula, Ex:

{[DIM_TIME].[Month].[January 2006],
[DIM_TIME].[Month].[February 2006],
[DIM_TIME].[Month].[March 2006],
[DIM_TIME].[Month].[April 2006]
} ON COLUMNS
FROM [POINTFILMES]

SELECT
o mesmo

resultado utilizando dois pontos:

{[DIM_TIME].[Month].[January 2006]:
[DIM_TIME].[Month].[April 2006]
} ON COLUMNS
FROM [POINTFILMES]

Cin/UFPE - Banco de Dados Avanado - Prof. Valria Times

Consultando o Cubo de
Dados

Eliminando clulas vazias

Com:

SELECT
{[DIM FUNCIONARIO].[Nome].[Andresson]} ON COLUMNS,
([DIM FILME].[Nome].children) ON ROWS
FROM [POINTFILMES]
WHERE ([DIM_TIME].[Year].firstChild, [DIM CLIENTE].[Sexo].[M])

Sem:

SELECT
{[DIM FUNCIONARIO].[Nome].[Andresson]} ON COLUMNS,
NON EMPTY([DIM FILME].[Nome].children) ON ROWS
FROM [POINTFILMES]
WHERE ([DIM_TIME].[Year].firstChild, [DIM CLIENTE].[Sexo].[M])
Cin/UFPE - Banco de Dados Avanado - Prof. Valria Times

Consultando o Cubo de
Dados

Ordenando o resultado de uma consulta

SELECT
ORDER(
{[DIM_TIME].[Month].[January 2006]: [DIM_TIME].[Month].[April 2006]}
,[Measures].[Valor] ,DESC)ON COLUMNS
FROM [POINTFILMES]

Classificando o resultado
SELECT
TOPCOUNT(
{[DIM FUNCIONARIO].[Nome].children}
,[Measures].[FATOS Count],10) ON COLUMNS
FROM [POINTFILMES]

Cin/UFPE - Banco de Dados Avanado - Prof. Valria Times

Consultando o Cubo de
Dados

Navegando em uma hierarquia

Obter o nmero de alugueis de cada cliente


durante os anos. Mas, para o ano de 2007
descer um nvel, de modo a exibir tambm
os valores nos semestre de 2007.

SELECT DrilldownMember
( [DIM_TIME].[Year - Half Year - Quarter - Month - Date].children,
{[DIM_TIME].[Year - Half Year - Quarter - Month - Date].[Year].[Calendar 2007]}
) ON 0,
[DIM FUNCIONARIO].[Nome].children ON 1
FROM [PointFilmes] WHERE [Measures].[FATOS Count]

Cin/UFPE - Banco de Dados Avanado - Prof. Valria Times

Consultando o Cubo de
Dados

Navegando em uma hierarquia

Os cinco filmes mais alugados e exibir as


suas quantidades de locaes ao longo dos
trimestres e meses.

SELECT DRILLDOWNLEVEL(
{[DIM_TIME].[Year - Half Year - Quarter - Month - Date].[Quarter].members}) ON
COLUMNS,
TOPCOUNT([DIM FILME].[Nome].children, 5, [Measures].[FATOS Count]) ON ROWS
FROM PointFilmes

Cin/UFPE - Banco de Dados Avanado - Prof. Valria Times

Consultando o Cubo de
Dados

Mais de uma dimenso por eixo


SELECT
CROSSJOIN([DIM CLIENTE].[Nome].children,
[DIM FUNCIONARIO].[Nome].children) ON COLUMNS
FROM PointFilmes

ou

SELECT
([DIM CLIENTE].[Nome].children,
[DIM FUNCIONARIO].[Nome].children) ON COLUMNS
FROM PointFilmes

Cuidado com o CROSSJOIN operao muito


custosa!!!

Cin/UFPE - Banco de Dados Avanado - Prof. Valria Times

Exerccios

Qual o nmero de locaes para o filme


Central do Brasil?
Qual o nmero de locaes para o filme
Central do Brasil e Cdigo da Vinci?
Qual o nmero de locaes do
funcionrio Andresson no ms de
Outubro de 2009?
Qual o nmero de locaes do
funcionrio Andresson no ms de
Outubro de 2009 para o filme Central do
Cin/UFPE - Banco de Dados Avanado - Prof. Valria Times
Brasil?

Exerccios

Qual o valor dos aluguis para todos os


filmes em todos os semestres?
Qual o valor dos aluguis para todos os
filmes em todos os semestres para os
clientes do sexo feminino?
Qual o valor dos aluguis para todos os
filmes por ano e semestre?
Quais os10 filmes mais alugados em
2009 e seu respectivos nmero de
locaes?
Cin/UFPE - Banco de Dados Avanado - Prof. Valria Times

Exerccios

Quais os nmero de locaes dos10


filmes mais alugados em 2009 para com
os 5 clientes que fizeram mais locaes
em 2009?
Qual o valor dos aluguis para todos os
filmes nos meses das frias 2006-2007?
Agora, crie suas prprias consultas e
pratique bastante.

Cin/UFPE - Banco de Dados Avanado - Prof. Valria Times

Referncias

Multidimensional Expressions (MDX) Reference


http://msdn.microsoft.com/enus/library/ms145506.aspx

Kimball, Ralph e Ross, Margy. 2002. The Data


Warehouse Toolkit. 2 Edio. s.l.: Wiley Computer
Publishing, 2002.

MultiDimensional eXpressions - Wikipedia, the


free encyclopedia. Wikipedia.
http://en.wikipedia.org/wiki/MultiDimensional_eXpressi
ons.

Nolan, Carl. Introduction to Multidimensional


Expression (MDX). s.l.: Microsoft Corporation.

Spofford, George, et al. 2006. MDx Solutions: With


Microsoft SQL Server Analysis Services 2005 and

Prxima Aula

Construindo o Cubo de Dados


Especificao do Projeto.

Cin/UFPE - Banco de Dados Avanado - Prof. Valria Times

Dvidas

Cin/UFPE - Banco de Dados Avanado - Prof. Valria Times

Você também pode gostar