SlideShare una empresa de Scribd logo
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

Más contenido relacionado

PDF
Mejoras del lenguaje T-SQL 2012 (parte 1) | SolidQ Summit 2012
PDF
Report builder, que los informes los haga el usuario - codecamp
PPT
Sql
DOCX
Unidad 3 actividad 2
DOCX
Unidad 3 actividad 2
DOC
Curso Especialista en BI Integrador de Informacion con MSSQLServer 2008 R2 SSIS
DOC
Curso Especialista en BI Generador de Informes con MSSQLServer 2008 R2 SSRS
DOCX
Unidad 3 actividad 2
Mejoras del lenguaje T-SQL 2012 (parte 1) | SolidQ Summit 2012
Report builder, que los informes los haga el usuario - codecamp
Sql
Unidad 3 actividad 2
Unidad 3 actividad 2
Curso Especialista en BI Integrador de Informacion con MSSQLServer 2008 R2 SSIS
Curso Especialista en BI Generador de Informes con MSSQLServer 2008 R2 SSRS
Unidad 3 actividad 2

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

PDF
Curso de Analista de Negocios con SAP Crystal Reports XI V Jul2015
DOC
Transact+Sql+2005
PPTX
Machine Learning en SQL Server
PPTX
S ti ci_v1_201302
PPTX
Base de Datos Grupo Los Informaticos
PPTX
PDF
Sql server2008 Revision
PPTX
Microsoft Reactor - Creando un modelo de Regresión con Azure Machine Learnin...
PPTX
Técnicas avanzadas de consultas con sql server 2014
PDF
Machine Learning Para Definir Clusters De Usuarios Y Acciones Concretas. Medi...
PDF
Monitorización proactiva con performance data collectors
PDF
Caracteristicas de dbms_SQL SERVER 2008
PPTX
Row level security en sql azure y en on premise
DOC
Taller de Investigacion en Business Intelligence con MSSQL Server 2008R2
PPTX
Exposicion_Terabyte.pptx
PDF
Manual sql1(1)
PDF
Manual sql1
PDF
Manual-SQL1.pdf
DOCX
F004 p006-gfpi guia de aprendizaje 1-fundamentosde sql
DOC
Curso de Analista de Negocios con SAP Crystal Report 2013 (Fundamentos)
Curso de Analista de Negocios con SAP Crystal Reports XI V Jul2015
Transact+Sql+2005
Machine Learning en SQL Server
S ti ci_v1_201302
Base de Datos Grupo Los Informaticos
Sql server2008 Revision
Microsoft Reactor - Creando un modelo de Regresión con Azure Machine Learnin...
Técnicas avanzadas de consultas con sql server 2014
Machine Learning Para Definir Clusters De Usuarios Y Acciones Concretas. Medi...
Monitorización proactiva con performance data collectors
Caracteristicas de dbms_SQL SERVER 2008
Row level security en sql azure y en on premise
Taller de Investigacion en Business Intelligence con MSSQL Server 2008R2
Exposicion_Terabyte.pptx
Manual sql1(1)
Manual sql1
Manual-SQL1.pdf
F004 p006-gfpi guia de aprendizaje 1-fundamentosde sql
Curso de Analista de Negocios con SAP Crystal Report 2013 (Fundamentos)
Publicidad

Más de Enrique Catala Bañuls (20)

PDF
Sql server ha muerto, larga vida a sql server
PDF
Capas de acceso a datos .net escalables de verdad contra SQL Server
PDF
Paralelismo en SQL Server
PDF
Aplicando R al análisis de rendimiento de un servidor
PDF
Técnicas avanzadas para resolver tus problemas de sql server
PDF
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...
PDF
Planes de ejecución 3.0 sql 2016 y v next
PDF
Paralelismo en sql server
PDF
Aplicando R al análisis de rendimiento de un servidor
PDF
PDF
Planes de ejecucion 2016
PDF
Sql server 2016 novedades para desarrolladores
PDF
Dawarehouse como servicio en azure (sqldw)
PDF
PDF
Planes de ejecucion 2
PDF
Planes de ejecucion 1
PDF
Migración a sql server 2016
PDF
Datawarehouse como servicio en azure (sqldw)
PDF
Como hacer tuning a capas de acceso a datos en .NET (dotNetConference2016)
PPTX
Como leer planes de ejecución - edición 2015
Sql server ha muerto, larga vida a sql server
Capas de acceso a datos .net escalables de verdad contra SQL Server
Paralelismo en SQL Server
Aplicando R al análisis de rendimiento de un servidor
Técnicas avanzadas para resolver tus problemas de sql server
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...
Planes de ejecución 3.0 sql 2016 y v next
Paralelismo en sql server
Aplicando R al análisis de rendimiento de un servidor
Planes de ejecucion 2016
Sql server 2016 novedades para desarrolladores
Dawarehouse como servicio en azure (sqldw)
Planes de ejecucion 2
Planes de ejecucion 1
Migración a sql server 2016
Datawarehouse como servicio en azure (sqldw)
Como hacer tuning a capas de acceso a datos en .NET (dotNetConference2016)
Como leer planes de ejecución - edición 2015
Publicidad

Último (20)

PPT
introduccion a las_web en el 2025_mejoras.ppt
PPT
El-Gobierno-Electrónico-En-El-Estado-Bolivia
PDF
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
PDF
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
PPTX
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
PPTX
REDES INFORMATICAS REDES INFORMATICAS.pptx
PPTX
Power Point Nicolás Carrasco (disertación Roblox).pptx
PDF
taller de informática - LEY DE OHM
PDF
clase auditoria informatica 2025.........
PPTX
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
PPT
Que son las redes de computadores y sus partes
PPTX
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
PPTX
Sesion 1 de microsoft power point - Clase 1
PDF
CyberOps Associate - Cisco Networking Academy
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PDF
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
PDF
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
PPTX
Presentación de Redes de Datos modelo osi
PDF
Influencia-del-uso-de-redes-sociales.pdf
PDF
Maste clas de estructura metálica y arquitectura
introduccion a las_web en el 2025_mejoras.ppt
El-Gobierno-Electrónico-En-El-Estado-Bolivia
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
REDES INFORMATICAS REDES INFORMATICAS.pptx
Power Point Nicolás Carrasco (disertación Roblox).pptx
taller de informática - LEY DE OHM
clase auditoria informatica 2025.........
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
Que son las redes de computadores y sus partes
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
Sesion 1 de microsoft power point - Clase 1
CyberOps Associate - Cisco Networking Academy
historia_web de la creacion de un navegador_presentacion.pptx
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
Presentación de Redes de Datos modelo osi
Influencia-del-uso-de-redes-sociales.pdf
Maste clas de estructura metálica y arquitectura

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