REL30012

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

Enrique Catala Bañuls
ecatala@solidq.com

@
...
COMUNICADO
EN CUMPLIMIENTO CON LA LEY 15/1999 DE PROTECCION DE DATOS DE
CARÁCTER PERSONAL, PONEMOS EN TU CONOCIMIENTO QUE
...
Objetivos de la sesión
1.
2.
3.
4.

Agrupación de conjuntos
Funciones CUBE y ROLLUP
Pivotado de datos
Funciones analíticas...
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...
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...
Pivotado de datos
PIVOT

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

k2

c1
...
Pivotado de datos
Caso práctico para Open Schema

Cada atributo almacenado en una fila aparte
PIVOT perfecto para represen...
Pivotar con GROUP BY
-- OpenSchema
objectid
attribute
----------- --------1
attr1
1
attr2
1
attr3
2
attr2
2
attr3
2
attr4
...
Pivotar con operador PIVOT
-- OpenSchema
objectid
attribute
----------- --------1
attr1
1
attr2
1
attr3
2
attr2
2
attr3
2
...
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

...
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...
Window functions
¿Por qué las necesitamos?

¿Qué pasa si queremos obtener la suma y
el valor de la columna? (group y detal...
Window functions
¿Por qué necesitamos window functions?

La solución pasa por usar la cláusula OVER
select id_table,
value...
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

...
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
CURRE...
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
F...
¿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...
Upcoming SlideShare
Loading in …5
×

Lenguaje tsql como aproximación a escenarios BI

328 views
220 views

Published on

La sintaxis T-SQL está evolucionando con cada versión del motor relacional y cada vez es más habitual encontrar entre sus novedades, funciones analíticas para resolver problemas que típicamente requerían de infraestructura Multi-dimensional. En esta sesión vamos a dar un repaso a las funciones analíticas de las que disponemos en el motor relacional, para ver hasta qué punto nos pueden resultar útiles a la hora de mejorar procesos de negocio.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
328
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Lenguaje tsql como aproximación a escenarios BI

  1. 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. 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. 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
  4. 4. DEMO GROUPING SETS 7
  5. 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
  6. 6. DEMO CUBE y ROLLUP 11
  7. 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. 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. 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. 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. 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. 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
  13. 13. DEMO PIVOT y UNPIVOT 19
  14. 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. 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. 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
  17. 17. Window functions Evolución Cláusula OVER 23
  18. 18. Window functions Desglose Partitioning Ordering Slicing/framing 24
  19. 19. Window functions Conceptos clave Partition UNBOUNDED PRECEDING CURRENT ROW UNBOUNDED FOLLOWING 25
  20. 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. 21. Window functions Conceptos clave: Slicing/Framing RANGE/ROWS – ROWS | RANGE BETWEEN <B1> AND <B2> – ROWS | RANGE <B1> 27
  22. 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
  23. 23. Window functions Conceptos clave Partition UNBOUNDED PRECEDING CURRENT ROW UNBOUNDED FOLLOWING 29
  24. 24. DEMO Funciones analíticas 30
  25. 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
  26. 26. ¿Preguntas? 32
  27. 27. ¡Gracias! @enriquecatala Enrique Catalá Mentor Siéntate a comer con nosotros o tómate un café y aclara tus dudas  33
  28. 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

×