Você está na página 1de 39

05/11/2012

1
MULTIDIMENTIONAL
EXPRESSIONS
Linguagem MDX
1
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
Linguagem MDX
Introduo
Microsoft, dcada de 90.
Criao de relatrios
Business Intelligence --> gesto de negcio
2
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
2
Linguagem MDX
Introduo
3
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
MDX surgiu atravs de SQL
Sintaxe:
SELECT <mdx_expression> ON COLUMNS //0
<mdx_expression> ON ROWS //1
<mdx_expression> ON PAGES //2
FROM <nome_cubo> WHERE <slicer_expression>
Linguagem MDX
MDX x SQL
4
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
3
Ambas possuem funes para clculos.
Diferentes fontes de consulta.
MDX no defini dados.
MDX navega em hierarquia.
Linguagem MDX
MDX x SQL
5
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
Cubo
[Dimenses]
+
Dimenso
[Membros]
+
[Hieraquia]
Hierarquia
[Nvel]
+
Nvel
[Membros]
+
Membros
[Filhos]
+
Linguagem MDX
Conceitos necessrios
6
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
4
Navegar no cubo:
Dimensao.<Sintaxe Member>
<Sintaxe Member> = Membro.[nome do filho | funo]
Navegar em uma hierarquia
Dimensao.HIERARQUIA.
[ Nivel. <Sintaxe Member> | <Sintaxe Member> ]
Cuidado com abreviaes
Ano 2010 e 2011
Tempo.[Hierarquia Tempo].Ano.Semestre.1
Semestre 1 de qual ano?
Linguagem MDX
Conceitos necessrios
7
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
Colchetes - [ ] -
Espaos em branco
Nmeros
Caracteres
Selecionar um nica clula
Relacionar membros de todas as dimenses
Linguagem MDX
(
[Produto] . [Milho],
Tempo. Maio,
[Loja] . [Recife]
)
8
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
5
Selecionar um conjunto
Realacionar um ou mais membros da mesma dimenso
membros de outras.
Linguagem MDX
{
( [Tempo] . [Abril],
[Loja] . [Recife],
[Produto] . [Milho] ) ,
( [Tempo] . [Maio],
[Loja] . [Recife],
[Produto] . [Milho] ) ,
( [Tempo] . [Junho],
[Loja] . [Recife],
[Produto] . [Milho] ),
( [Tempo] . [Julho],
[Loja] . [Recife],
[Produto] . [Milho] )
}
9
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
(
[Loja] . [Recife],
[Produto] . [Milho]
)
Linguagem MDX
10
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
6
Linguagem MDX
11
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
Linguagem MDX
12
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
7
Linguagem MDX
Funo Children
Funo Children
Retorna o conjunto dos filhos de um membro especificado.
Caso o membro no 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
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
Linguagem MDX
Funo Children
SELECT
[DIM_TIME].
[Year - Half Year - Quarter - Month - Date].
[Half Year].
[Semester 1, 2006].CHILDREN ON COLUMNS,
[Measures].[Valor] ON ROWS
FROM POINTFILMES
14
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
8
Funo FirstChild
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?
Linguagem MDX
Funo FirstChild
15
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
SELECT
[DIM_TIME].
[Year - Half Year - Quarter - Month - Date].
[Half Year].
[Semester 1, 2006]. FIRSTCHILDON COLUMNS
FROM POINTFILMES
Linguagem MDX
Funo FirstChild
16
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
9
LastChild
Retorna o ltimo membro filho de um membro especificado.
Sintaxe: [Dim].[Membro].LastChild
Exemplo: qual o valor arrecado no segundo
semestre de 2006?
Linguagem MDX
Funo LastChild
17
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
SELECT
[DIM_TIME].
[Year - Half Year - Quarter - Month - Date].
[Calendar 2006].LASTCHILDON COLUMNS
FROM POINTFILMES
Linguagem MDX
Funo LastChild
18
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
10
Funo Parent
Retorna o membro pai de um membro especificado. O pai do
membro especificado o mesmo pai do nvel ao qual o
membro pertence.
Sintaxe: [Dim].[Membro].Parent
Exemplo: qual o valor arrecado no segundo
semestre de 2006? Obs.: Consulta igual a da funo.
Mostrando que possvel conseguir um mesmo
resultado com diferentes formas de navegar na
hierarquia.
Linguagem MDX
Funo Parent
19
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
SELECT
[DIM_TIME].
[Year - Half Year - Quarter - Month - Date].
[Quarter].
[Quarter 3, 2006].PARENT ON COLUMNS
FROM POINTFILMES
Linguagem MDX
Funo Parent
20
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
11
Funo Descendants
Retorna um conjunto de descendentes de um membro em um
determinado nvel. Os argumentos necessrios so: um nvel
de uma hierarquia, e o membro do qual se deseja obter os
descendentes.
Sintaxe: Descendants( membro, nvel )
Exemplo 1: qual o valor que cada funcionrio
arrecadou com as locaes em cada trimestre de
2006?
Linguagem MDX
Funo Descendants
21
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
SELECT
[DIM FUNCIONARIO].[Nome].children ON 1,
DESCENDANTS
(
[DIM_TIME].
[Year - Half Year - Quarter - Month - Date].[Year].[Calendar 2006],
[DIM_TIME].
[Year - Half Year - Quarter - Month - Date]. [Quarter]
)ON 0
FROM [POINTFILMES]
Linguagem MDX
Funo Descendants 1
22
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
12
Exemplo 2: qual a quantidade de locaes que
cada funcionrio realizou, em cada trimestre do ano
2006?
SELECT [DIM FUNCIONARIO].[Nome].children ON Rows,
DESCENDANTS
( [DIM_TIME].
[Year - Half Year - Quarter - Month - Date].[Year].[Calendar 2006],
[DIM_TIME].
[Year - Half Year - Quarter - Month - Date].[Quarter]
)ON Columns FROM [POINTFILMES]
WHERE [Measures].[FATOS Count]
Linguagem MDX
Funo Descendants 2
23
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
Variaes ( 1 ): com mesmo retorno do exemplo 2.
Sintaxe: Descendants( membro, nmero )
SELECT [DIM FUNCIONARIO].[Nome].children ON 1,
DESCENDANTS
( [DIM_TIME].
[Year - Half Year - Quarter - Month - Date].
[Year].
[Calendar 2006],
2
)
ON 0
FROM [POINTFILMES] WHERE [Measures].[FATOS Count]
Linguagem MDX
Funo Descendants (Variaes)
24
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
13
Variaes ( 2 ):
retorna o prprio membro e seus descendentes.
Sintaxe: Descendants( [nvel | membro] )
SELECT [DIM FUNCIONARIO].[Nome].children ON 1,
DESCENDANTS
(
[DIM_TIME].
[Year - Half Year - Quarter - Month - Date].
[January 2006]
)ON 0
FROM [POINTFILMES]
WHERE [Measures].[FATOS Count]
Linguagem MDX
Funo Descendants (Variaes)
25
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
Funo CurrentMember
Em cada passo de uma iterao recuperamos o membro que
est sendo utilizado atravs da funo CurrentMember.
Sintaxe: Hierarchy_Expression.CurrentMember
Exemplo apresentado no prximo item(Criar
Membro Calculado)
Linguagem MDX
Funo CurrentMember
26
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
14
Membro Calculado
Reuso de cdigo
Simplificar consultas (*)
Sintaxe:
WITH<Select With Clause> consulta_mdx
<Select With Clause> ::=
[
MEMBER identifier AS mdx_expression
| SET identifier AS set_expression
]
+
Linguagem MDX
Membro Calculado
27
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
Exemplo: qual o valor percentual arrecadado em
cada ms, em relao ao seu trimestre?
WITH MEMBER Measures.ValorPercentual AS
( [DIM_TIME].
[Year - Half Year - Quarter - Month - Date].CURRENTMEMBER ,
[Measures].[Valor]
)
/
( [DIM_TIME].
[Year - Half Year - Quarter -Month-Date].CURRENTMEMBER.Parent ,
[Measures].[Valor]
) * 100
Linguagem MDX
Membro Calculado
28
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
15
SELECT
Measures.ValorPercentual ON COLUMNS,
Descendants
(
[DIM_TIME].
[Year - Half Year - Quarter - Month - Date],
[DIM_TIME].
[Year - Half Year - Quarter - Month - Date].
[Month]
) ON ROWS
FROM POINTFILMES
Linguagem MDX
Membro Calculado
29
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
Funo PrevMember e Next Member
PrevMember retorna o membro anterior ao membro
especificado, no mesmo nvel.
NextMember retorna o prximo membro do membro
especificado, no mesmo nvel.
Sintaxe:
[Dim].[Membro].PrevMember/NextMember
Linguagem MDX
PrevMember e NextMember
30
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
16
Exemplos:
SELECT
[DIM_TIME].[Year - Half Year - Quarter - Month - Date].
[Month].
[January 2007].NEXTMEMBER ON COLUMNS
FROMPOINTFILMES //Retorno: valor arrecado em Feveiro 2007
SELECT
[DIM_TIME].[Year - Half Year - Quarter - Month - Date].
[Month].[January 2007].PREVMEMBER ON COLUMNS
FROMPOINTFILMES //Retorno: valor arrecado em Dezembro 2006
Linguagem MDX
PrevMember e NextMember
31
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
Funo Lag
Recebe um nmero n positivo como parmetro e retorna o n-
simo membro anterior ao membro onde foi aplicada a funo.
Sintaxe: [Dim].[Membro].Lag(n)
n=0, o retorna o prprio membro.
n =1, o retorno igual ao da funo PrevMember aplicado ao
mesmo membro.
n=-1, o retorno igual ao da funo NextMember aplicado ao
mesmo membro.
Linguagem MDX
Funo Lag
32
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
17
Exemplos:
SELECT
[DIM_TIME].
[Year - Half Year - Quarter - Month - Date].[Month].[January 2007].
LAG(0) ON COLUMNS
FROMPOINTFILMES //Retorno: valor arrecado em Janeiro 2007
SELECT
[DIM_TIME].
[Year - Half Year - Quarter - Month - Date].[Month].[January 2007].
LAG(1) ON COLUMNS
FROMPOINTFILMES //Retorno: valor arrecado em Dezembro 2007
Linguagem MDX
Funo Lag
33
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
Exemplos (continuao):
SELECT
[DIM_TIME].
[Year - Half Year - Quarter - Month - Date].
[Month].
[January 2007]. LAG(-1) ON COLUMNS
FROMPOINTFILMES
//Retorno: valor arrecado em Feveiro 2007
Linguagem MDX
Funo Lag
34
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
18
Funo Lead
A definio similar a definio da funo Lag, porm o n-
simo termo positivo retornado posterior.
Sintaxe: [Dim].[Membro].Lead(n)
n=0, o retorno o prprio membro.
n =1, o retorno igual ao da funo NextMember aplicado ao
mesmo membro.
n=-1, o retorno igual ao da funo PrevMember aplicado ao
mesmo membro.
Linguagem MDX
Funo Lead
35
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
Exemplos:
SELECT
[DIM_TIME].
[Year - Half Year - Quarter - Month - Date].[Month].[January 2007].
LEAD(0) ON COLUMNS
FROMPOINTFILMES //Retorno: valor arrecado em Janeiro 2007
SELECT
[DIM_TIME].
[Year - Half Year - Quarter - Month - Date].[Month].[January 2007].
LEAD(1) ON COLUMNS
FROMPOINTFILMES //Retorno: valor arrecado em Feveiro 2007
Linguagem MDX
Funo Lead
36
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
19
SELECT
[DIM_TIME].
[Year - Half Year - Quarter - Month -
Date].[Month].[January 2007]. LEAD(-1) ON
COLUMNS
FROMPOINTFILMES
//Retorno: valor arrecado em Dezembro 2007
Lembrando
a funo Lag(n) retorna elementos anteriores
a funo Lead(n) retorna elementos posteriores
Linguagem MDX
Funo Lead
37
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
Funo Avg
Retorna o valor mdio de uma expresso numrica avaliada
em um conjunto.
Sintaxe: Avg ( {conjunto}, expresso numrica).
Exemplos: qual a mdia de locao de cada filme
por ms.
Linguagem MDX
Funo AVG
38
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
20
WITH MEMBER Measures.ValorMedio AS AVG
(
DESCENDANTS
(
[DIM_TIME].[Year - Half Year - Quarter - Month - Date],
[DIM_TIME].[Year - Half Year - Quarter - Month - Date].
[Month]
), [Measures].[FATOS Count]
)
SELECT
Measures.ValorMedio ON COLUMNS,
[DIM FILME].[Nome].CHILDREN ON ROWS
FROM POINTFILMES
Linguagem MDX
Funo AVG
39
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
Funo Members
Retorna o conjunto de membros em uma dimenso, nvel ou
hierarquia.
Sintaxe: [Dim].Members
[Hierarquia].Members
[Nivel].Members
Exemplo: o exemplo da funo Members ser
apresentado junto com a funo Order, logo abaixo.
Linguagem MDX
Funo Members
40
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
21
Funo Order
Organiza os membros de um conjunto especificado,
preservando ou no a ordem hierrquica.
Sintaxe: Order({conjunto}, expresso aritmtica
[,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.
Linguagem MDX
Funo Order
41
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
Exemplo: ordenar os filmes por valor total
arrecadado no ano de 2007.
SELECT
ORDER
([DIM FILME].[Nome].MEMBERS,
[Measures].[Valor]
,DESC
) ON COLUMNS
FROM POINTFILMES
WHERE [DIM_TIME].[Month].[December 2007]
Linguagem MDX
Funo Order
42
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
22
Funo SUM
Retorna soma de conjunto de valores.
Sintaxe: SUM ( {conjunto valores}).
Exemplos: Exemplo apresentado na descrio do
operador Range.
Linguagem MDX
Funo SUM
43
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
Operador Range (:)
Esse operador retorna um conjunto de membros ordenados
que esto entre dois membros especificados. Os dois membros
so inclusos no conjunto resultado.
Sintaxe: Membro1 : Membro2
Exemplos: Neste exemplo apresentamos os filmes
em ordem decrescente do valor total de locaes que
cada um gerou.
Linguagem MDX
Funo RANGE ( : )
44
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
23
WITH MEMBER Measures.RENDA_NAS_FERIAS AS SUM
( {
[DIM_TIME].
[Year - Half Year - Quarter - Month - Date].
[December 2006]
:
[DIM_TIME].
[Year - Half Year - Quarter - Month - Date].
[February 2007]
}, [Measures].[Valor]
)
Linguagem MDX
Funo RANGE ( : )
45
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
SELECT
ORDER
(
[DIM FILME].[Nome].CHILDREN,
(Measures.RENDA_NAS_FERIAS)
)
ON COLUMNS
FROM POINTFILMES
Linguagem MDX
Funo RANGE ( : )
46
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
24
Operador CrossJoin
Retorna um conjunto que o produto cartesiano entre dois
conjuntos. Esse produto uma relao vazia, ou seja, quando os
elementos no se relacionam.
Sintaxe:
CrossJoin({conjunto1},{conjunto2} [,conjuntoN]* )
Exemplo: quais filmes cada cliente alugou e quais
ele no alugou?
Linguagem MDX
Funo CrossJoin
47
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
SELECT
CROSSJOIN
(
[DIM CLIENTE].[Nome].CHILDREN,
[DIM FILME].[Nome].CHILDREN
) ON COLUMNS
FROM POINTFILMES
WHERE MEASURES.[FATOS COUNT]
Linguagem MDX
Funo CrossJoin
48
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
25
Funao NonEmpty
Semelhante a funo CrossJoin, porm o conjunto resultante
do produto cartesiano somente possui elementos que so do
primeiro conjunto e que se relacionam com algum do segundo.
Sintaxe: NonEmpty({conjunto1},{conjunto2})
Exemplo: quantos filmes cada cliente alugou?
Linguagem MDX
Funo NonEmpty
49
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
SELECT NONEMPTY
(
[DIM CLIENTE].[Nome].CHILDREN,
[DIM FILME].[Nome].CHILDREN
)
ON COLUMNS
FROM POINTFILMES
WHERE MEASURES.[FATOS COUNT]
Linguagem MDX
Funo NonEmpty
50
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
26
Funo NonEmptyCrossJoin
Retorna um conjunto que o produto cartesiano de outros
conjuntos, com exceo de tuplas vazias, ou seja, a unio das
duas funes anteriores, Crossjoin com NonEmpty.
Sintaxe:
NonEmptyCrossJoin
({conjunto1},{conjunto2} [,conjuntoN]*)
Linguagem MDX
Funo NonEmptyCrossJoin
51
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
Exemplo:
Quais os funcionrios que realizaram a locao de
pelo menos um filme no dia 01/01/2006? Quais
foram os filmes e quanto foi o aluguel de cada um?
Linguagem MDX
Funo NonEmptyCrossJoin
52
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
27
SELECT NONEMPTYCROSSJOIN
(
[DIM_TIME].[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,
[DIMFILME].[NOME].CHILDREN
)ON 1
{ [Measures].[FATOS Count], [Measures].[Valor] } on 0
FROM [POINTFILMES]
Linguagem MDX
Funo NonEmptyCrossJoin
53
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
Funo TopCount
Retorna um conjunto com os n elementos que possuem os
maiores valores computado por alguma expresso no conjunto
passado.
Sintaxe: TopCount({conjunto}, n, expressao)
Exemplo: quais os 10 clientes que mais alugaram e
qual foi a quantidade?
Linguagem MDX
Funo TopCount
54
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
28
SELECT
[Measures].[FATOS Count] ON COLUMNS,
TOPCOUNT
(
[DIM CLIENTE].[Nome].children,
10,
[Measures].[FATOS Count]
)ON ROWS
FROM [PointFilmes]
Linguagem MDX
Funo TopCount
55
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
Funo Rank
Retorna uma classificao/posio (1, 2, 3, 4...) de um membro
com base na sua classificao em um determinado conjunto.
Sintaxe: Rank( membro, {conjunto} )
Exemplos: o exemplo da funo Rank ser
apresentado no prximo tpico (conjunto nomeado)
Linguagem MDX
Funo Rank
56
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
29
Conjunto Nomeado
Reuso de cdigo
Simplificar consultas (*)
Escopo da consulta (o que utilizaremos),
Escopo da sesso
Escopo global.
Linguagem MDX
Conjunto Nomeado
57
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
Sintaxe:
WITH<Select With Clause> consulta_mdx
<Select With Clause> ::=
[
MEMBER identifier AS mdx_expression
| SET identifier AS set_expression
]
+
Linguagem MDX
Conjunto Nomeado
58
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
30
Exemplos: criar um rank dos clientes que mais
alugaram filmes. Apresentar os clientes, a posio de
cada um no rank e quantidade de filmes locados.
Obs: O resultado similar ao exemplo apresentado
no funo TopCount.
Linguagem MDX
Conjunto Nomeado
59
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
WITH SET [OrderedSet] AS
ORDER
( [DIM CLIENTE].[Nome].[Nome].MEMBERS,
[Measures].[FATOS Count],
BDESC
)
MEMBER [Measures].[Rank] AS
RANK
(
[DIM CLIENTE].[Nome].CurrentMember,
[OrderedSet]
)
Linguagem MDX
Conjunto Nomeado
60
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
31
SELECT
{
[Measures].[Rank],
[Measures].[FATOS Count]
} ON 0,
[OrderedSet] ON 1
FROM [PointFilmes]
Linguagem MDX
Conjunto Nomeado
61
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
Funo DrillDownLevel
Acessa um cojunto em um determinado nvel
Sintaxe:
DrillDownLevel ({conjunto} [, nvel | nmero])
Linguagem MDX
Funo DrillDownLevel
62
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
32
Se nem expresso de nvel ou o nmero for
especificado (DrillDownLevel ({conjunto})), ento
a funo ir retornar um conjunto composto pelo
nvel especificado e seus filhos.
Exemplo 1: qual o valor arrecadado no primeiro
semestre de 2009 e nos seus respectivos trimestres?
Linguagem MDX
Funo DrillDownLevel 1
63
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
SELECT
DRILLDOWNLEVEL
(
[DIM_TIME].
[Year - Half Year - Quarter - Month - Date].
[Year].
[Calendar 2009].
[semester 1, 2009]
) ON 0 FROM POINTFILMES
Linguagem MDX
Funo DrillDownLevel 1
64
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
33
Se uma expresso de nvel for especificada
(DrillDownLevel ({conjunto} , nvel) e no existir
nenhum membro no nvel especificado, no conjunto,
esse conjunto ser retornado.
Exemplo 2: qual o valor arrecadado em cada ms?
Explicao da consulta: foi utilizado o conjunto
de meses e o nvel Quarter. Como os membros de
Quarter no pertencemao conjunto de meses, o
retorno ser um conjunto apenas com os meses.
Linguagem MDX
Funo DrillDownLevel 2
65
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
SELECT
DRILLDOWNLEVEL
( [DIM_TIME].
[Year - Half Year - Quarter - Month - Date].
[Month].members,
[DIM_TIME].
[Year - Half Year - Quarter - Month - Date].
[Quarter]
) ON 0 FROM POINTFILMES
Linguagem MDX
Funo DrillDownLevel 2
66
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
34
Se uma expresso de nvel for especificada e
existir um membro no nvel 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?
Explicao: foi utilizado o conjunto de trimestres e
o nvel Quarter. Como os membros de Quarter
pertencemao conjunto de trimestres, o retorno
ser um conjunto apenas com os meses.
Linguagem MDX
Funo DrillDownLevel 3
67
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
SELECT
DRILLDOWNLEVEL
(
[DIM_TIME].
[Year - Half Year - Quarter - Month - Date].
[Quarter].members,
[DIM_TIME].
[Year - Half Year - Quarter - Month -
Date].[Quarter]
) ON 0 FROM POINTFILMES
Linguagem MDX
Funo DrillDownLevel 3
68
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
35
Exemplo 4: quais os 5 filmes mais locados em cada
trimestre?
Qual foi a quantidade no trimestre?
Qual a quantidade em cada ms do trimestre?
Linguagem MDX
Funo DrillDownLevel 4
69
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
SELECT
DRILLDOWNLEVEL
(
[DIM_TIME].
[Year - Half Year - Quarter - Month - Date].[Quarter].members,
[DIM_TIME].[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]
Linguagem MDX
Funo DrillDownLevel 4
70
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
36
Funo DrillDownMember
Acessa os filhos de apenas um dos membros do primeiro
conjunto somente quando tal membro pertencer ao segundo
conjunto especificado. O retorno so todos os membros do
primeiro conjunto unido com os filhos do membro acessado,
ordenados pela hierarquia
Sintaxe:
DrillDownMember
({conjunto1}, {conjunto2}?msdn?)
Linguagem MDX
Funo DrillDownMember
71
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
Exemplos: qual o valor total de aluguis realizados
por cada funcionrio em todos os anos, mas com
nfase no ano 2007. O resultado apresentado na
figura 9?
Linguagem MDX
Funo DrillDownMember
72
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
37
SELECT DRILLDOWNMEMBER
( [DIM_TIME].
[Year - Half Year - Quarter - Month - Date].
[Year].members,
[DIM_TIME].
[Year - Half Year - Quarter - Month - Date].
[Year].
[Calendar 2007]
) ON 0,
[DIM FUNCIONARIO].[Nome].children ON 1
FROM [PointFilmes]
Linguagem MDX
Funo DrillDownMember
73
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
No um conjunto
?
?
74
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
38
Referncias
[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/mdx-
whitepaper.pdf
[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
75
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
Referncias
[4] bda_mdx.pdf, acessado 22/03/2010
url: http://www.cin.ufpe.br/~if695/
[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
76
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br
05/11/2012
39
Referncias
[7] MDX Tutorials, acessado 01/04/2010
url: http://www.mdxtutorials.net/
[8] Multidimensional Expressions (MDX) Reference,
acessado 14/04/2010
url: http://msdn.microsoft.com/pt-
br/library/ms145506%28v=SQL.100%29.aspx
77
03/05/2010 Rudiney Barbosa - rlb@cin.ufpe.br

Você também pode gostar