BANCO DE DADOS MULTIDIMENSIONAIS CONSULTANDO O CUBO DE DADOS (MDX – SQL SERVER 2008) Banco de Dados Avançado - Prof.ª Valeria Times Andresson Firmino
Importando o Cubo de Dados O SQL Server 2008 possui dois tipos de servidor DataBase Engine Base de dados do ambiente transacional Analysis Service Base de dados multidimensional Por padrão 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 Avançado - Prof.ª Valéria Times
Importando o Cubo de Dados Para importar o cubo, no Analysis Service Clique Direito em Databases, Restore.. Na seção Restore Source, clique em Browser Especifique o Diretório e o nome do Arquivo OK, OK Clique Direito em Analysis Service, Refresh Cubo Importado Cin/UFPE - Banco de Dados Avançado - Prof.ª Valéria Times
Esquema Multidimensional do Cubo Cin/UFPE - Banco de Dados Avançado - Prof.ª Valéria Times
Consultando o Cubo de Dados Cin/UFPE - Banco de Dados Avançado - Prof.ª Valéria Times Para criar uma consulta Clique Direito em Analysis Service New Query, MDX Para executar a consulta Clique em execute
Consultando o Cubo de Dados Cin/UFPE - Banco de Dados Avançado - Prof.ª Valéria Times Minha primeira consulta MDX – Pontos importantes Resultados MDXs são sub-cubos Dimensões do cubo são mapeadas para eixos do sub-cubo Uma consulta MDX pode ter mais de um eixo. Porém, MDX Analysis Server só suporta no max. 2 (columns e rows) Dimensões não especificadas nos eixos podem aparecer no WHERE
Consultando o Cubo de Dados Cin/UFPE - Banco de Dados Avançado - Prof.ª Valéria Times Minha Primeira Consulta MDX Operação 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 -- OPERAÇÃO DE SLICE!!
Consultando o Cubo de Dados Cin/UFPE - Banco de Dados Avançado - Prof.ª Valéria Times Conceitos importantes Tuples Coleção de membros, os quais são de diferentes dimensões. Não suporta mais de um membro de uma mesma dimensão Sintaxe: ([Dim1].[Member], [Dim2].[Member], [Dim3].[Member]) Sets Conjunto de membros de um única dimensão Sintaxe: {[Dim].[Member], [Dim].[Member], [Dim].[Member]} ExecutaNão Executa SELECT {[DIM FUNCIONARIO].[Nome].[And resson], [DIM FUNCIONARIO].[Nome].[Car ol]} ON COLUMNS, {([DIM FILME].[Nome].children) }ON ROWS FROM [POINTFILMES] WHERE [DIM_TIME].[Year].firstChild SELECT ([DIM FUNCIONARIO].[Nome].[And resson], [DIM FUNCIONARIO].[Nome].[Car ol]) ON COLUMNS, ([DIM FILME].[Nome].children) ON ROWS FROM [POINTFILMES] WHERE [DIM_TIME].[Year].firstChild
Consultando o Cubo de Dados Cin/UFPE - Banco de Dados Avançado - Prof.ª Valéria Times Conceitos importantes Sets podem conter um conjunto de tuplas Ex: Atenção!!! Não se usa Set no WHERE. 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])
Consultando o Cubo de Dados Cin/UFPE - Banco de Dados Avançado - Prof.ª Valéria Times Conceitos importantes (vírgula X dois pontos) Com vírgula, Ex: o mesmo resultado utilizando dois pontos: SELECT {[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 {[DIM_TIME].[Month].[January 2006]: [DIM_TIME].[Month].[April 2006]} ON COLUMNS FROM [POINTFILMES]
Consultando o Cubo de Dados Cin/UFPE - Banco de Dados Avançado - Prof.ª Valéria Times Eliminando células vazias Com: Sem: SELECT {[DIM FUNCIONARIO].[Nome].[Andresson]} ON COLUMNS, ([DIM FILME].[Nome].children) ON ROWS FROM [POINTFILMES] WHERE ([DIM_TIME].[Year].firstChild, [DIM CLIENTE].[Sexo].[M]) 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])
Consultando o Cubo de Dados Cin/UFPE - Banco de Dados Avançado - Prof.ª Valéria Times Ordenando o resultado de uma consulta Classificando o resultado SELECT ORDER( {[DIM_TIME].[Month].[January 2006]: [DIM_TIME].[Month].[April 2006]},[Measures].[Valor],DESC)ON COLUMNS FROM [POINTFILMES] SELECT TOPCOUNT( {[DIM FUNCIONARIO].[Nome].children},[Measures].[FATOS Count],10) ON COLUMNS FROM [POINTFILMES]
Consultando o Cubo de Dados Cin/UFPE - Banco de Dados Avançado - Prof.ª Valéria Times Navegando em uma hierarquia Obter o número de alugueis de cada cliente durante os anos. Mas, para o ano de 2007 descer um nível, de modo a exibir também os valores nos semestre de 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]
Consultando o Cubo de Dados Cin/UFPE - Banco de Dados Avançado - Prof.ª Valéria Times Navegando em uma hierarquia Os cinco filmes mais alugados e exibir as suas quantidades de locações 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
Consultando o Cubo de Dados Cin/UFPE - Banco de Dados Avançado - Prof.ª Valéria Times Mais de uma dimensão por eixo ou Cuidado com o CROSSJOIN operação muito custosa!!! SELECT CROSSJOIN([DIM CLIENTE].[Nome].children, [DIM FUNCIONARIO].[Nome].children) ON COLUMNS FROM PointFilmes SELECT ([DIM CLIENTE].[Nome].children, [DIM FUNCIONARIO].[Nome].children) ON COLUMNS FROM PointFilmes
Exercícios Cin/UFPE - Banco de Dados Avançado - Prof.ª Valéria Times Qual o número de locações para o filme Central do Brasil? Qual o número de locações para o filme Central do Brasil e Código da Vinci? Qual o número de locações do funcionário Andresson no mês de Outubro de 2009? Qual o número de locações do funcionário Andresson no mês de Outubro de 2009 para o filme Central do Brasil?
Exercícios Cin/UFPE - Banco de Dados Avançado - Prof.ª Valéria Times Qual o valor dos aluguéis para todos os filmes em todos os semestres? Qual o valor dos aluguéis para todos os filmes em todos os semestres para os clientes do sexo feminino? Qual o valor dos aluguéis para todos os filmes por ano e semestre? Quais os10 filmes mais alugados em 2009 e seu respectivos número de locações?
Exercícios Cin/UFPE - Banco de Dados Avançado - Prof.ª Valéria Times Quais os número de locações dos10 filmes mais alugados em 2009 para com os 5 clientes que fizeram mais locações em 2009? Qual o valor dos aluguéis para todos os filmes nos meses das férias ? Agora, crie suas próprias consultas e pratique bastante.
Referências Multidimensional Expressions (MDX) Reference Kimball, Ralph e Ross, Margy The Data Warehouse Toolkit. 2ª Edição. s.l. : Wiley Computer Publishing, MultiDimensional eXpressions - Wikipedia, the free encyclopedia. Wikipedia. Nolan, Carl. Introduction to Multidimensional Expression (MDX). s.l. : Microsoft Corporation. Spofford, George, et al MDx Solutions: With Microsoft SQL Server Analysis Services 2005 and Hyperion Essbase. s.l. : Wiley Publishing, Inc., 2006.
Próxima Aula Cin/UFPE - Banco de Dados Avançado - Prof.ª Valéria Times Construindo o Cubo de Dados Especificação do Projeto.
Dúvidas Cin/UFPE - Banco de Dados Avançado - Prof.ª Valéria Times