Lenguaje tsql como aproximación a escenarios BI

Enrique Catala Bañuls
Enrique Catala BañulsTechnical Leader at @SolidQ and Microsoft Data Platform MVP
REL30012

Lenguaje TSQL como aproximación a
escenarios BI
300
@enriquecatala

Enrique Catala Bañuls
ecatala@solidq.com

@
@SQSummit13

MCT – Microsoft Active Professional – Technical Ranger
COMUNICADO
EN CUMPLIMIENTO CON LA LEY 15/1999 DE PROTECCION DE DATOS DE
CARÁCTER PERSONAL, PONEMOS EN TU CONOCIMIENTO QUE

ESTA SESIÓN VA A SER GRABADA
POR SOLIDQ Y QUE ESTA GRABACIÓN PODRÍA SER UTILIZADA COMO MATERIAL
DE MARKETING Y HACERSE PUBLICA A TRAVÉS DE DIVERSOS MEDIOS, COMO
POR EJEMPLO NUESTRA PAGINA WEB.
TENIENDO EN CUENTA QUE TU IMAGEN PUEDE APARECER EN ESA GRABACIÓN,
SI NO DESEAS APARECER, ROGAMOS NOS LO COMUNIQUES POR LOS MEDIOS
QUE YA CONOCES.

2
Objetivos de la sesión
1.
2.
3.
4.

Agrupación de conjuntos
Funciones CUBE y ROLLUP
Pivotado de datos
Funciones analíticas en SQL Server 2012

3
DEMO
GROUPING SETS

7
Objetivos de la sesión
1.
2.
3.
4.

Agrupación de conjuntos
Funciones CUBE y ROLLUP
Pivotado de datos
Funciones analíticas en SQL Server 2012

8
DEMO
CUBE y ROLLUP

11
Objetivos de la sesión
1.
2.
3.
4.

Agrupación de conjuntos
Funciones CUBE y ROLLUP
Pivotado de datos
Funciones analíticas en SQL Server 2012

12
Pivotado de datos
PIVOT

Rotar datos desde filas a columnas
Permite agregar múltiples valores a un único
valor
k1

k2

c1

1

A

v1

1

B

v2

1

C

v3

2

A

v4

2

B

v5

2

C

k1

v6

PIVOT

A

B

C

1

v1

v2

v3

2

v4

v5

v6

13
Pivotado de datos
Caso práctico para Open Schema

Cada atributo almacenado en una fila aparte
PIVOT perfecto para representar datos y
manipular este escenario
-- OpenSchema
objectid
attribute
----------- --------1
attr1
1
attr2
1
attr3
2
attr2
2
attr3
2
attr4
2
attr5
3
attr1
3
attr2
3
attr3

val
----------ABC
10
2008-01-01
12.300
X
Y
14.700
XYZ
20
2009-01-01

PIVOT

-- Desired Result:
objectid
attr1 attr2
----------- ----- -----1
ABC
10
2
NULL 12.300
3
XYZ
20

attr3
---------2008-01-01
X
2009-01-01

attr4
----NULL
Y
NULL

14

attr5
-----NULL
13.700
NULL
Pivotar con GROUP BY
-- OpenSchema
objectid
attribute
----------- --------1
attr1
1
attr2
1
attr3
2
attr2
2
attr3
2
attr4
2
attr5
3
attr1
3
attr2
3
attr3

val
----------ABC
10
2008-01-01
12.300
X
Y
14.700
XYZ
20
2009-01-01

PIVOT

-- Desired Result:
objectid
attr1 attr2
----------- ----- -----1
ABC
10
2
NULL 12.300
3
XYZ
20

attr3
---------2008-01-01
X
2009-01-01

attr4
----NULL
Y
NULL

attr5
-----NULL
13.700
NULL

Agregación
SELECT objectid,
MAX(CASE WHEN attribute
MAX(CASE WHEN attribute
MAX(CASE WHEN attribute
MAX(CASE WHEN attribute
MAX(CASE WHEN attribute
FROM dbo.OpenSchema
GROUP BY objectid;

=
=
=
=
=

'attr1'
'attr2'
'attr3'
'attr4'
'attr5'

THEN
THEN
THEN
THEN
THEN

val
val
val
val
val

END)
END)
END)
END)
END)

