Linguagem MDX. Linguagem MDX Introdução 2 MULTIDIMENTIONAL EXPRESSIONS. Microsoft, década de 90. Criação de relatórios



Documentos relacionados
DML - SELECT Agrupando Dados

NOME SEXO CPF NASCIMENTO SALARIO

Uma expressão básica em SQL consiste em três cláusulas: select, from e where.

SQL Linguagem de Manipulação de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Tarefa Orientada 13 Agrupamento e sumário de dados

SQL DML. Frederico D. Bortoloti

UNIVERSIDADE FEDERAL DE SANTA MARIA - UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN BANCO DE DADOS II

Bem-vindo ao tópico sobre consultas no SAP Business One.

Linguagem de Consulta Estruturada SQL- DML

Comandos de Manipulação

Prof.: Clayton Maciel Costa

Tarefa Orientada 11 Junção Interna

Bases de Dados. DML Data Manipulation Language Parte 1

LINGUAGEM SQL PARA CONSULTAS EM MICROSOFT ACCESS

Consultas SQL Parte II

EXERCÍCIOS PRÁTICOS. Banco de Dados

IF685 Gerenciamento de Dados e Informação - Prof. Robson Fidalgo 1

Definida pelo American National Standard Institute (ANSI) em 1986

Tarefa Orientada 14 Subconsultas

Banco de Dados I Linguagem SQL Parte 2. Autor: Prof. Cláudio Baptista Adaptado por: Prof. Ricardo Antonello

SQL UMA ABORDAGEM INTERESSANTE

Pedro F. Carvalho OCP Oracle g LINGUAGEM SQL. São José do Rio Preto

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

Linguagem de Consulta - SQL

Curso PHP Aula 08. Bruno Falcão

Java Persistence Query Language JPQL

No cálculo de porcentagem com operações financeiras devemos tomar muito cuidado para verificar sobre quem foi calculada essa porcentagem.

SQL Comandos para Relatórios e Formulários. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Álgebra Relacional. Conjunto de operações que usa uma ou duas relações como entrada e gera uma relação de saída. Operações básicas:

António Rocha Nuno Melo e Castro

3) Palavra-chave distinct (select-from). Obter apenas os pibs distintos entre si.

EXERCÍCIOS SQL Laboratório

Múltiplas Tabelas. Disciplina de Banco de Dados

Structured Query Language (SQL)

Principais Comandos SQL Usados no MySql

f. Vocês podem selecionar todos os campos indicando-os, ou seja, sem usar * (boa prática) g. Muito relevante na manutenção de BD e de aplicações.

Tarefa Orientada 10 Obter informação a partir de uma tabela

Departamento de Ciências de Computação SCC Instituto de Ciências Matemáticas e de Computação ICMC Universidade de São Paulo USP

1. SQL Instrumental Select Delete Update Insert Group by Having Unnion All...

Structured Query Language (SQL) SQL é uma linguagem normalizada (ANSI) para consultas e actualizações de bases de dados relacionais.

Introdução ao SQL Avançado

Criando Itens Calculados

Linguagem de Banco de Dados DML Exercícios

SQL Avançado Continuação. Renata Viegas

Introdução aos cálculos de datas

Query SQL (Structured Query Language)

Prof. Ronaldo R. Goldschmidt. geocities.yahoo.com.br/ronaldo_goldschmidt

Linguagem SQL - Structured Query Language

BDII SQL Junção Revisão 8

Ex.: INSERT INTO tmpautor (CDAUTOR, NMAUTOR) VALUES (1, Renato Araújo )

Linguagem SQL - Structured Query Language

Comandos DDL. id_modulo = id_m odulo

Principais Instruções em SQL

Lição 1 - Criação de campos calculados em consultas

BANCO DE DADOS -INTRODUÇÃO AO SQL. Prof. Angelo Augusto Frozza, M.Sc.

Introdução aos critérios de consulta. Um critério é semelhante a uma fórmula é uma cadeia de caracteres que pode consistir em

SQL Structured Query Language

Ferramentas Livres de Armazenamento e Mineração de Dados

RELATÓRIOS GERENCIAIS

Projeto de Banco de Dados

Texto Base Livro texto: SQL Guia Prático 2ª Edição Rogério Luís de C. Costa. Banco de Dados II Comando Select. Gustavo Dibbern Piva

