24 hop edición español - introduccion a multidimensional expressions (mdx) en analysis services...

48
Introducción a Multidimensional Expressions (MDX) Libera el poder total de Analysis Services Multidimensional Alan Koo Labrín Senior Consultant | Nagnoi, LLC. MVP | MCSE Business Intelligence www.alankoo.com | @alan_koo | Facebook.com/MicrosoftBIyMas

Upload: spanishpassvc

Post on 06-Jul-2015

107 views

Category:

Data & Analytics


0 download

TRANSCRIPT

Page 1: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

Introducción a Multidimensional

Expressions (MDX)

Libera el poder total de Analysis Services Multidimensional

Alan Koo Labrín

Senior Consultant | Nagnoi, LLC.

MVP | MCSE Business Intelligence

www.alankoo.com | @alan_koo | Facebook.com/MicrosoftBIyMas

Page 2: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

Gracias a nuestros auspiciadores

Database Security as Easy as A-B-C

http://www.greensql.com

Hardcore Developer and IT Training

http://www.pluralsight.com

SQL Server PerformanceTry PlanExplorer today!

http://www.sqlsentry.com

Page 3: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

Próximos SQL Saturday

24 de Enero de 2015 https://www.sqlsaturday.com/346/register.aspx

18 de Abril de 2015 https://www.sqlsaturday.com/368/register.aspx

9 de Mayo de 2015 https://www.sqlsaturday.com/373/register.aspx

6 de Diciembre de 2014 https://www.sqlsaturday.com/351/register.aspx

Page 4: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

4

Capítulo Global PASS en Español

4

Reuniones semanales todos los miércoles a

las 12PM UTC-5 (Hora de Colombia)

https://www.facebook.com/SpanishPASSVC

Page 5: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

5

Asistencia Técnica

Si requiere asistenciadurante la sesión debe usar la sección de preguntas que esta en el menú de la derecha.

Use el botón de Zoom para ajustar su pantalla al tamaño deseado

Escriba sus preguntas en la sección de preguntas que esta en el menú de la derecha

Page 6: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

6

Alan Koo

Alan Koo cuenta con más de 13 años de experiencia, diseñando y

desarrollando soluciones orientadas a incrementar el desempeño de los

negocios, tanto en sector público y privado. Debido sus contribuciones y

liderazgo en la comunidad técnica, fue reconocido como Microsoft MVP en el

2014 ya por 5ta vez. Actualmente se desempeña como Consultor Sénior y líder

técnico de la Práctica de Performance Management y Business Intelligence en

Nagnoi, LLC. Co-fundador de PRPASS y actual PASS LATAM Regional Mentor,

mantiene su blog "Microsoft Business Intelligence y más..."