AS
AS
AS
AS
AS

attr1,
attr2,
attr3,
attr4,
attr5

Distribución

Agrupación
(implícita)
15
Pivotar con operador PIVOT
-- OpenSchema
objectid
attribute
----------- --------1
attr1
1
attr2
1
attr3
2
attr2
2
attr3
2
attr4
2
attr5
3
attr1
3
attr2
3
attr3

val
----------ABC
10
2008-01-01
12.300
X
Y
14.700
XYZ
20
2009-01-01

PIVOT

-- Desired Result:
objectid
attr1 attr2
----------- ----- -----1
ABC
10
2
NULL 12.300
3
XYZ
20

Agrupación
(implícita)
SELECT objectid, attr1, attr2, attr3, attr4, attr5
FROM dbo.OpenSchema
PIVOT(MAX(val)
FOR attribute
IN([attr1],[attr2],[attr3],[attr4],[attr5])
) AS P;

attr3
---------2008-01-01
X
2009-01-01

attr4
----NULL
Y
NULL

attr5
-----NULL
13.700
NULL

Agregación

Distribución

16
Despivotado de datos
UNPIVOT

Rotar datos de columnas a filas
k1

A

B

1

v1

v2

v3

2

v4

v5

v6

k1

C

UNPIVOT

k2

c1

1

A

v1

1

B

v2

1

C

v3

2

A

v4

2

B

v5

2

C

v6

17
DEMO
PIVOT y UNPIVOT

19
Objetivos de la sesión
1.
2.
3.
4.

Agrupación de conjuntos
Funciones CUBE y ROLLUP
Pivotado de datos
Funciones analíticas en SQL Server 2012

20
Window functions
¿Por qué las necesitamos?

¿Qué pasa si queremos obtener la suma y
el valor de la columna? (group y detalle)
id_table
id_table

Select id_table, value,[sum(value)]
select sum(value) as
from table1 as [sum(value)]
sum(value)
from table1

value
value
1 1
1
2 2
1
2 2
2
3 3
1
3 3
2
3 3
3

sum(value)
1
1
2
1
2
3

1
SUM(value)
3
1
3
3
6
6
6
6

Msg 8120, Level 16, State 1, Line 1
Column 'table1.id_table' is invalid in the select list because it is not
contained in either an aggregate function or the GROUP BY clause.

En un motor relacional es correcta esta
aproximación?
21
Window functions
¿Por qué necesitamos window functions?

La solución pasa por usar la cláusula OVER
select id_table,
value,
sum(value) over(partition by id_table)
from table1
id_table

value
1
2
2
3
3
3

sum(value)
1
1
2
1
2
3

1
3
3
6
6
6

22
Window functions
Evolución

Cláusula OVER

23
Window functions
Desglose

Partitioning
Ordering

Slicing/framing

24
Window functions
Conceptos clave

Partition

UNBOUNDED
PRECEDING

CURRENT
ROW

UNBOUNDED
FOLLOWING
25
Window functions
Conceptos clave: Particion

Grupo de filas con
“características”
similares dentro de
un conjunto

actid

tranid
1
2
2
3
3
3

1
1
2
1
2
3

26
Window functions
Conceptos clave: Slicing/Framing

RANGE/ROWS
– ROWS | RANGE BETWEEN <B1> AND <B2>
– ROWS | RANGE <B1>

27
Window functions
Conceptos clave: Slicing/Framing

B1 and B2 can be
–
–
–
–

UNBOUNDED PRECEDING
UNBOUNDED FOLLOWING
CURRENT ROW
FOR ROWS ONLY

• <scalar expression> PRECEDING
• <sclara expression> FOLLOWING

Note

– B1 <= B2 or NULL will be returned

• Except in COUNT() that 0 will be returned

28
Window functions
Conceptos clave

Partition

UNBOUNDED
PRECEDING

CURRENT
ROW

UNBOUNDED
FOLLOWING
29
DEMO
Funciones analíticas

30
Conclusiones
Objetivos de la sesión

•
•
•
•

Agrupación de conjuntos múltiple
Conceptos CUBE y ROLLUP
Pivotado de datos
Funciones analíticas decentes en SQL
Server 2012

