linguagem mdx

39
05/11/2012 1 MULTIDIMENTIONAL EXPRESSIONS Linguagem MDX 1 03/05/2010 Rudiney Barbosa - [email protected] Linguagem MDX Introdução Microsoft, década de 90. Criação de relatórios Business Intelligence --> gestão de negócio 2 03/05/2010 Rudiney Barbosa - [email protected]

Upload: rudi-barbosa

Post on 16-Apr-2017

335 views

Category:

Education


3 download

TRANSCRIPT

Page 1: Linguagem mdx

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]

Page 2: Linguagem mdx

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]

Page 3: Linguagem mdx

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]

Page 4: Linguagem mdx

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]

Page 5: Linguagem mdx

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]

Page 6: Linguagem mdx

05/11/2012

6

Linguagem MDX

11

03/05/2010Rudiney Barbosa - [email protected]

Linguagem MDX

12

03/05/2010Rudiney Barbosa - [email protected]

Page 7: Linguagem mdx

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]

Page 8: Linguagem mdx

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]

Page 9: Linguagem mdx

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]

Page 10: Linguagem mdx

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]

Page 11: Linguagem mdx

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]

Page 12: Linguagem mdx

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]

Page 13: Linguagem mdx

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]

Page 14: Linguagem mdx

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]

Page 15: Linguagem mdx

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]

Page 16: Linguagem mdx

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]

Page 17: Linguagem mdx

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]

Page 18: Linguagem mdx

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]

Page 19: Linguagem mdx

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]

Page 20: Linguagem mdx

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]

Page 21: Linguagem mdx

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]

Page 22: Linguagem mdx

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]

Page 23: Linguagem mdx

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]

Page 24: Linguagem mdx

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]

Page 25: Linguagem mdx

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]

Page 26: Linguagem mdx

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]

Page 27: Linguagem mdx

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]

Page 28: Linguagem mdx

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]

Page 29: Linguagem mdx

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]

Page 30: Linguagem mdx

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]

Page 31: Linguagem mdx

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]

Page 32: Linguagem mdx

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]

Page 33: Linguagem mdx

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]

Page 34: Linguagem mdx

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]

Page 35: Linguagem mdx

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]

Page 36: Linguagem mdx

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]

Page 37: Linguagem mdx

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]

Page 38: Linguagem mdx

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]

Page 39: Linguagem mdx

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]