LABORATÓRIO DE BANCO DE DADOS

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

Nome: n.º WEB Série 2B 2C 2D 2E Barueri, 17/08/2009 2ª Postagem Disciplina: Gerenciamento e Estrutura de Banco de Dados Professor: Márcio

Exercícios com o intuito de cobrar todos os assuntos vistos em sala, relativos à Modelagem Conceitual, SQL, PL e XML. 1ª ETAPA

Tarefa Orientada 12 Junção Externa, Auto-Junção e União

Banco de Dados. Prof. Antonio

Instruções para a atividade

Portal Sindical. Manual Operacional Empresas/Escritórios

Projeto e Implementação

Treinamento sobre SQL

Banco de Dados. Microsoft Access. Índice

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita:

Banco de Dados I. SQL SELECT Parte 1 - Básico. Prof. Moser Fagundes. Curso TSI Instituto Federal Sul-Rio-Grandense (IFSul) Campus Charqueadas

EDITORA FERREIRA MP/RJ_EXERCÍCIOS 01

Linguagem de Consulta - SQL

Prova de Fundamentos de Bancos de Dados 2 a Prova

SQL Consultas Básicas

Roteiro 9 - SQL Básico: chave estrangeira, operadores de comparação e operadores booleanos

PowerPivot FÁBIO ÁVILA / THIAGO CARVALHO

Cenários do CEL. Acessar ao sistema

Linguagem SQL (Parte I)

Manual de Administração Intranet BNI

Planilha Eletrônica. = Usado para iniciar fórmulas e Somente no MS Excel permite iniciar funções. ^ Usado para expoente e raiz

INTRODUÇÃO À MATEMÁTICA FINANCEIRA

SDSS SQL. Walter A. Santos Jr. IAG/USP

SQL BANCO DE DADOS. Linguagem de consulta SQL. Linguagem de consulta SQL. Linguagem de Consulta Estruturada

SQL. Prof. Márcio Bueno.

Manual Verba Conceito de verba. Funcionamento Básico

Orientação a Objetos

Sistemas de Organização Sonora

Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: Prof. Dr. Raimundo Moura

Engenharia de Software e Sistemas Distribuídos. Enunciado Geral do Projecto

Programação WEB II. PHP e Banco de Dados. progweb2@thiagomiranda.net. Thiago Miranda dos Santos Souza

Bases de Dados 2007/2008. Aula 1. Referências

Universidade de Pernambuco Escola Politécnica de Pernambuco. Ciclo Profissional. Banco de Dados NF

Uso de interfaces amigáveis para elaboração de consultas a sistemas OLAP

SQL (Structured Querie Language) Escola Secundária de Emídio Navarro 2001/2002 Estruturas, Tratamento e Organização de Dados

DESENVOLVIMENTO DE SOFTWARE

Notas sobre o MySQL: Resumo dos comandos no MySQL linha de comandos:

Transcrição:

1 MULTIDIMENTIONAL EXPRESSIONS Introdução 2 Microsoft, década de 90. Criação de relatórios Business Intelligence --> gestão de negócio 1

Introdução 3 MDX x SQL MDX surgiu através de SQL 4 Sintaxe: <mdx_expression> ON COLUMNS //0 <mdx_expression> ON ROWS //1 <mdx_expression> ON PAGES //2 FROM <nome_cubo> WHERE <slicer_expression> 2

MDX x SQL 5 Ambas possuem funções para cálculos. Diferentes fontes de consulta. MDX não defini dados. MDX navega em hierarquia. Cubo [Dimensões] + Dimensão [Membros] + [Hieraquia] Hierarquia [Nível] + Nível [Membros] + Membros [Filhos] + Conceitos necessários 6 3

Navegar no cubo: Dimensao.<Sintaxe Member> <Sintaxe Member> = Membro.[nome do filho função] Navegar em uma hierarquia Dimensao.HIERARQUIA. [ Nivel. <Sintaxe Member> <Sintaxe Member> ] Cuidado com abreviações Ano 2010 e 2011 Tempo.[Hierarquia Tempo].Ano.Semestre.1 Semestre 1 de qual ano? Conceitos necessários 7 Colchetes - [ ] - Espaços em branco Números Caracteres Selecionar um única célula Relacionar membros de todas as dimensões 8 ( ) [Produto]. [Milho], Tempo. Maio, [Loja]. [Recife] 4

