Saltar al contenido
Lakehouse LabLakehouse LabPreparación Databricks Data Engineer
Módulo 04 · Lección

Ventanas, agregaciones y deduplicación

Contenido abierto

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.

Al terminar podrás
  • Transformar columnas y filas con funciones nativas
  • Manipular arrays, maps y structs
  • Combinar y deduplicar datasets de forma determinista
Ver fuentes y revisión

Metadatos editoriales

Última revisión
21 jul 2026
Nivel
Associate
Ruta relacionada
core
Dominios blueprint
Data Transformation and Modeling · PySpark DataFrames
Estado
Revisión editorial interna
Fuentes principales
PySpark DataFrames · DataFrame transformations
Reportar un error
05
Decisión de diseño

Ventanas, agregaciones y deduplicación

Ventanas calculan métricas por grupo sin colapsar filas y permiten deduplicación determinista.

Mostrar prerrequisitos
Dificultad
Associate
Prerrequisitos
m03
Reportar un error en esta lección

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.

Window specification

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.
row_number

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.
Desempate estable

Columna adicional única o de orden consistente usada cuando el criterio principal empata.

Evita que reintentos elijan versiones diferentes con los mismos timestamps.
PySparkÚltimo evento por clave
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

¿Por qué dropDuplicates no basta para elegir el evento más nuevo?

Borrador privado · solo en este navegador
5 lecciones pendientes

Fuente revisada · vista externa

Azure Databricks Hands-on

Azure Databricks Hands-on · commit a91650b

HandsOn.dbc

Archivo importable

Este notebook se abre desde su fuente revisada

El repositorio no permite republicar su contenido dentro de Lakehouse Lab. Conservamos la misma experiencia lateral, la ruta exacta y el commit auditado, y dejamos la lectura en GitHub para respetar la autoría.

Autor
Tsuyoshi Matsuzaki
Licencia
No verificada
Formato
dbc
Abrir / descargar .dbc