25
Dominando las funciones de ventana en TSQL 19 de Noviembre (12 pm GMT -5) José L. Rivera Resúmen: Las funciones de ventana (TSQL window functions), originalmente presentadas en SQL Server han probado ser muy útiles para resolver escenarios complejos de clasificación/ordenamiento y agregación. Las mejoras que nos trae SQL Server 2012 hace imperativo conocer su funcionamiento y aplicación. En esta sesión discutiremos sus componentes principales y como utilizar las mismas tomando como ejemplos situaciones de la vida real. Próximos Eventos 3 y 4 de Diciembre Configurando transactional replication para reporteo de una forma segura 26 de Noviembre Kenneth Ureña Está por comenzar:

Dominando las funciones de ventana (window functions) en TSQL

Embed Size (px)

DESCRIPTION

Las funciones de ventana (TSQL window functions), originalmente presentadas en SQL Server han probado ser muy útiles para resolver escenarios complejos de clasificación/ordenamiento y agregación. Las mejoras que nos trae SQL Server 2012 hace imperativo conocer su funcionamiento y aplicación. En esta sesión discutiremos sus componentes principales y como utilizar las mismas tomando como ejemplos situaciones de la vida real.

Citation preview

Page 1: Dominando las funciones de ventana (window functions) en TSQL

Dominando las funciones de ventana en TSQL

19 de Noviembre (12 pm GMT -5)

José L. Rivera

Resúmen:

Las funciones de ventana (TSQL window functions),

originalmente presentadas en SQL Server han probado

ser muy útiles para resolver escenarios complejos de

clasificación/ordenamiento y agregación. Las mejoras

que nos trae SQL Server 2012 hace imperativo conocer

su funcionamiento y aplicación. En esta sesión

discutiremos sus componentes principales y como

utilizar las mismas tomando como ejemplos situaciones

de la vida real.

Próximos Eventos

3 y 4 de Diciembre

Configurando transactional

replication para reporteo de una

forma segura

26 de Noviembre

Kenneth Ureña

Está por comenzar:

Page 2: Dominando las funciones de ventana (window functions) en TSQL

Dominando las funciones de ventana en TSQL

19 de Noviembre de 2014

Jose L. Rivera

MVP | MCITP | MCTS | MCSA

BI Consultant, Nagnoi LLC

PASS Global Spanish VC | PRPASS

Page 3: Dominando las funciones de ventana (window functions) en TSQL
Page 4: Dominando las funciones de ventana (window functions) en TSQL

Agenda

- Resumen de la funciones

- OVER

- Categorías de funciones

- Ordenamiento

- Agregación

- Analíticos

- Q & A

Page 5: Dominando las funciones de ventana (window functions) en TSQL

• Introducido en SQL Server 2005, mejoras significativas en

SQL Server 2012

• La función es aplicada a un conjunto de filas (rows)

• La especificación de la ventana es implementada usando

la clausula de OVER

• Todavía es trabajo en progreso!

Funciones de Ventana (Windows Functions)

Page 6: Dominando las funciones de ventana (window functions) en TSQL

Divide el conjunto en

pedazos (particiones) y la

operación es aplicada a cada

partición individualmente

Delimita las filas dentro de la

partición al especificar las

fronteras dentro de la

partición

La Clausula OVER

• Define el conjunto (ventana) sobre la cual la función será

aplicada

OVER (

<PARTITION BY clause>

<ORDER BY clause>

<ROW or RANGE clause>

)

Define el orden lógico de la

data para cada partición de

un conjunto

Page 7: Dominando las funciones de ventana (window functions) en TSQL

Operaciones basadas en conjuntos (Windowing)

ID AcctID TransDate TransAmt

1 1234 27/11/2012 $150.00

2 1234 27/11/2012 $22.00

3 5678 28/11/2012 $50.00

4 5678 28/11/2012 $150.00

5 5678 28/11/2012 $10.00

6 5678 29/11/2012 $120.00

7 0987 30/11/2012 $20.00

8 0987 30/11/2012 $100.00

9 0987 30/11/2012 $50.00

Aggregation Window:SUM(TransAmt) OVER(PARTITION BY TransDate)

Ranking Window:ROW_NUMBER() OVER(PARTITION BY TransDate

ORDER BY AcctID, ID)

AcctID TransDate TransAmt BalAmt

5678 28/11/2012 $50.00 $50.00

5678 28/11/2012 $150.00 $200.00

5678 28/11/2012 $10.00 $210.00

AcctID TransDate TransAmt BalAmt Rank

5678 28/11/2012 $50.00 $50.00 1

5678 28/11/2012 $150.00 $200.00 2

5678 28/11/2012 $10.00 $210.00 3

AcctID TransDate TransAmt

5678 28/11/2012 $50.00

5678 28/11/2012 $150.00

5678 28/11/2012 $10.00

Page 8: Dominando las funciones de ventana (window functions) en TSQL

ROW or RANGE (moldura)

• Define como nos movemos dentro de la ventana para

modificar la selección de las filas

• BETWEEN <window frame bound > AND <window frame bound >

Page 9: Dominando las funciones de ventana (window functions) en TSQL

Categorías de funciones

Orden Agregación Analítico

ROW_NUMBER()

RANK()

DENSE_RANK()

NTILE()

SUM() | AVG() | COUNT()

MIN() | MAX()