Selecionar um conjunto Realacionar um ou mais membros da mesma dimensão membros de outras. ( ) 9 { ( [Tempo]. [Abril], [Loja]. [Recife], [Produto]. [Milho] ), ( [Tempo]. [Maio], [Loja] [Loja]. [Recife],. [Recife], [Produto] [Produto]. [Milho]. [Milho] ), ( [Tempo]. [Junho], [Loja]. [Recife], [Produto]. [Milho] ), ( [Tempo]. [Julho], [Loja]. [Recife], [Produto]. [Milho] ) } 10 5

11 12 6

Função Children Função Children Retorna o conjunto dos filhos de um membro especificado. Caso o membro não possua uma hierarquia, um conjunto vazio será retornado. Sintaxe: [Dim].[Membro].Children Exemplo: Qual o valor arrecado nos dois primeiros trimestres do ano de 2006? 13 Função Children 14 [Year - Half Year - Quarter - Month - Date]. [Half Year]. [Semester 1, 2006].CHILDREN ON COLUMNS, [Measures].[Valor] ON ROWS FROM POINTFILMES 7

Função FirstChild Função FirstChild 15 Retorna o primeiro membro filho de um membro especificado. Sintaxe: [Dim].[Membro].FirstChild Exemplo: Qual o valor arrecadado somente no primeiro trimestre do ano de 2006? Função FirstChild 16 [Year - Half Year - Quarter - Month - Date]. [Half Year]. [Semester 1, 2006]. FIRSTCHILD ON COLUMNS FROM POINTFILMES 8

LastChild Função LastChild 17 Retorna o último membro filho de um membro especificado. Sintaxe: [Dim].[Membro].LastChild Exemplo: qual o valor arrecado no segundo semestre de 2006? Função LastChild 18 [Year - Half Year - Quarter - Month - Date]. [Calendar 2006].LASTCHILD ON COLUMNS FROM POINTFILMES 9

Função Parent Função Parent 19 Retorna o membro pai de um membro especificado. O pai do membro especificado é o mesmo pai do nível ao qual o membro pertence. Sintaxe: [Dim].[Membro].Parent Exemplo: qual o valor arrecado no segundo semestre de 2006? Obs.: Consulta igual a da função. Mostrando que é possível conseguir um mesmo resultado com diferentes formas de navegar na hierarquia. Função Parent 20 [Year - Half Year - Quarter - Month - Date]. [Quarter]. [Quarter 3, 2006].PARENT ON COLUMNS FROM POINTFILMES 10

Função Descendants Função Descendants 21 Retorna um conjunto de descendentes de um membro em um determinado nível. Os argumentos necessários são: um nível de uma hierarquia, e o membro do qual se deseja obter os descendentes. Sintaxe: Descendants( membro, nível ) Exemplo 1: qual o valor que cada funcionário arrecadou com as locações em cada trimestre de 2006? Função Descendants 1 22 [DIM FUNCIONARIO].[Nome].children ON 1, DESCENDANTS ( [Year - Half Year - Quarter - Month - Date].[Year].[Calendar 2006], [Year - Half Year - Quarter - Month - Date]. [Quarter] )ON 0 FROM [POINTFILMES] 11

Função Descendants 2 23 Exemplo 2: qual a quantidade de locações que cada funcionário realizou, em cada trimestre do ano 2006? [DIM FUNCIONARIO].[Nome].children ON Rows, DESCENDANTS ( [Year - Half Year - Quarter - Month - Date].[Year].[Calendar 2006], [Year - Half Year - Quarter - Month - Date].[Quarter] )ON Columns FROM [POINTFILMES] WHERE [Measures].[FATOS Count] Função Descendants (Variações) 24 Variações ( 1 ): com mesmo retorno do exemplo 2. Sintaxe: Descendants( membro, número ) [DIM FUNCIONARIO].[Nome].children ON 1, DESCENDANTS ( [Year - Half Year - Quarter - Month - Date]. [Year]. [Calendar 2006], 2 ) ON 0 FROM [POINTFILMES] WHERE [Measures].[FATOS Count] 12

