LEAD (Lakehouse v1)
LEAD permite acceder al valor de una columna de una fila posterior dentro del mismo conjunto de resultados. Normalmente se usa para obtener el valor de una columna en la fila siguiente, según un orden especificado.
Consulte también: LAG
Sintaxis de Analyze
Sección titulada «Sintaxis de Analyze»func.lead(<expr>, <offset>).over(partition_by=[<columns>], order_by=[<columns>])Ejemplos de Analyze
Sección titulada «Ejemplos de Analyze»table.product_name, table.sale_amount, func.lead(table.sale_amount, 1).over(partition_by=table.product_name, order_by=table.sale_id).alias('next_sale_amount')
product_name | sale_amount | next_sale_amount----------------------------------------------Product A | 1000.00 | 1500.00Product A | 1500.00 | 2000.00Product A | 2000.00 | NULLProduct B | 500.00 | 800.00Product B | 800.00 | 1200.00Product B | 1200.00 | NULLSintaxis de SQL
Sección titulada «Sintaxis de SQL»LEAD(expression [, offset [, default]]) OVER (PARTITION BY partition_expression ORDER BY sort_expression)- offset: especifica el número de filas posteriores (LEAD) o anteriores (LAG) a la fila actual, dentro de la partición, de las que se obtiene el valor. El valor predeterminado es 1.
Tenga en cuenta que establecer un desplazamiento negativo tiene el mismo efecto que usar la función LAG.
- default: especifica el valor que se devuelve cuando la función LEAD o LAG no encuentra ningún valor disponible porque el desplazamiento supera los límites de la partición. El valor predeterminado es NULL.
Ejemplos de SQL
Sección titulada «Ejemplos de SQL»CREATE TABLE sales ( sale_id INT, product_name VARCHAR(50), sale_amount DECIMAL(10, 2));
INSERT INTO sales (sale_id, product_name, sale_amount)VALUES (1, 'Product A', 1000.00), (2, 'Product A', 1500.00), (3, 'Product A', 2000.00), (4, 'Product B', 500.00), (5, 'Product B', 800.00), (6, 'Product B', 1200.00);
SELECT product_name, sale_amount, LEAD(sale_amount) OVER (PARTITION BY product_name ORDER BY sale_id) AS next_sale_amountFROM sales;
product_name | sale_amount | next_sale_amount----------------------------------------------Product A | 1000.00 | 1500.00Product A | 1500.00 | 2000.00Product A | 2000.00 | NULLProduct B | 500.00 | 800.00Product B | 800.00 | 1200.00Product B | 1200.00 | NULL
-- The following statements return the same result.SELECT product_name, sale_amount, LEAD(sale_amount, -1) OVER (PARTITION BY product_name ORDER BY sale_id) AS previous_sale_amountFROM sales;
SELECT product_name, sale_amount, LAG(sale_amount) OVER (PARTITION BY product_name ORDER BY sale_id) AS previous_sale_amountFROM sales;
product_name|sale_amount|previous_sale_amount|------------+-----------+--------------------+Product A | 1000.00| |Product A | 1500.00| 1000.00|Product A | 2000.00| 1500.00|Product B | 500.00| |Product B | 800.00| 500.00|Product B | 1200.00| 800.00|