31
¿Preguntas?

32
¡Gracias!
@enriquecatala

Enrique Catalá
Mentor

Siéntate a comer con nosotros o tómate un café y aclara tus
dudas 

33
Si quieres disfrutar de las mejores sesiones de
nuestros mentores de España y Latino América,
ésta es tu oportunidad.
http://summit.solidq.com/madrid/
Síguenos:

34
1 of 28

Recommended

Mejoras del lenguaje T-SQL 2012 (parte 1) | SolidQ Summit 2012 by
Mejoras del lenguaje T-SQL 2012 (parte 1) | SolidQ Summit 2012Mejoras del lenguaje T-SQL 2012 (parte 1) | SolidQ Summit 2012
Mejoras del lenguaje T-SQL 2012 (parte 1) | SolidQ Summit 2012SolidQ
964 views41 slides
Report builder, que los informes los haga el usuario - codecamp by
Report builder, que los informes los haga el usuario - codecampReport builder, que los informes los haga el usuario - codecamp
Report builder, que los informes los haga el usuario - codecampSalvador Ramos
11.4K views22 slides
Sql by
SqlSql
Sqlsymple9
3.8K views193 slides
Unidad 3 actividad 2 by
Unidad 3 actividad 2Unidad 3 actividad 2
Unidad 3 actividad 2KARY
4 views28 slides
Unidad 3 actividad 2 by
Unidad 3 actividad 2Unidad 3 actividad 2
Unidad 3 actividad 2KARY
2K views28 slides
Curso Especialista en BI Integrador de Informacion con MSSQLServer 2008 R2 SSIS by
Curso Especialista en BI Integrador de Informacion con MSSQLServer 2008 R2 SSISCurso Especialista en BI Integrador de Informacion con MSSQLServer 2008 R2 SSIS
Curso Especialista en BI Integrador de Informacion con MSSQLServer 2008 R2 SSISPedro Chavez
988 views3 slides

More Related Content

Similar to Lenguaje tsql como aproximación a escenarios BI

Curso de Analista de Negocios con SAP Crystal Reports XI V Jul2015 by
Curso de Analista de Negocios con SAP Crystal Reports XI V Jul2015Curso de Analista de Negocios con SAP Crystal Reports XI V Jul2015
Curso de Analista de Negocios con SAP Crystal Reports XI V Jul2015LPI ONG
2.9K views8 slides
Transact+Sql+2005 by
Transact+Sql+2005Transact+Sql+2005
Transact+Sql+2005Fernando Chaves
533 views8 slides
Machine Learning en SQL Server by
Machine Learning en SQL ServerMachine Learning en SQL Server
Machine Learning en SQL ServerMaximiliano Accotto
283 views25 slides
S ti ci_v1_201302 by
S ti ci_v1_201302S ti ci_v1_201302
S ti ci_v1_201302Daniel Novoa
570 views121 slides
Base de Datos Grupo Los Informaticos by
Base de Datos Grupo Los InformaticosBase de Datos Grupo Los Informaticos
Base de Datos Grupo Los InformaticosPedroJunior178
222 views11 slides
BI para todos by
BI para todosBI para todos
BI para todosJOSE AHIAS LOPEZ PORTILLO
1.9K views25 slides

Similar to Lenguaje tsql como aproximación a escenarios BI(20)