Variações ( 2 ): Função Descendants (Variações) 25 retorna o próprio membro e seus descendentes. Sintaxe: Descendants( [nível membro] ) [DIM FUNCIONARIO].[Nome].children ON 1, DESCENDANTS ( [Year - Half Year - Quarter - Month - Date]. [January 2006] )ON 0 FROM [POINTFILMES] WHERE [Measures].[FATOS Count] Função CurrentMember 26 Função CurrentMember Em cada passo de uma iteração recuperamos o membro que está sendo utilizado através da função CurrentMember. Sintaxe: Hierarchy_Expression.CurrentMember Exemplo apresentado no próximo item (Criar Membro Calculado) 13

Membro Calculado Reuso de código Simplificar consultas (*) Membro Calculado 27 Sintaxe: WITH <Select With Clause> consulta_mdx <Select With Clause> ::= [ MEMBER identifier AS mdx_expression SET identifier AS set_expression ] + Membro Calculado 28 Exemplo: qual o valor percentual arrecadado em cada mês, em relação ao seu trimestre? WITH MEMBER Measures.ValorPercentual AS ( [Year - Half Year - Quarter - Month - Date].CURRENTMEMBER, [Measures].[Valor] ) / ( [Year - Half Year - Quarter -Month-Date].CURRENTMEMBER.Parent, [Measures].[Valor] ) * 100 14

Membro Calculado 29 Measures.ValorPercentual ON COLUMNS, Descendants ( [Year - Half Year - Quarter - Month - Date], [Year - Half Year - Quarter - Month - Date]. [Month] ) ON ROWS FROM POINTFILMES PrevMember e NextMember 30 Função PrevMember e Next Member PrevMember retorna o membro anterior ao membro especificado, no mesmo nível. NextMember retorna o próximo membro do membro especificado, no mesmo nível. Sintaxe: [Dim].[Membro].PrevMember/NextMember 15

Exemplos: PrevMember e NextMember 31 [Year - Half Year - Quarter - Month - Date]. [Month]. [January 2007].NEXTMEMBER ON COLUMNS FROM POINTFILMES //Retorno: valor arrecado em Feveiro 2007 [Year - Half Year - Quarter - Month - Date]. [Month].[January 2007].PREVMEMBER ON COLUMNS FROM POINTFILMES //Retorno: valor arrecado em Dezembro 2006 Função Lag Função Lag 32 Recebe um número n positivo como parâmetro e retorna o n- ésimo membro anterior ao membro onde foi aplicada a função. Sintaxe: [Dim].[Membro].Lag(n) n=0, o retorna o próprio membro. n =1, o retorno é igual ao da função PrevMember aplicado ao mesmo membro. n=-1, o retorno é igual ao da função NextMember aplicado ao mesmo membro. 16

Exemplos: Função Lag 33 [Year - Half Year - Quarter - Month - Date].[Month].[January 2007]. LAG(0) ON COLUMNS FROM POINTFILMES //Retorno: valor arrecado em Janeiro 2007 [Year - Half Year - Quarter - Month - Date].[Month].[January 2007]. LAG(1) ON COLUMNS FROM POINTFILMES //Retorno: valor arrecado em Dezembro 2007 Função Lag 34 Exemplos (continuação): [Year - Half Year - Quarter - Month - Date]. [Month]. [January 2007]. LAG(-1) ON COLUMNS FROM POINTFILMES //Retorno: valor arrecado em Feveiro 2007 17

Função Lead Função Lead 35 A definição é similar a definição da função Lag, porém o n- ésimo termo positivo retornado é posterior. Sintaxe: [Dim].[Membro].Lead(n) n=0, o retorno é o próprio membro. n =1, o retorno é igual ao da função NextMember aplicado ao mesmo membro. n=-1, o retorno é igual ao da função PrevMember aplicado ao mesmo membro. Exemplos: Função Lead 36 [Year - Half Year - Quarter - Month - Date].[Month].[January 2007]. LEAD(0) ON COLUMNS FROM POINTFILMES //Retorno: valor arrecado em Janeiro 2007 [Year - Half Year - Quarter - Month - Date].[Month].[January 2007]. LEAD(1) ON COLUMNS FROM POINTFILMES //Retorno: valor arrecado em Feveiro 2007 18

