linguagem mdx
TRANSCRIPT
05/11/2012
1
MULTIDIMENTIONALEXPRESSIONS
Linguagem MDX1
03/05/2010Rudiney Barbosa - [email protected]
Linguagem MDXIntrodução
� Microsoft, década de 90.
� Criação de relatórios
� Business Intelligence --> gestão de negócio
2
03/05/2010Rudiney Barbosa - [email protected]
05/11/2012
2
Linguagem MDXIntrodução
3
03/05/2010Rudiney Barbosa - [email protected]
� MDX surgiu através 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 MDXMDX x SQL
4
03/05/2010Rudiney Barbosa - [email protected]
05/11/2012
3
� Ambas possuem funções para cálculos.
� Diferentes fontes de consulta.
� MDX não defini dados.
� MDX navega em hierarquia.
Linguagem MDXMDX x SQL
5
03/05/2010Rudiney Barbosa - [email protected]
� Cubo� [Dimensões]
+
� Dimensão� [Membros]+
� [Hieraquia]
� Hierarquia� [Nível]+
� Nível� [Membros] +
� Membros� [Filhos] +
Linguagem MDXConceitos necessários
6
03/05/2010Rudiney Barbosa - [email protected]
05/11/2012
4
� 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?
Linguagem MDXConceitos necessários
7
03/05/2010Rudiney Barbosa - [email protected]
� Colchetes - [ ] -� Espaços em branco
� Números
� Caracteres
� Selecionar um única célula� Relacionar membros de todas as dimensões
Linguagem MDX
( [Produto] . [Milho], Tempo. Maio,[Loja] . [Recife]
)
8
03/05/2010Rudiney Barbosa - [email protected]
05/11/2012
5
� Selecionar um conjunto� Realacionar um ou mais membros da mesma dimensão
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/2010Rudiney Barbosa - [email protected]
([Loja] . [Recife],[Produto] . [Milho]
)
Linguagem MDX
10
03/05/2010Rudiney Barbosa - [email protected]
05/11/2012
6
Linguagem MDX
11
03/05/2010Rudiney Barbosa - [email protected]
Linguagem MDX
12
03/05/2010Rudiney Barbosa - [email protected]
05/11/2012
7
Linguagem MDXFunçã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
03/05/2010Rudiney Barbosa - [email protected]
Linguagem MDXFunção 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/2010Rudiney Barbosa - [email protected]
05/11/2012
8
� Função 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 MDXFunção FirstChild
15
03/05/2010Rudiney Barbosa - [email protected]
SELECT
[DIM_TIME].
[Year - Half Year - Quarter - Month - Date].
[Half Year].
[Semester 1, 2006]. FIRSTCHILD ON COLUMNS
FROM POINTFILMES
Linguagem MDXFunção FirstChild
16
03/05/2010Rudiney Barbosa - [email protected]
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 MDXFunção LastChild
17
03/05/2010Rudiney Barbosa - [email protected]
SELECT
[DIM_TIME].
[Year - Half Year - Quarter - Month - Date].
[Calendar 2006].LASTCHILD ON COLUMNS
FROM POINTFILMES
Linguagem MDXFunção LastChild
18
03/05/2010Rudiney Barbosa - [email protected]
05/11/2012
10
� Função Parent� 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.
Linguagem MDXFunção Parent
19
03/05/2010Rudiney Barbosa - [email protected]
SELECT
[DIM_TIME].
[Year - Half Year - Quarter - Month - Date].
[Quarter].
[Quarter 3, 2006].PARENT ON COLUMNS
FROM POINTFILMES
Linguagem MDXFunção Parent
20
03/05/2010Rudiney Barbosa - [email protected]
05/11/2012
11
� Função Descendants� 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?
Linguagem MDXFunção Descendants
21
03/05/2010Rudiney Barbosa - [email protected]
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 MDXFunção Descendants 1
22
03/05/2010Rudiney Barbosa - [email protected]
05/11/2012
12
� Exemplo 2: qual a quantidade de locações que cada funcionário 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 MDXFunção Descendants 2
23
03/05/2010Rudiney Barbosa - [email protected]
� Variações ( 1 ): com mesmo retorno do exemplo 2.
� Sintaxe: Descendants( membro, número )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 MDXFunção Descendants (Variações)
24
03/05/2010Rudiney Barbosa - [email protected]
05/11/2012
13
� Variações ( 2 ): � retorna o próprio membro e seus descendentes.
� Sintaxe: Descendants( [nível | 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 MDXFunção Descendants (Variações)
25
03/05/2010Rudiney Barbosa - [email protected]
� 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)
Linguagem MDXFunção CurrentMember
26
03/05/2010Rudiney Barbosa - [email protected]
05/11/2012
14
� Membro Calculado� Reuso de código
� Simplificar consultas (*)
� Sintaxe:
WITH <Select With Clause> consulta_mdx
<Select With Clause> ::=
[
MEMBER identifier AS mdx_expression
| SET identifier AS set_expression
]+
Linguagem MDXMembro Calculado
27
03/05/2010Rudiney Barbosa - [email protected]
� Exemplo: qual o valor percentual arrecadado em cada mês, em relação 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 MDXMembro Calculado
28
03/05/2010Rudiney Barbosa - [email protected]
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 MDXMembro Calculado
29
03/05/2010Rudiney Barbosa - [email protected]
� 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
Linguagem MDXPrevMember e NextMember
30
03/05/2010Rudiney Barbosa - [email protected]
05/11/2012
16
� Exemplos:SELECT
[DIM_TIME].[Year - Half Year - Quarter - Month - Date].
[Month].
[January 2007].NEXTMEMBER ON COLUMNS
FROM POINTFILMES //Retorno: valor arrecado em Feveiro 2007
SELECT
[DIM_TIME].[Year - Half Year - Quarter - Month - Date].
[Month].[January 2007].PREVMEMBER ON COLUMNS
FROM POINTFILMES //Retorno: valor arrecado em Dezembro 2006
Linguagem MDXPrevMember e NextMember
31
03/05/2010Rudiney Barbosa - [email protected]
� Função Lag� 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.
Linguagem MDXFunção Lag
32
03/05/2010Rudiney Barbosa - [email protected]
05/11/2012
17
� Exemplos:SELECT
[DIM_TIME].
[Year - Half Year - Quarter - Month - Date].[Month].[January 2007].LAG(0) ON COLUMNS
FROM POINTFILMES //Retorno: valor arrecado em Janeiro 2007
SELECT
[DIM_TIME].
[Year - Half Year - Quarter - Month - Date].[Month].[January 2007].LAG(1) ON COLUMNS
FROM POINTFILMES //Retorno: valor arrecado em Dezembro 2007
Linguagem MDXFunção Lag
33
03/05/2010Rudiney Barbosa - [email protected]
� Exemplos (continuação):
SELECT
[DIM_TIME].
[Year - Half Year - Quarter - Month - Date].
[Month].
[January 2007]. LAG(-1) ON COLUMNS
FROM POINTFILMES
//Retorno: valor arrecado em Feveiro 2007
Linguagem MDXFunção Lag
34
03/05/2010Rudiney Barbosa - [email protected]
05/11/2012
18
� Função Lead� 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.
Linguagem MDXFunção Lead
35
03/05/2010Rudiney Barbosa - [email protected]
� Exemplos:SELECT
[DIM_TIME].
[Year - Half Year - Quarter - Month - Date].[Month].[January 2007].LEAD(0) ON COLUMNS
FROM POINTFILMES //Retorno: valor arrecado em Janeiro 2007
SELECT
[DIM_TIME].
[Year - Half Year - Quarter - Month - Date].[Month].[January 2007].LEAD(1) ON COLUMNS
FROM POINTFILMES //Retorno: valor arrecado em Feveiro 2007
Linguagem MDXFunção Lead
36
03/05/2010Rudiney Barbosa - [email protected]
05/11/2012
19
SELECT
[DIM_TIME].
[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
Linguagem MDXFunção Lead
37
03/05/2010Rudiney Barbosa - [email protected]
� Função Avg� 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.
Linguagem MDXFunção AVG
38
03/05/2010Rudiney Barbosa - [email protected]
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 MDXFunção AVG
39
03/05/2010Rudiney Barbosa - [email protected]
� Função Members� 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.
Linguagem MDXFunção Members
40
03/05/2010Rudiney Barbosa - [email protected]
05/11/2012
21
� Função Order� 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.
Linguagem MDXFunção Order
41
03/05/2010Rudiney Barbosa - [email protected]
� 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 MDXFunção Order
42
03/05/2010Rudiney Barbosa - [email protected]
05/11/2012
22
� Função SUM� Retorna soma de conjunto de valores.
� Sintaxe: SUM ( {conjunto valores}).
� Exemplos: Exemplo apresentado na descrição do operador Range.
Linguagem MDXFunção SUM
43
03/05/2010Rudiney Barbosa - [email protected]
� Operador Range (:)� 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.
Linguagem MDXFunção RANGE ( : )
44
03/05/2010Rudiney Barbosa - [email protected]
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 MDXFunção RANGE ( : )
45
03/05/2010Rudiney Barbosa - [email protected]
SELECT
ORDER
(
[DIM FILME].[Nome].CHILDREN,
(Measures.RENDA_NAS_FERIAS)
)
ON COLUMNS
FROM POINTFILMES
Linguagem MDXFunção RANGE ( : )
46
03/05/2010Rudiney Barbosa - [email protected]
05/11/2012
24
� Operador CrossJoin� 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?
Linguagem MDXFunção CrossJoin
47
03/05/2010Rudiney Barbosa - [email protected]
SELECT
CROSSJOIN
(
[DIM CLIENTE].[Nome].CHILDREN,
[DIM FILME].[Nome].CHILDREN
) ON COLUMNS
FROM POINTFILMES
WHERE MEASURES.[FATOS COUNT]
Linguagem MDXFunção CrossJoin
48
03/05/2010Rudiney Barbosa - [email protected]
05/11/2012
25
� Funçao NonEmpty� 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?
Linguagem MDXFunção NonEmpty
49
03/05/2010Rudiney Barbosa - [email protected]
SELECT NONEMPTY
(
[DIM CLIENTE].[Nome].CHILDREN,
[DIM FILME].[Nome].CHILDREN
)
ON COLUMNS
FROM POINTFILMES
WHERE MEASURES.[FATOS COUNT]
Linguagem MDXFunção NonEmpty
50
03/05/2010Rudiney Barbosa - [email protected]
05/11/2012
26
� 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]*)
Linguagem MDXFunção NonEmptyCrossJoin
51
03/05/2010Rudiney Barbosa - [email protected]
� 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?
Linguagem MDXFunção NonEmptyCrossJoin
52
03/05/2010Rudiney Barbosa - [email protected]
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,
[DIM FILME].[NOME].CHILDREN
)ON 1
{ [Measures].[FATOS Count], [Measures].[Valor] } on 0
FROM [POINTFILMES]
Linguagem MDXFunção NonEmptyCrossJoin
53
03/05/2010Rudiney Barbosa - [email protected]
� Função TopCount� 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?
Linguagem MDXFunção TopCount
54
03/05/2010Rudiney Barbosa - [email protected]
05/11/2012
28
SELECT
[Measures].[FATOS Count] ON COLUMNS,
TOPCOUNT
(
[DIM CLIENTE].[Nome].children,
10,
[Measures].[FATOS Count]
)ON ROWS
FROM [PointFilmes]
Linguagem MDXFunção TopCount
55
03/05/2010Rudiney Barbosa - [email protected]
� Função Rank� 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)
Linguagem MDXFunção Rank
56
03/05/2010Rudiney Barbosa - [email protected]
05/11/2012
29
� Conjunto Nomeado� Reuso de código
� Simplificar consultas (*)
� Escopo da consulta (o que utilizaremos),
� Escopo da sessão
� Escopo global.
Linguagem MDXConjunto Nomeado
57
03/05/2010Rudiney Barbosa - [email protected]
� Sintaxe:
WITH <Select With Clause> consulta_mdx
<Select With Clause> ::=
[
MEMBER identifier AS mdx_expression
| SET identifier AS set_expression
]+
Linguagem MDXConjunto Nomeado
58
03/05/2010Rudiney Barbosa - [email protected]
05/11/2012
30
� 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.
Linguagem MDXConjunto Nomeado
59
03/05/2010Rudiney Barbosa - [email protected]
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 MDXConjunto Nomeado
60
03/05/2010Rudiney Barbosa - [email protected]
05/11/2012
31
SELECT
{
[Measures].[Rank],
[Measures].[FATOS Count]
} ON 0,
[OrderedSet] ON 1
FROM [PointFilmes]
Linguagem MDXConjunto Nomeado
61
03/05/2010Rudiney Barbosa - [email protected]
� Função DrillDownLevel� Acessa um cojunto em um determinado nível
� Sintaxe:
DrillDownLevel ({conjunto} [, nível | número])
Linguagem MDXFunção DrillDownLevel
62
03/05/2010Rudiney Barbosa - [email protected]
05/11/2012
32
� 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?
Linguagem MDXFunção DrillDownLevel 1
63
03/05/2010Rudiney Barbosa - [email protected]
SELECT
DRILLDOWNLEVEL
(
[DIM_TIME].
[Year - Half Year - Quarter - Month - Date].
[Year].
[Calendar 2009].
[semester 1, 2009]
) ON 0 FROM POINTFILMES
Linguagem MDXFunção DrillDownLevel 1
64
03/05/2010Rudiney Barbosa - [email protected]
05/11/2012
33
� Se uma expressão de nível for especificada (DrillDownLevel ({conjunto} , nível) e não existirnenhum 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.
Linguagem MDXFunção DrillDownLevel 2
65
03/05/2010Rudiney Barbosa - [email protected]
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 MDXFunção DrillDownLevel 2
66
03/05/2010Rudiney Barbosa - [email protected]
05/11/2012
34
� 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.
Linguagem MDXFunção DrillDownLevel 3
67
03/05/2010Rudiney Barbosa - [email protected]
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 MDXFunção DrillDownLevel 3
68
03/05/2010Rudiney Barbosa - [email protected]
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 mês do trimestre?
Linguagem MDXFunção DrillDownLevel 4
69
03/05/2010Rudiney Barbosa - [email protected]
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 MDXFunção DrillDownLevel 4
70
03/05/2010Rudiney Barbosa - [email protected]
05/11/2012
36
� 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?)
Linguagem MDXFunção DrillDownMember
71
03/05/2010Rudiney Barbosa - [email protected]
� 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?
Linguagem MDXFunção DrillDownMember
72
03/05/2010Rudiney Barbosa - [email protected]
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 MDXFunção DrillDownMember
73
03/05/2010Rudiney Barbosa - [email protected]
Não é um conjunto
?
?74
03/05/2010Rudiney Barbosa - [email protected]
05/11/2012
38
Referências
� [1] Business Intelligence, acessado 27/03/2010url: 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/2010Rudiney Barbosa - [email protected]
Referências
� [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_complex_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/1495511/MDX-at-First-Glance-Introduction-to-SQL-Server-MDX-Essentials.htm
76
03/05/2010Rudiney Barbosa - [email protected]
05/11/2012
39
Referências
� [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/2010Rudiney Barbosa - [email protected]