(http://www.alankoo.com).

6

Page 7: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

7

Agenda

Multidimensional Expressions (MDX)

Escenarios de uso

Fundamentos: ¿Dónde estamos?

Sintaxis y ejemplos

Demos, demos, demos,… y más demos!

7

Page 8: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

8

Mi experiencia

Senior Consultant en Nagnoi, LLC.

14+ años en SQL Server

9+ years en BI & OLAP

Microsoft MVP (5th year)

Miembro del equipo Microsoft BI Advisors

MCT Regional Lead – Puerto Rico

MCT Alumni BI / SQL Server / .NET

Co-Founder de Puerto Rico PASS

PASS Regional Mentor - LATAM

Blogger: www.alankoo.com

8

Page 9: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

9

Qué es MDX (Muldimensional Expressions)

• Una base de datos multidimensional (Cubos OLAP), es un método para almacenar datos de

forma multidimensional, generalmente para propósitos de reporte.

• MDX es un lenguaje de consultas para bases de datos OLAP, análogo a SQL como lenguaje

de consulta para bases de datos relacionales.

• Use consultas MDX para obtener datos almacenados en un cubo de SQL Server Analysis

Services.

• Devuelve un conjunto de resultados (dataset) multidimensional que consiste de data de

celdas y data de ejes.

• Originalmente desarrollado por Microsoft (finales de los 90’s).

• Adoptado por muchos otros fabricantes de bases de datos multidimensionales.

9

Page 10: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

10

Escenarios de uso

• Herramientas de inteligencia de negocios

• Excel Pivot Tables

• Reporting Services

• PerformancePoint Services (Sharepoint)

• Power View

• Power Query

• Herramientas de terceros

• Tableau

• Business Objects

• Integración con aplicaciones Web o Windows

• ADOMD.NET

10

Page 11: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

Conceptos FundamentalesIntroducción a MDX

11

Page 12: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

12

Adventure Works Sample Database

Page 13: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

13

Adventure Works Cube

• Dimensiones (dimensiones)

• Medidas (measures)

• Grupo de Medidas (measure groups)

• 11 Measure Groups

• 21Dimensions

13

Page 14: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

14

¿Dónde estamos?

14

• Dimensiones• Date• Product• Customer

• Jerarquías• Calendar (Date)• Product Line (Product)• Country (Customer)

3 niveles:Year, Semester, Quarter

2 niveles:All, Country

2 niveles:All, Product Line

Page 15: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

15

¿Dónde estamos? Members

15

• Los items contenidos dentro de cada jerarquía de una dimension

• Ej. Jerarquía Calendar:• 2004

• H1 CY 2004• Q1 CY 2004• Q2 CY 2004• Q3 CY 2004• Q4 CY 2004

• H2 CY 2004• Ej. Nivel Calendar Quarter:

• Q1 CY 2004• Q2 CY 2004• Q3 CY 2004• Q4 CY 2004

Page 16: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

16

Identificadores

• El nombre de un objeto en Analysis Services

• Cubos, dimensiones, jerarquías (hierarchies), niveles (levels), etc.

• Por defecto:

• [Nombre de Dimensión].[Nombre de Jerarquía].[Nombre de Nivel].[Nombre de Miembro]

• Usando la llave (key) del miembro:

• [Nombre de Dimensión].[Nombre de Jerarquía].&[Llave del Miembro]

16

Page 17: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

17

¿Dónde estamos? Members

17

• Ej. Jerarquía Calendar:• 2004

• H1 CY 2004• Q1 CY 2004• Q2 CY 2004• Q3 CY 2004• Q4 CY 2004

• H2 CY 2004

[Date].[Calendar].[Calendar Quarter].[Q1 CY 2004]

[Date].[Calendar].[CY 2004].[H1 CY 2004].][Q1 CY 2004]

[Date].[Calendar].[Calendar Quarter].&[2004]&[1]

[Date].[Calendar].[Q1 CY 2004]

Page 18: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

18

¿Dónde estamos? Celdas

18

Un lugar en el cubo

Data pertinente a una intersección

de miembros

Contiene medidas

Identificada por los miembros de

una dimensión

Celda

Cantidad 1,134

4 * 4 * 6 = 96 celdas

X * Y * ZProduct * Quarter * Country

Page 19: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

19

¿Dónde estamos? Tuplas

19

Identifica una cela o sección

de un cubo

Representada por un miembro

de cada dimensión

Separados por comas,

delimitados por paréntesis

Celda

Cantidad 1,134

([Product].[Product Line].[Accesories], [Date].[Calendar].[Calendar Quarter].&[2003].&[4],[Customer].[Country].[Australia])

Page 20: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

20

¿Dónde estamos? Tuplas

20

No tiene tener que

explícitamente tener miembros

de todas las dimensiones

Tuple

1. ([Customer].[Country].[Australia])

2. ([Date].[Calendar].[2004].[H1 CY 2004].[Q1 CY 2004], [Customer].[Country].[Australia])