Função Lead 37 [Year - Half Year - Quarter - Month - Date].[Month].[January 2007]. LEAD(-1) ON COLUMNS FROM POINTFILMES //Retorno: valor arrecado em Dezembro 2007 Lembrando a função Lag(n) retorna elementos anteriores a função Lead(n) retorna elementos posteriores Função Avg Função AVG 38 Retorna o valor médio de uma expressão numérica avaliada em um conjunto. Sintaxe: Avg ( {conjunto}, expressão numérica). Exemplos: qual a média de locação de cada filme por mês. 19

Função AVG 39 WITH MEMBER Measures.ValorMedio AS AVG ( DESCENDANTS ( [Year - Half Year - Quarter - Month - Date], [Year - Half Year - Quarter - Month - Date]. [Month] ), [Measures].[FATOS Count] ) Measures.ValorMedio ON COLUMNS, [DIM FILME].[Nome].CHILDREN ON ROWS FROM POINTFILMES Função Members Função Members 40 Retorna o conjunto de membros em uma dimensão, nível ou hierarquia. Sintaxe: [Dim].Members [Hierarquia].Members [Nivel].Members Exemplo: o exemplo da função Members será apresentado junto com a função Order, logo abaixo. 20

Função Order Função Order 41 Organiza os membros de um conjunto especificado, preservando ou não a ordem hierárquica. Sintaxe: Order({conjunto}, expressão aritmética [,ASC DESC BASC BDESC ] ) ASC: conjunto na ordem ascendente de acordo com a hierarquia; DESC: conjunto na ordem descendente de acordo com a hierarquia; BASC: conjunto na ordem ascendente quebrando a hierarquia; BDESC: conjunto na ordem descendente quebrando a hierarquia; A letra B de BASC e BDESC vem de Break, com significado de quebrar a hierarquia. Função Order 42 Exemplo: ordenar os filmes por valor total arrecadado no ano de 2007. ORDER ([DIM FILME].[Nome].MEMBERS, [Measures].[Valor],DESC ) ON COLUMNS FROM POINTFILMES WHERE [Month].[December 2007] 21

Função SUM Função SUM 43 Retorna soma de conjunto de valores. Sintaxe: SUM ( {conjunto valores}). Exemplos: Exemplo apresentado na descrição do operador Range. Operador Range (:) Função RANGE ( : ) 44 Esse operador retorna um conjunto de membros ordenados que estão entre dois membros especificados. Os dois membros são inclusos no conjunto resultado. Sintaxe: Membro1 : Membro2 Exemplos: Neste exemplo apresentamos os filmes em ordem decrescente do valor total de locações que cada um gerou. 22

Função RANGE ( : ) 45 WITH MEMBER Measures.RENDA_NAS_FERIAS AS SUM ( { [Year - Half Year - Quarter - Month - Date]. [December 2006] : [Year - Half Year - Quarter - Month - Date]. [February 2007] }, [Measures].[Valor] ) Função RANGE ( : ) 46 ORDER ( [DIM FILME].[Nome].CHILDREN, (Measures.RENDA_NAS_FERIAS) ) ON COLUMNS FROM POINTFILMES 23

Operador CrossJoin Função CrossJoin 47 Retorna um conjunto que é o produto cartesiano entre dois conjuntos. Esse produto uma relação vazia, ou seja, quando os elementos não se relacionam. Sintaxe: CrossJoin({conjunto1},{conjunto2} [,conjunton]* ) Exemplo: quais filmes cada cliente alugou e quais ele não alugou? Função CrossJoin 48 CROSSJOIN ( [DIM CLIENTE].[Nome].CHILDREN, [DIM FILME].[Nome].CHILDREN ) ON COLUMNS FROM POINTFILMES WHERE MEASURES.[FATOS COUNT] 24

Funçao NonEmpty Função NonEmpty 49 Semelhante a função CrossJoin, porém o conjunto resultante do produto cartesiano somente possui elementos que são do primeiro conjunto e que se relacionam com algum do segundo. Sintaxe: NonEmpty({conjunto1},{conjunto2}) Exemplo: quantos filmes cada cliente alugou? Função NonEmpty 50 NONEMPTY ( [DIM CLIENTE].[Nome].CHILDREN, [DIM FILME].[Nome].CHILDREN ) ON COLUMNS FROM POINTFILMES WHERE MEASURES.[FATOS COUNT] 25