CHECKSUM_AGG

STDEV() | STDEVP()

VAR() | VARP()

LEAD() | LAG()

FIRST_VALUE() | LAST_VALUE()

CUME_DIST()

PERCENT_RANK()

PERCENTILE_DIST()

PERCENTILE_CONT()

Page 10: Dominando las funciones de ventana (window functions) en TSQL

Ordenamiento

• ROW_NUMBER()• Genera un numero secuencial continuo (comienza en 1)

• RANK()• Ordena la data (Olympic rank – en caso de empate)

• DENSE_RANK()• Ordena la data sin brincos

• NTILE()• Distribuye la data en grupos

No hay moldura

Page 11: Dominando las funciones de ventana (window functions) en TSQL

DEMOFunciones de Ordenamiento

Page 12: Dominando las funciones de ventana (window functions) en TSQL

Agregación

• SUM() | AVG() | COUNT() | COUNT_BIG() | MIN() | MAX()• Son las mas comunes, no hay sorpresas

• CHECKSUM_AGG• Calcula un checksum de los valores en el grupo

• STDEV() | STDEVP()• Desviación estándar estadística (regular o poblacional)

• VAR() | VAR()• Varianza estadística (regular o poblacional)

Page 13: Dominando las funciones de ventana (window functions) en TSQL

DEMOFunciones de Agregación

Page 14: Dominando las funciones de ventana (window functions) en TSQL

Analíticos

• LEAD() | LAG()

• Obtiene la data de la fila anterior o posterior en el mismo

conjunto

LEAD | LAG

(scalar_expression [,offset] [,default])

OVER ( [ partition_by_clause ]

order_by_clause )

No hay moldura

Page 15: Dominando las funciones de ventana (window functions) en TSQL

Analíticos

• FIRST_VALUE() | LAST_VALUE()

• Permite obtener el primer/ultimo valor en un conjunto

ordenado de valores

FIRST_VALUE | LAST_VALUE

( [scalar_expression] )

OVER ( [ partition_by_clause ]

order_by_clause

rows_range_clause )

Page 16: Dominando las funciones de ventana (window functions) en TSQL

Analíticos

• CUME_DIST()

• Calcula la distribución acumulativa de un valor en un grupo

de valores

No hay moldura

CUME_DIST()

OVER ( [ partition_by_clause ]

order_by_clause )

Page 17: Dominando las funciones de ventana (window functions) en TSQL

Analíticos

• PERCENT_RANK()

• Calcula el orden relativo de una fila dentro de un grupo de

filas

No hay moldura

PERCENT_RANK()

OVER ( [ partition_by_clause ]

order_by_clause )

Page 18: Dominando las funciones de ventana (window functions) en TSQL

Analíticos

• PERCENTILE_DIST()

• Calcula la percentila para un conjunto de valores ordenados

No hay moldura

PERCENTILE_DIST ( numeric_literal )

WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ] )

OVER ( [ partition_by_clause ]

order_by_clause

rows_range_clause )

Page 19: Dominando las funciones de ventana (window functions) en TSQL

Analíticos

• PERCENTILE_CONT()

• Calcula la percentila basada en una distribución continua de

valores.

No hay moldura

PERCENTILE_CONT ( numeric_literal )

WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ] )

OVER ( [ partition_by_clause ]

order_by_clause

rows_range_clause )

Page 20: Dominando las funciones de ventana (window functions) en TSQL

DEMOFunciones Analíticas

Page 21: Dominando las funciones de ventana (window functions) en TSQL

Importante!

• SQL Server 2005/2008/2008 R2• Ordenamiento

• PARTITION BY + ORDER BY

• Agregación

• Solo PARTITION BY

• SQL Server 2012+• Analíticos

• Agregación

• Se añaden ORDER BY

• Window Framing (ROWS | RANGE)

Page 22: Dominando las funciones de ventana (window functions) en TSQL

Manténgase conectado a nosotros!

Visítenos en http://globalspanish.sqlpass.org

/SpanishPASSVC

lnkd.in/dtYBzev

/user/SpanishPASSVC

/SpanishPASSVC

Page 23: Dominando las funciones de ventana (window functions) en TSQL

Outstanding Volunteer AwardDo you know a volunteer that has gone

above and beyond recently?

Nominate them for the monthly OVA.

[email protected]

PASS Volunteer Awards

PASSion AwardThe highest of PASS accolades presented

yearly to a volunteer.

Page 24: Dominando las funciones de ventana (window functions) en TSQL

Manténgase involucrado!

• Registrate HOY en sqlpass.org para una membresia gratuita

• Linked In: http://www.sqlpass.org/linkedin

• Facebook: http://www.sqlpass.org/facebook

• Twitter: @SQLPASS

• PASS: http://www.sqlpass.org

Page 25: Dominando las funciones de ventana (window functions) en TSQL

Configurando transactional replication para reporteo de una forma segura

26 de Noviembre (12 pm GMT -5)

Kenneth Ureña

Resúmen:

En esta sesión vamos a ver la forma de configurar

transactional replication, la seguridad necesaria y los

diferentes componentes que se involucran en el

funcionamiento de la misma. Al igual como las mejores

prácticas para escalabilidad y distribuciones de carga,

convirtiendo nuestro entorno replicado en un amigo de

distribución de carga, en lugar de una carga de la

administración.

Próximo Evento