Curso de Analista de Negocios con SAP Crystal Reports XI V Jul2015 by LPI ONG
Curso de Analista de Negocios con SAP Crystal Reports XI V Jul2015Curso de Analista de Negocios con SAP Crystal Reports XI V Jul2015
Curso de Analista de Negocios con SAP Crystal Reports XI V Jul2015
LPI ONG2.9K views
Base de Datos Grupo Los Informaticos by PedroJunior178
Base de Datos Grupo Los InformaticosBase de Datos Grupo Los Informaticos
Base de Datos Grupo Los Informaticos
PedroJunior178222 views
Sql server2008 Revision by ayudamejebuz
Sql server2008 RevisionSql server2008 Revision
Sql server2008 Revision
ayudamejebuz553 views
Microsoft Reactor - Creando un modelo de Regresión con Azure Machine Learnin... by Luis775803
Microsoft Reactor - Creando un modelo de Regresión con Azure Machine Learnin...Microsoft Reactor - Creando un modelo de Regresión con Azure Machine Learnin...
Microsoft Reactor - Creando un modelo de Regresión con Azure Machine Learnin...
Luis77580316 views
Machine Learning Para Definir Clusters De Usuarios Y Acciones Concretas. Medi... by Flat 101
Machine Learning Para Definir Clusters De Usuarios Y Acciones Concretas. Medi...Machine Learning Para Definir Clusters De Usuarios Y Acciones Concretas. Medi...
Machine Learning Para Definir Clusters De Usuarios Y Acciones Concretas. Medi...
Flat 101172 views
Row level security en sql azure y en on premise by SpanishPASSVC
Row level security en sql azure y en on premiseRow level security en sql azure y en on premise
Row level security en sql azure y en on premise
SpanishPASSVC417 views
Taller de Investigacion en Business Intelligence con MSSQL Server 2008R2 by LPI ONG
Taller de Investigacion en Business Intelligence con MSSQL Server 2008R2Taller de Investigacion en Business Intelligence con MSSQL Server 2008R2
Taller de Investigacion en Business Intelligence con MSSQL Server 2008R2
LPI ONG514 views
Manual sql1 by drianda
Manual sql1Manual sql1
Manual sql1
drianda160 views
F004 p006-gfpi guia de aprendizaje 1-fundamentosde sql by Miguel Amgo
F004 p006-gfpi guia de aprendizaje 1-fundamentosde sqlF004 p006-gfpi guia de aprendizaje 1-fundamentosde sql
F004 p006-gfpi guia de aprendizaje 1-fundamentosde sql
Miguel Amgo895 views
Curso de Analista de Negocios con SAP Crystal Report 2013 (Fundamentos) by Pedro Chavez
Curso de Analista de Negocios con SAP Crystal Report 2013 (Fundamentos)Curso de Analista de Negocios con SAP Crystal Report 2013 (Fundamentos)
Curso de Analista de Negocios con SAP Crystal Report 2013 (Fundamentos)
Pedro Chavez1.5K views

More from Enrique Catala Bañuls

Sql server ha muerto, larga vida a sql server by
Sql server ha muerto, larga vida a sql serverSql server ha muerto, larga vida a sql server
Sql server ha muerto, larga vida a sql serverEnrique Catala Bañuls
303 views51 slides
Capas de acceso a datos .net escalables de verdad contra SQL Server by
Capas de acceso a datos .net escalables de verdad contra SQL ServerCapas de acceso a datos .net escalables de verdad contra SQL Server
Capas de acceso a datos .net escalables de verdad contra SQL ServerEnrique Catala Bañuls
534 views27 slides
Paralelismo en SQL Server by
Paralelismo en SQL ServerParalelismo en SQL Server
Paralelismo en SQL ServerEnrique Catala Bañuls
386 views30 slides
Aplicando R al análisis de rendimiento de un servidor by
Aplicando R al análisis de rendimiento de un servidorAplicando R al análisis de rendimiento de un servidor
Aplicando R al análisis de rendimiento de un servidorEnrique Catala Bañuls
152 views20 slides
Técnicas avanzadas para resolver tus problemas de sql server by
Técnicas avanzadas para resolver tus problemas de sql serverTécnicas avanzadas para resolver tus problemas de sql server
Técnicas avanzadas para resolver tus problemas de sql serverEnrique Catala Bañuls
1.7K views28 slides
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el... by
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...Enrique Catala Bañuls
1.4K views26 slides

More from Enrique Catala Bañuls(20)

Capas de acceso a datos .net escalables de verdad contra SQL Server by Enrique Catala Bañuls
Capas de acceso a datos .net escalables de verdad contra SQL ServerCapas de acceso a datos .net escalables de verdad contra SQL Server
Capas de acceso a datos .net escalables de verdad contra SQL Server
Técnicas avanzadas para resolver tus problemas de sql server by Enrique Catala Bañuls
Técnicas avanzadas para resolver tus problemas de sql serverTécnicas avanzadas para resolver tus problemas de sql server
Técnicas avanzadas para resolver tus problemas de sql server
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el... by Enrique Catala Bañuls
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...
Como hacer tuning a capas de acceso a datos en .NET (dotNetConference2016) by Enrique Catala Bañuls
Como hacer tuning a capas de acceso a datos en .NET (dotNetConference2016)Como hacer tuning a capas de acceso a datos en .NET (dotNetConference2016)
Como hacer tuning a capas de acceso a datos en .NET (dotNetConference2016)