Função NonEmptyCrossJoin 51 Função NonEmptyCrossJoin Retorna um conjunto que é o produto cartesiano de outros conjuntos, com exceção de tuplas vazias, ou seja, é a união das duas funções anteriores, Crossjoin com NonEmpty. Sintaxe: NonEmptyCrossJoin ({conjunto1},{conjunto2} [,conjunton]*) Função NonEmptyCrossJoin 52 Exemplo: Quais os funcionários que realizaram a locação de pelo menos um filme no dia 01/01/2006? Quais foram os filmes e quanto foi o aluguel de cada um? 26

Função NonEmptyCrossJoin 53 NONEMPTYCROSSJOIN ( [Year - Half Year - Quarter - Month - Date]. [Year].[Calendar 2006].[Semester 1, 2006]. [Quarter 1, 2006]. [January 2006].[Sunday, January 01 2006], [DIM FUNCIONARIO].[Nome].CHILDREN, [DIM FILME].[NOME].CHILDREN )ON 1 { [Measures].[FATOS Count], [Measures].[Valor] } on 0 FROM [POINTFILMES] Função TopCount Função TopCount 54 Retorna um conjunto com os n elementos que possuem os maiores valores computado por alguma expressão no conjunto passado. Sintaxe: TopCount({conjunto}, n, expressao) Exemplo: quais os 10 clientes que mais alugaram e qual foi a quantidade? 27

Função TopCount 55 [Measures].[FATOS Count] ON COLUMNS, TOPCOUNT ( [DIM CLIENTE].[Nome].children, 10, [Measures].[FATOS Count] )ON ROWS FROM [PointFilmes] Função Rank Função Rank 56 Retorna uma classificação/posição (1, 2, 3, 4...) de um membro com base na sua classificação em um determinado conjunto. Sintaxe: Rank( membro, {conjunto} ) Exemplos: o exemplo da função Rank será apresentado no próximo tópico (conjunto nomeado) 28

Conjunto Nomeado Reuso de código Simplificar consultas (*) Escopo da consulta (o que utilizaremos), Escopo da sessão Escopo global. Conjunto Nomeado 57 Conjunto Nomeado 58 Sintaxe: WITH <Select With Clause> consulta_mdx <Select With Clause> ::= [ MEMBER identifier AS mdx_expression SET identifier AS set_expression ] + 29

Conjunto Nomeado 59 Exemplos: criar um rank dos clientes que mais alugaram filmes. Apresentar os clientes, a posição de cada um no rank e quantidade de filmes locados. Obs: O resultado é similar ao exemplo apresentado no função TopCount. Conjunto Nomeado 60 WITH SET [OrderedSet] AS ORDER ( [DIM CLIENTE].[Nome].[Nome].MEMBERS, [Measures].[FATOS Count], BDESC ) MEMBER [Measures].[Rank] AS RANK ( [DIM CLIENTE].[Nome].CurrentMember, [OrderedSet] ) 30

Conjunto Nomeado 61 { [Measures].[Rank], [Measures].[FATOS Count] } ON 0, [OrderedSet] ON 1 FROM [PointFilmes] Função DrillDownLevel 62 Função DrillDownLevel Acessa um cojunto em um determinado nível Sintaxe: DrillDownLevel ({conjunto} [, nível número]) 31

Função DrillDownLevel 1 63 Se nem expressão de nível ou o número for especificado (DrillDownLevel ({conjunto})), então a função irá retornar um conjunto composto pelo nível especificado e seus filhos. Exemplo 1: qual o valor arrecadado no primeiro semestre de 2009 e nos seus respectivos trimestres? Função DrillDownLevel 1 64 DRILLDOWNLEVEL ( [Year - Half Year - Quarter - Month - Date]. [Year]. [Calendar 2009]. [semester 1, 2009] ) ON 0 FROM POINTFILMES 32