3. ([Date].[Calendar].[2004].[H1 CY 2004].[Q1 CY 2004],([Product].[Product Line].[Mountain],[Customer].[Country].[Australia])

Tuple

Tuple

Page 21: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

21

¿Dónde estamos? Conjuntos (Sets)

21

• Colección de tuplasdefinidas usando las misma dimensiones (en tipo y número)

• Delimitada por llaves {}

{(Customer.Country.Australia), (Customer.Country.Canada)}

{([Date].[Calendar].[2004].[H1 CY 2004]. [Q1 CY 2002], [Product].[Product Line].[Mountain],[Customer].[Country].[Australia]),

([Customer].[Country].[Australia],[Date].[Calendar].[2004].[H1 CY 2004]. [Q1 CY 2003], [Product].[Product Line].[Mountain]),

([Customer].[Country].[Australia],[Date].[Calendar].[2004].[H1 CY 2004]. [Q1 CY 2004], [Product].[Product Line].[Mountain])}

{ }

{Customer.Country.Australia, [Product].[Product Line].[Mountain]}{Customer.Country.Australia, [Product].[Product Line].[Mountain]}

Page 22: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

Consultas MDXMás allá de los Pivot Tables

22

Page 23: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

23

Sintaxis básica de una consulta

• Se usa para devolver un subconjunto de la data multidimensional de un

servidor OLAP

[ WITH <formula_expression> [ , <formula_expression> ... ] ]

SELECT [<axis_expression>, [<axis_expression> ... ]]

FROM [<cube_expression>]

[WHERE [slicer_expression]]

• Ejes (Axis): Hasta 128 ejes, los 5 primeros tienen alias (COLUMN, ROWS,

PAGES, SECTIONS, CHAPTERS)

23

Page 24: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

24

Miembros Calculados

• Cálculos especificados por expresiones MDX

• Resuelto después de la evaluación de la expresión (en lugar de traer la data

original de las tablas de hechos)

24

WITH MEMBER [Measures].[Profit] AS'[Measures].[Internet Sales Amount] - [Measures].[Internet Total Product Cost]'SELECT …

WITH MEMBER Measures.[Cumulative Sales] AS'SUM(YTD(), [Measures].[Internet Sales Amount]) 'SELECT …

Page 25: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

25

Expresiones

• Sentencias parciales de MDX que se evalúan a un valor

• Combinación de identificadores, valores y operadores que Analysis Services

puede evaluar para obtener un resultado

• Usamos las expresiones como parte de los datos a ser devueltos por una

consulta o como una condición de búsqueda de acuerdo a un criterio

25

Page 26: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

26

Expresiones a nivel de Dimensión

Typically used when passing parameters to functions in Multidimensional

Expressions (MDX) to return members, sets, or tuples from a hierarchy.

26

WITH MEMBER [Measures].[MeasureCount] AS

COUNT([Measures].MEMBERS) …

Page 27: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

27

Expresiones a nivel de Jerarquía (dimensión)

hierarchy expression contains either a hierarchy identifier or a hierarchy function

• WITH MEMBER [Measures].[CalendarLevelCount] AS [Date].[Calendar].Levels.Count

SELECT [Measures].[CalendarLevelCount] ON 0

FROM [Adventure Works]

• SELECT [Measures].[Internet Sales Amount] ON 0, [Date].[Calendar].MEMBERS ON 1

FROM [Adventure Works]

27

Page 28: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

28

Expresiones a nivel de Tupla (1/2)

• Made up of one member from every dimension that is contained within a cube

• Uniquely identifies a single cell within the cube

(Member_expression [ ,Member_expression ... ] )

• Can be fully qualified, can contain implicit members, or can contain a single member

• Any dimension not explicitly referenced within a tuple is implicitly referenced

• Tuplas de un solo miembro

• [Measures].[TestMeasure] Miembro

• ( [Measures].[TestMeasure] ) Tupla

28

Page 29: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

29

Expresiones a nivel de Tupla (2/2)

• Conjuntos (Sets): Lista ordenada de cero o más tuplas

• Conjuntos vacios (Empty Set): No contiene tuplas

{ [ { Tuple_expression | Member_expression } [ , { Tuple_expression | Member_expression } ] ... ] }

• SELECT {[Measures].[Internet Sales Amount], [Measures].[Internet Tax Amount]}

ON COLUMNS,

{

([Product].[Product Categories].[Category].&[4], [Date].[Calendar].[Calendar Year].&[2004]),

([Product].[Product Categories].[Category].&[1], [Date].[Calendar].[Calendar Year].&[2003]),

([Product].[Product Categories].[Category].&[3], [Date].[Calendar].[Calendar Year].&[2004])

} ON ROWS

FROM [Adventure Works]

29

Page 30: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

30

Expresiones a nivel de Sub-Cubo

Puede contener un identificador de sub-cubo o una sentencia MDX que

devuelva un sub-cubo.

30

SELECT [Measures].MEMBERS ON COLUMNS, [Date].[Calendar Year].MEMBERS ON ROWS

FROM (SELECT [Measures].[Internet Sales Amount] ON COLUMNS, [Date].[Calendar Year].&[2012] ON ROWSFROM [Adventure Works])

Page 31: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

31

Funciones

• Usadas para operar programáticamente sobre bases de datos

multidimensionales

31

WITH MEMBER Measures.LocationName AS

[Customer].[Country].CurrentMember.Name…

WITH MEMBER Measures.User AS USERNAME…

CROSSJOIN ([Product].[Product Line].[Product Line].MEMBERS,Customer.Country.Members) ON ROWS…

Page 32: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

32

Trabajando con valores Vacíos (empty)

32

WITHMEMBER [Product].[Category].[All Products].ReturnZero AS 0 MEMBER MEASURES.ISEMPTYDemo AS

ISEMPTY([Measures].[Internet Tax Amount]) //Will true for any null or zero value MEMBER MEASURES.IsZero AS

[Measures].[Internet Tax Amount]=0 SELECT {[Measures].[Internet Tax Amount],

MEASURES.ISEMPTYDemo, MEASURES.IsZero} ON COLUMNS, [Product].[Category].[Category].ALLMEMBERS ON ROWS

FROM [Adventure Works] WHERE [Date].[Calendar].[Calendar Year].&[2012]

Page 33: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

33

NON EMPTY

33

SELECT {[Measures].[Internet Tax Amount]} ON COLUMNS, NON EMPTY [Product].[Category].[Category].MEMBERS ON ROWSFROM [Adventure Works] WHERE([Date].[Calendar].[Calendar Year].&[2012])

Page 34: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

34

Fundamentos: NonEmpty

34

WITH MEMBER MEASURES.CategoryCount ASCOUNT([Product].[Category].[Category].MEMBERS) MEMBER MEASURES.NonEmptyCategoryCountFor2012 ASCOUNT(

NONEMPTY( [Product].[Category].[Category].MEMBERS ,([Date].[Calendar].[Calendar Year].&[2012], [Measures].[Internet Tax Amount]) )

) SELECT {MEASURES.CategoryCount, MEASURES.NonEmptyCategoryCountFor2012 } ON COLUMNSFROM [Adventure Works];

Page 35: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

Funciones y más funcionesMás allá de los Pivot Tables

35

Page 36: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

36

Funciones (Sintaxis MDX)

36

Categoría Descripción

Array functions Provide arrays for use in stored procedures

Dimension functions Return a reference to a dimension from a hierarchy, level, or member.

Hierarchy functions Return a reference to a hierarchy from a level or member.

Level functions Return a reference to a level from a member, dimension, hierarchy, or from a string expression.

Logical functions Perform logical operations and comparisons on objects and expressions.

Member functions Return a reference to a member from other objects or from a string expression.

Numeric functions Perform mathematical and statistical functions on objects and expressions.

Set functions Return a reference to a set from other objects or from a string expression.

String functions Return string values from other objects or from the server.

Tuple functions Return a reference to a tuple from a set or from a string expression.

Page 37: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

37

Funciones de Cadena (String)

37

WITHMEMBER [Measures].[ProductName] AS

[Product].[Product].CurrentMember.NameMEMBER [Measures].[ProductUniqueName] AS

[Product].[Product].CurrentMember.UniquenameMEMBER [Measures].[ProductDimensionName] AS

[Product].NameSELECT {[Measures].[ProductName], [Measures].[ProductUniqueName],

[Measures].[ProductDimensionName]} ON COLUMNS, [Product].[Product].MEMBERS ON ROWS

FROM [Adventure Works] ;

Page 38: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

38

Funciones de Cadena (String)

38

SELECT {STRTOMEMBER("[Measures].[Inter" + "net Sales Amount]")} ON COLUMNS, STRTOSET("{

[Product].[Product Categories].[Category].&[3], [Product].[Product Categories].[Product].&[477], [Product].[Product Categories].[Product].&[788], [Product].[Product Categories].[Product].&[708], [Product].[Product Categories].[Product].&[711] }") ON ROWS

FROM [Adventure Works];

Page 39: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

39

Funciones Lógicas

39

WITHMEMBER MEASURES.[IsLeafDemo] AS

IsLeaf([Date].[Calendar].CurrentMember)

MEMBER MEASURES.[IsAncestorDemo] ASIsAncestor([Date].[Calendar].CurrentMember, [Date].[Calendar].[Date].&[1])

SELECT {MEASURES.[IsLeafDemo], MEASURES.[IsAncestorDemo] } ON 0, [Date].[Calendar].MEMBERS ON 1

FROM [Adventure Works];

Page 40: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

40

Funciones a nivel de Miembro

40

WITHMEMBER MEASURES.[CurrentMemberDemo] AS

[Date].[Calendar].CurrentMember.NameMEMBER MEASURES.[ParentDemo] AS

[Date].[Calendar].CurrentMember.Parent.NameMEMBER MEASURES.[AncestorDemo] AS

ANCESTOR([Date].[Calendar].CurrentMember, [Date].[Calendar].[Calendar Year]).NameMEMBER MEASURES.[PrevMemberDemo] AS

[Date].[Calendar].CurrentMember.Prevmember.NameSELECT {MEASURES.[CurrentMemberDemo], MEASURES.[ParentDemo],

MEASURES.[AncestorDemo], MEASURES.[PrevMemberDemo] } ON 0, [Date].[Calendar].MEMBERS ON 1

FROM [Adventure Works];

Page 41: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

41

Funciones a nivel de Miembro: ParallelPeriod

41

january

february

march

april

may

june

july

august

september

october

november

december

Quarter 1

Quarter 2

Quarter 3

Quarter 4

Semester 1

Semester 2

ParallelPeriod([Quarter, 1, April])

ParallelPeriod([Quarter, -2, April])

Page 42: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

42

Funciones a nivel de Conjunto (Set): Descendants

42

SELECT [Measures].[Internet Sales Amount] ON Columns, DESCENDANTS( [Date].[Calendar].[Calendar Year].&[2011] ,

[Date].[Calendar].[Date]) ON RowsFROM [Adventure Works];

Page 43: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

43

Funciones a nivel de Conjunto (Set): Order

43

SELECT [Measures].[Internet Sales Amount] ON Columns, ORDER(

DESCENDANTS( [Date].[Calendar].[Calendar Year].&[2012] ,

[Date].[Calendar].[Date]) , [Measures].[Internet Sales Amount], BDESC

) ON ROWSFROM [Adventure Works] ;

Page 44: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

44

Funciones a nivel de Conjunto (Set): Filter

44

SELECT [Measures].[Internet Sales Amount] ON Columns, FILTER(

DESCENDANTS( [Date].[Calendar].[Calendar Year].&[2010] , [Date].[Calendar].[Date])

, [Measures].[Internet Sales Amount]>10000) ON Rows

FROM [Adventure Works]

Page 45: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

Preguntas?

Page 46: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

Referencias

Page 47: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

¡Gracias!

Alan KooSenior Consultant | Nagnoi, LLC.

Blog: www.alankoo.com

Twitter: @alan_koo

facebook.com/MicrosofBIyMas

Page 48: 24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en analysis services multidimensional- - Alan Koo

Gracias por participar