Puedes leer todo sin registrarte. Solo crearemos un perfil anónimo cuando decidas guardar tu progreso.
Lección 5 de 5
Ventanas, agregaciones y deduplicación
Ventanas calculan métricas por grupo sin colapsar filas y permiten deduplicación determinista.
- Duración
- 17 min aprox.
- Objetivo
- Ventanas calculan métricas por grupo sin colapsar filas y permiten deduplicación determinista.
- Siguiente paso
- Continuar con el laboratorio
Ver detalles del módulo
DataFrames, transformaciones y datos complejos
Domina las operaciones que aparecen en ETL real: joins, arrays, structs, ventanas y deduplicación.
- Transformar columnas y filas con funciones nativas
- Manipular arrays, maps y structs
- Combinar y deduplicar datasets de forma determinista
05Decisión de diseñoVentanas, agregaciones y deduplicación
Ventanas calculan métricas por grupo sin colapsar filas y permiten deduplicación determinista.
+
Ventanas, agregaciones y deduplicación
Ventanas calculan métricas por grupo sin colapsar filas y permiten deduplicación determinista.
groupBy reduce cada grupo; una window mantiene cada registro y añade ranking, acumulados o valores previos. El orden debe resolver empates para que el resultado sea repetible.
Para conservar la versión más reciente, combina row_number con una ordenación por event_ts y un segundo campo estable. dropDuplicates sin criterio temporal no expresa qué versión conservar.
Modelo mental
Una window calcula sobre un conjunto relacionado con cada fila sin colapsarlo como groupBy. PARTITION BY define el grupo lógico, ORDER BY establece secuencia y el frame delimita qué filas contribuyen. row_number asigna una prioridad total solo si el orden contiene un desempate estable; rank y dense_rank expresan empates con semánticas diferentes. Para deduplicar, primero se define la identidad del evento y qué versión debe ganar; después se ordena por tiempo de negocio, secuencia y un identificador determinista. dropDuplicates expresa igualdad, no preferencia, y en batch no garantiza conservar el evento más nuevo. El resultado se valida por unicidad y reconciliación de versiones descartadas.
Definición de partición, orden y frame utilizada para calcular una función por cada fila.
Determina tanto la semántica como el movimiento de datos de una window.Función que asigna una secuencia única dentro de cada partición según el orden declarado.
Permite seleccionar un único ganador cuando el orden es totalmente determinista.Columna adicional única o de orden consistente usada cuando el criterio principal empata.
Evita que reintentos elijan versiones diferentes con los mismos timestamps.w = Window.partitionBy("order_id").orderBy(F.desc("event_ts"), F.desc("ingest_id"))
latest = events.withColumn("rn", F.row_number().over(w)).filter("rn = 1").drop("rn")ingest_id rompe empates de event_ts y hace la salida determinista.
Puntos clave
- Window no colapsa filas
- El orden debe ser total
- Deduplicar exige regla de supervivencia
Evita
- Omitir criterio de desempate
- Usar groupBy cuando se necesitan columnas de detalle
Recuerdo activo