Recently uploaded

ESTRATEGIAS DE APOYO MARTIN PALACIO TERCER PERIODO by
ESTRATEGIAS DE APOYO MARTIN PALACIO TERCER PERIODOESTRATEGIAS DE APOYO MARTIN PALACIO TERCER PERIODO
ESTRATEGIAS DE APOYO MARTIN PALACIO TERCER PERIODOpalaciomoralesmartin
7 views5 slides
excelavanzado1-231020003159-be608ddc.pdf by
excelavanzado1-231020003159-be608ddc.pdfexcelavanzado1-231020003159-be608ddc.pdf
excelavanzado1-231020003159-be608ddc.pdfsarahloradorado
12 views23 slides
PyGoat Analizando la seguridad en aplicaciones Django.pdf by
PyGoat Analizando la seguridad en aplicaciones Django.pdfPyGoat Analizando la seguridad en aplicaciones Django.pdf
PyGoat Analizando la seguridad en aplicaciones Django.pdfJose Manuel Ortega Candel
6 views46 slides
programacion orientada a objetos_sebastian segura barreto.pptx by
programacion orientada a objetos_sebastian segura barreto.pptxprogramacion orientada a objetos_sebastian segura barreto.pptx
programacion orientada a objetos_sebastian segura barreto.pptxsebastiansegura25
9 views10 slides
Presentación: El impacto y peligro de la piratería de software by
Presentación: El impacto y peligro de la piratería de softwarePresentación: El impacto y peligro de la piratería de software
Presentación: El impacto y peligro de la piratería de softwareEmanuelMuoz11
16 views66 slides
Probando aplicaciones basadas en LLMs.pdf by
Probando aplicaciones basadas en LLMs.pdfProbando aplicaciones basadas en LLMs.pdf
Probando aplicaciones basadas en LLMs.pdfFederico Toledo
45 views40 slides

Recently uploaded(20)

excelavanzado1-231020003159-be608ddc.pdf by sarahloradorado
excelavanzado1-231020003159-be608ddc.pdfexcelavanzado1-231020003159-be608ddc.pdf
excelavanzado1-231020003159-be608ddc.pdf
sarahloradorado12 views
programacion orientada a objetos_sebastian segura barreto.pptx by sebastiansegura25
programacion orientada a objetos_sebastian segura barreto.pptxprogramacion orientada a objetos_sebastian segura barreto.pptx
programacion orientada a objetos_sebastian segura barreto.pptx
Presentación: El impacto y peligro de la piratería de software by EmanuelMuoz11
Presentación: El impacto y peligro de la piratería de softwarePresentación: El impacto y peligro de la piratería de software
Presentación: El impacto y peligro de la piratería de software
EmanuelMuoz1116 views
Probando aplicaciones basadas en LLMs.pdf by Federico Toledo
Probando aplicaciones basadas en LLMs.pdfProbando aplicaciones basadas en LLMs.pdf
Probando aplicaciones basadas en LLMs.pdf
Federico Toledo45 views
Fundamentos De Electricidad y Electrónica equipo 5.pdf by CamilaCordoba30
Fundamentos De Electricidad y Electrónica equipo 5.pdfFundamentos De Electricidad y Electrónica equipo 5.pdf
Fundamentos De Electricidad y Electrónica equipo 5.pdf
CamilaCordoba3015 views
PROYECTOS 3ER PERIODO Sofia Collazos Santos.pdf by SaMu554
PROYECTOS 3ER PERIODO Sofia Collazos Santos.pdfPROYECTOS 3ER PERIODO Sofia Collazos Santos.pdf
PROYECTOS 3ER PERIODO Sofia Collazos Santos.pdf
SaMu55410 views
Taller de Electricidad y Electrónica.docx by Franksamuel11
Taller de Electricidad y Electrónica.docxTaller de Electricidad y Electrónica.docx
Taller de Electricidad y Electrónica.docx
Franksamuel118 views
Tema 3. Fuentes de Energía no renovables.ppt by AlmuPe
Tema 3. Fuentes de Energía no renovables.pptTema 3. Fuentes de Energía no renovables.ppt
Tema 3. Fuentes de Energía no renovables.ppt
AlmuPe188 views
¡Planificando para el éxito! Usando los Planners de Semantic Kernel para real... by codertectura
¡Planificando para el éxito! Usando los Planners de Semantic Kernel para real...¡Planificando para el éxito! Usando los Planners de Semantic Kernel para real...
¡Planificando para el éxito! Usando los Planners de Semantic Kernel para real...
codertectura57 views