Função DrillDownLevel 2 65 Se uma expressão de nível for especificada (DrillDownLevel ({conjunto}, nível) e não existir nenhum membro no nível especificado, no conjunto, esse conjunto será retornado. Exemplo 2: qual o valor arrecadado em cada mês? Explicação da consulta: foi utilizado o conjunto de meses e o nível Quarter. Como os membros de Quarter não pertencem ao conjunto de meses, o retorno será um conjunto apenas com os meses. Função DrillDownLevel 2 66 DRILLDOWNLEVEL ( [Year - Half Year - Quarter - Month - Date]. [Month].members, [Year - Half Year - Quarter - Month - Date]. [Quarter] ) ON 0 FROM POINTFILMES 33

Função DrillDownLevel 3 67 Se uma expressão de nível for especificada e existir um membro no nível especificado, no conjunto, tal conjunto unido com os membros de cada elemento do mesmo, será retornado.. Exemplo 3: qual o valor arrecadado em cada trimestre e nos seus respectivos meses? Explicação: foi utilizado o conjunto de trimestres e o nível Quarter. Como os membros de Quarter pertencem ao conjunto de trimestres, o retorno será um conjunto apenas com os meses. Função DrillDownLevel 3 68 DRILLDOWNLEVEL ( [Year - Half Year - Quarter - Month - Date]. [Quarter].members, [Year - Half Year - Quarter - Month - Date].[Quarter] ) ON 0 FROM POINTFILMES 34

Função DrillDownLevel 4 69 Exemplo 4: quais os 5 filmes mais locados em cada trimestre? Qual foi a quantidade no trimestre? Qual a quantidade em cada mês do trimestre? Função DrillDownLevel 4 70 DRILLDOWNLEVEL ( [Year - Half Year - Quarter - Month - Date].[Quarter].members, [Year - Half Year - Quarter - Month - Date].[Quarter] ) ON COLUMNS, TOPCOUNT ( [DIM FILME].[Nome].children, 5, [Measures].[FATOS Count] ) ON ROWS FROM PointFilmes where [Measures].[Fatos Count] 35

Função DrillDownMember 71 Função DrillDownMember Acessa os filhos de apenas um dos membros do primeiro conjunto somente quando tal membro pertencer ao segundo conjunto especificado. O retorno são todos os membros do primeiro conjunto unido com os filhos do membro acessado, ordenados pela hierarquia Sintaxe: DrillDownMember ({conjunto1}, {conjunto2}?msdn?) Função DrillDownMember 72 Exemplos: qual o valor total de aluguéis realizados por cada funcionário em todos os anos, mas com ênfase no ano 2007. O resultado é apresentado na figura 9? 36

Função DrillDownMember 73 DRILLDOWNMEMBER ( [Year - Half Year - Quarter - Month - Date]. [Year].members, [Year - Half Year - Quarter - Month - Date]. [Year]. [Calendar 2007] Não é um conjunto ) ON 0, [DIM FUNCIONARIO].[Nome].children ON 1 FROM [PointFilmes]? 74? 37

Referências [1] Business Intelligence, acessado 27/03/2010 url: http://pt.wikipedia.org/wiki/business_intelligence [2]MDX: The Language of Multidimensional Analysis, acessado 22/03/2010 url: http://www.panorama.com/documents/mdxwhitepaper.pdf 75 [3] TUTORIAL: Introduction to Multidimensional Expressions (MDX), acessado 22/03/2010 url: http://www.fing.edu.uy/inco/grupos/csi/esp/cursos/cursos_ act/2005/dap_sistdw/material/2-sdw-laboratorio1-2005.pdf Referências [4] bda_mdx.pdf, acessado 22/03/2010 url: http://www.cin.ufpe.br/~if695/ 76 [5] Mdx allows complex, multidimensional queries, acessado 22/03/2010 url: http://www.oracle.com/technology/products/bi/epm/pdf/mdx_co mplex_queries.pdf [6] MDX at First Glance: Introduction to SQL Server MDX Essentials, acessado em 01/04/2010 url: http://www.databasejournal.com/features/mssql/article.php/1495 511/MDX-at-First-Glance-Introduction-to-SQL-Server-MDX- Essentials.htm 38

Referências [7] MDX Tutorials, acessado 01/04/2010 url: http://www.mdxtutorials.net/ 77 [8] Multidimensional Expressions (MDX) Reference, acessado 14/04/2010 url: http://msdn.microsoft.com/ptbr/library/ms145506%28v=sql.100%29.aspx 39