Saltar al contenido principal
Workday User Guide
Última actualización: 2023-06-23
LAG

LAG

Descripción

LAG
es una función de agregado de ventana que divide las filas en grupos, ordena las filas por un campo y devuelve el valor de un campo de la fila en el desplazamiento especificado antes (por encima) de la fila actual del grupo.
El
PARTITION BY
determina qué campos se utilizarán para dividir un conjunto de filas de entrada en grupos. El
ORDER BY
determina cómo ordenar las filas en la partición.
Workday separa las filas de entrada en grupos según los campos de partición, ordena las filas según los campos de ordenación y, a continuación, calcula la expresión agregada (retraso para esta función) en cada grupo.

Sintaxis

LAG
(
input_field
,
offset
,
default_value
)
OVER
(
PARTITION BY
partitioning_field
[,
partitioning_field
]
ORDER BY
ordering_field
[ASC | DESC] [,
ordering_field
[ASC | DESC]] )

Valor devuelto

Devuelve un valor por fila del mismo tipo que
input_field
.

Parámetros de entrada

input_field
Es obligatorio. El campo en el que se va a realizar la función de agregado. Puede especificar cualquier tipo de campo.
offset
Opcional. El número de filas antes de la fila actual cuyo valor se va a devolver. Debe ser un número literal superior o igual a cero (0) e inferior o igual a 100. Si no especifica la compensación, Workday utiliza el valor 1.
default_value
Opcional. El valor que devuelve esta función cuando la fila de compensación está fuera de la ventana definida actualmente o cuando el valor de la fila de compensación es NULL.
default_value
debe ser del mismo tipo que
input_field
. Si no especifica un valor por defecto, Workday utiliza el valor NULL.
OVER()
Obligatorio
OVER
debe utilizarse en un
LAG
expresión
PARTICIÓN POR
campo_partición
Es obligatorio. Utilizar el
PARTITION BY
para especificar uno o varios campos que se utilizarán para dividir un grupo de filas de entrada. Puede especificar cualquier tipo de campo excepto Moneda. Ejemplo: especifica el campo Mes como campo de partición, por lo que Workday agrupa en una sola partición todos los registros que tienen el mismo valor para Mes.
ORDER BY
ordering_field
Es obligatorio. Utilizar el
ORDER BY
para especificar cómo ordenar las filas de entrada en la partición utilizando los valores del campo especificado dentro de cada partición. Puede especificar cualquier tipo de campo excepto Moneda.
Puede utilizar el
DESC
o
ASC
palabras clave para ordenar en orden descendente (valores de mayor a menor, los valores NULL son los últimos) o ascendente (valores de menor a mayor, los valores NULL son los primeros) para cada campo de ordenación. Si no especifica un criterio de ordenación para un campo de ordenación, Workday ordena automáticamente las filas en orden ascendente.

Ejemplos

Ejemplo: tiene un conjunto de datos con estas filas y campos.
row_ID
Employee_Name
Eff_Date
Salarial
1
Goh
1/1/18
49000
2
Goh
1/1/19
56000
3
Goh
1/1/17
44000
4
Freeman
1/1/18
65000
5
Freeman
1/1/17
57000
6
Freeman
1/1/19
69000
7
Herrero
1/1/18
51000
8
Herrero
1/1/19
56000
9
Herrero
1/1/16
44000
Puede ordenar las filas de cada empleado en orden ascendente (ASC) por el campo de fecha efectiva (
Eff_Date
), de modo que el salario más reciente aparezca primero en cada partición.
Utilice esta expresión en el campo
Salary_Increase
para calcular el cambio de salario entre cada cambio en la fecha efectiva:
[Salary] - (LAG([Salary], 1, [Salary]) OVER( PARTITION BY [Employee_Name] ORDER BY [Eff_Date] ASC) )
Obtiene los siguientes resultados:
row_ID
Employee_Name
Eff_Date
Salarial
Incremento_de_salario
2
Goh
1/1/19
56000
7000
1
Goh
1/1/18
49000
5000
3
Goh
1/1/17
44000
0
6
Freeman
1/1/19
69000
4000
4
Freeman
1/1/18
65000
8000
5
Freeman
1/1/17
57000
0
8
Herrero
1/1/19
56000
5000
7
Herrero
1/1/18
51000
7000
9
Herrero
1/1/16
44000
0