Lenguaje tsql como aproximación a escenarios BI

  • 1. REL30012 Lenguaje TSQL como aproximación a escenarios BI 300 @enriquecatala Enrique Catala Bañuls ecatala@solidq.com @ @SQSummit13 MCT – Microsoft Active Professional – Technical Ranger
  • 2. COMUNICADO EN CUMPLIMIENTO CON LA LEY 15/1999 DE PROTECCION DE DATOS DE CARÁCTER PERSONAL, PONEMOS EN TU CONOCIMIENTO QUE ESTA SESIÓN VA A SER GRABADA POR SOLIDQ Y QUE ESTA GRABACIÓN PODRÍA SER UTILIZADA COMO MATERIAL DE MARKETING Y HACERSE PUBLICA A TRAVÉS DE DIVERSOS MEDIOS, COMO POR EJEMPLO NUESTRA PAGINA WEB. TENIENDO EN CUENTA QUE TU IMAGEN PUEDE APARECER EN ESA GRABACIÓN, SI NO DESEAS APARECER, ROGAMOS NOS LO COMUNIQUES POR LOS MEDIOS QUE YA CONOCES. 2
  • 3. Objetivos de la sesión 1. 2. 3. 4. Agrupación de conjuntos Funciones CUBE y ROLLUP Pivotado de datos Funciones analíticas en SQL Server 2012 3
  • 5. Objetivos de la sesión 1. 2. 3. 4. Agrupación de conjuntos Funciones CUBE y ROLLUP Pivotado de datos Funciones analíticas en SQL Server 2012 8
  • 7. Objetivos de la sesión 1. 2. 3. 4. Agrupación de conjuntos Funciones CUBE y ROLLUP Pivotado de datos Funciones analíticas en SQL Server 2012 12
  • 8. Pivotado de datos PIVOT Rotar datos desde filas a columnas Permite agregar múltiples valores a un único valor k1 k2 c1 1 A v1 1 B v2 1 C v3 2 A v4 2 B v5 2 C k1 v6 PIVOT A B C 1 v1 v2 v3 2 v4 v5 v6 13
  • 9. Pivotado de datos Caso práctico para Open Schema Cada atributo almacenado en una fila aparte PIVOT perfecto para representar datos y manipular este escenario -- OpenSchema objectid attribute ----------- --------1 attr1 1 attr2 1 attr3 2 attr2 2 attr3 2 attr4 2 attr5 3 attr1 3 attr2 3 attr3 val ----------ABC 10 2008-01-01 12.300 X Y 14.700 XYZ 20 2009-01-01 PIVOT -- Desired Result: objectid attr1 attr2 ----------- ----- -----1 ABC 10 2 NULL 12.300 3 XYZ 20 attr3 ---------2008-01-01 X 2009-01-01 attr4 ----NULL Y NULL 14 attr5 -----NULL 13.700 NULL
  • 10. Pivotar con GROUP BY -- OpenSchema objectid attribute ----------- --------1 attr1 1 attr2 1 attr3 2 attr2 2 attr3 2 attr4 2 attr5 3 attr1 3 attr2 3 attr3 val ----------ABC 10 2008-01-01 12.300 X Y 14.700 XYZ 20 2009-01-01 PIVOT -- Desired Result: objectid attr1 attr2 ----------- ----- -----1 ABC 10 2 NULL 12.300 3 XYZ 20 attr3 ---------2008-01-01 X 2009-01-01 attr4 ----NULL Y NULL attr5 -----NULL 13.700 NULL Agregación SELECT objectid, MAX(CASE WHEN attribute MAX(CASE WHEN attribute MAX(CASE WHEN attribute MAX(CASE WHEN attribute MAX(CASE WHEN attribute FROM dbo.OpenSchema GROUP BY objectid; = = = = = 'attr1' 'attr2' 'attr3' 'attr4' 'attr5' THEN THEN THEN THEN THEN val val val val val END) END) END) END) END) AS AS AS AS AS attr1, attr2, attr3, attr4, attr5 Distribución Agrupación (implícita) 15
  • 11. Pivotar con operador PIVOT -- OpenSchema objectid attribute ----------- --------1 attr1 1 attr2 1 attr3 2 attr2 2 attr3 2 attr4 2 attr5 3 attr1 3 attr2 3 attr3 val ----------ABC 10 2008-01-01 12.300 X Y 14.700 XYZ 20 2009-01-01 PIVOT -- Desired Result: objectid attr1 attr2 ----------- ----- -----1 ABC 10 2 NULL 12.300 3 XYZ 20 Agrupación (implícita) SELECT objectid, attr1, attr2, attr3, attr4, attr5 FROM dbo.OpenSchema PIVOT(MAX(val) FOR attribute IN([attr1],[attr2],[attr3],[attr4],[attr5]) ) AS P; attr3 ---------2008-01-01 X 2009-01-01 attr4 ----NULL Y NULL attr5 -----NULL 13.700 NULL Agregación Distribución 16
  • 12. Despivotado de datos UNPIVOT Rotar datos de columnas a filas k1 A B 1 v1 v2 v3 2 v4 v5 v6 k1 C UNPIVOT k2 c1 1 A v1 1 B v2 1 C v3 2 A v4 2 B v5 2 C v6 17
  • 14. Objetivos de la sesión 1. 2. 3. 4. Agrupación de conjuntos Funciones CUBE y ROLLUP Pivotado de datos Funciones analíticas en SQL Server 2012 20
  • 15. Window functions ¿Por qué las necesitamos? ¿Qué pasa si queremos obtener la suma y el valor de la columna? (group y detalle) id_table id_table Select id_table, value,[sum(value)] select sum(value) as from table1 as [sum(value)] sum(value) from table1 value value 1 1 1 2 2 1 2 2 2 3 3 1 3 3 2 3 3 3 sum(value) 1 1 2 1 2 3 1 SUM(value) 3 1 3 3 6 6 6 6 Msg 8120, Level 16, State 1, Line 1 Column 'table1.id_table' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause. En un motor relacional es correcta esta aproximación? 21
  • 16. Window functions ¿Por qué necesitamos window functions? La solución pasa por usar la cláusula OVER select id_table, value, sum(value) over(partition by id_table) from table1 id_table value 1 2 2 3 3 3 sum(value) 1 1 2 1 2 3 1 3 3 6 6 6 22
  • 20. Window functions Conceptos clave: Particion Grupo de filas con “características” similares dentro de un conjunto actid tranid 1 2 2 3 3 3 1 1 2 1 2 3 26
  • 21. Window functions Conceptos clave: Slicing/Framing RANGE/ROWS – ROWS | RANGE BETWEEN <B1> AND <B2> – ROWS | RANGE <B1> 27
  • 22. Window functions Conceptos clave: Slicing/Framing B1 and B2 can be – – – – UNBOUNDED PRECEDING UNBOUNDED FOLLOWING CURRENT ROW FOR ROWS ONLY • <scalar expression> PRECEDING • <sclara expression> FOLLOWING Note – B1 <= B2 or NULL will be returned • Except in COUNT() that 0 will be returned 28
  • 25. Conclusiones Objetivos de la sesión • • • • Agrupación de conjuntos múltiple Conceptos CUBE y ROLLUP Pivotado de datos Funciones analíticas decentes en SQL Server 2012 31
  • 27. ¡Gracias! @enriquecatala Enrique Catalá Mentor Siéntate a comer con nosotros o tómate un café y aclara tus dudas  33
  • 28. Si quieres disfrutar de las mejores sesiones de nuestros mentores de España y Latino América, ésta es tu oportunidad. http://summit.solidq.com/madrid/ Síguenos: 34