Window functions

Objetivo

Aplicar Window functions en un escenario de ecommerce y producir una salida que otra persona pueda verificar.

Antes de empezar

  • Tener descargado el dataset ecommerce del curso
  • Crear una carpeta de práctica y conservar el original sin modificar

Explicación

Window functions se trabaja aquí sobre el ecommerce del curso. Primero identifica la pregunta que quieres responder y el grain de los datos; después aplica resolver rankings, acumulados y último registro sin perder detalle. No ejecutes código como una receta: observa qué columnas entran, qué filas pueden desaparecer o duplicarse y qué salida consume la siguiente capa. En un entorno profesional debes separar la lógica técnica de la definición de negocio, usar nombres legibles y conservar una consulta de reconciliación. Cuando el resultado parezca correcto, intenta romperlo con un caso límite: nulos, duplicados, fechas fuera de rango, estados inesperados o un identificador que no exista en la dimensión. El objetivo de esta lección no es memorizar Window functions, sino ser capaz de implementarlo, revisarlo y defender por qué la solución es fiable.

Contexto profesional

En un equipo de datos, resolver rankings, acumulados y último registro sin perder detalle. Este trabajo suele aparecer en incidencias, revisiones de código o entregas de analítica. La diferencia entre una demo y un trabajo profesional es poder explicar el supuesto, reproducir el resultado y dejar una comprobación que detecte errores futuros.

Ejemplo real

SELECT *, ROW_NUMBER() OVER(PARTITION BY customer_id ORDER BY order_date DESC) rn FROM orders;

Archivos o datos de entrada

  • data/ecommerce_customers.csv
  • data/ecommerce_orders.csv

Práctica guiada

Antes de mirar la solución, reproduce el ejemplo de Window functions, guarda la salida y escribe qué supuesto estás haciendo sobre los datos.

Laboratorio paso a paso

  • Descarga los archivos indicados y crea una carpeta nueva para esta práctica; no modifiques el original.
  • Inspecciona las columnas y escribe qué resultado esperas obtener al aplicar: resolver rankings, acumulados y último registro sin perder detalle.
  • Ejecuta o reproduce el ejemplo técnico: SELECT *, ROW_NUMBER() OVER(PARTITION BY customer_id ORDER BY order_date DESC) rn FROM orders;
  • Registra el número de filas de entrada y de salida y explica cualquier diferencia antes de seguir.
  • Introduce un caso límite deliberado (nulo, duplicado, estado inesperado o valor extremo) y comprueba cómo responde tu solución.
  • Guarda la versión final y anota en README los comandos/pasos exactos para repetirla desde cero.

Reto sin ayuda

Repite la práctica cambiando un supuesto importante de Window functions; documenta qué se rompe, cómo lo detectas y qué cambio harías para producción.

Resultado esperado

Obtendrás un artefacto reproducible de Window functions, con entrada conocida, salida observable y una comprobación que detecta al menos un caso límite.

Cómo verificarlo

Compara conteos, totales y claves con la fuente. Vuelve a ejecutar desde una carpeta limpia siguiendo sólo tu README; si falta un paso, la práctica no está terminada.

Checklist de validación

  • La salida se puede reproducir sin pasos ocultos
  • Los conteos/totales relevantes están reconciliados con la entrada
  • Existe al menos una prueba de caso límite
  • No hay secretos ni rutas personales dentro del código
Pista específica

Si te bloqueas con Window functions, reduce el problema a una entrada pequeña de 3–5 filas y escribe primero el resultado que debería salir en papel.

Solución paso a paso

Solución de referencia para Window functions: trabaja sobre una copia de los datos y valida el grain antes de calcular métricas. Ejecuta `SELECT *, ROW_NUMBER() OVER(PARTITION BY customer_id ORDER BY order_date DESC) rn FROM orders;` y compara conteos de filas y agregados con la fuente. Después añade una comprobación para el caso límite que hayas elegido. Si la técnica implica una unión, valida cardinalidad antes y después; si implica una métrica, documenta numerador, denominador y filtros; si implica automatización, devuelve un código de error visible cuando falte un requisito. Finalmente guarda el artefacto en Git con un commit descriptivo y añade al README qué entrada usaste, qué salida obtuviste y cómo verificaste que era correcta. Esa evidencia es parte de la solución, no un añadido opcional.

Errores frecuentes

  • Dar por bueno un resultado sólo porque la consulta/script no da error
  • No documentar el grain o los filtros de negocio
  • Cambiar varias cosas a la vez y no saber qué causó una diferencia

Qué debes recordar

En trabajo real, Window functions vale cuando es reproducible, verificable y comprensible para otra persona.

Preguntas de entrevista

  • ¿Cómo comprobarías que una implementación de Window functions no duplica ni pierde información?
  • ¿Qué caso límite probarías primero y por qué?

Siguiente paso

Continúa con la siguiente lección y reutiliza el mismo proyecto ecommerce para acumular trabajo real.

Recursos de esta lección

Quiz de la lección

¿Qué demuestra mejor que has aprendido Window functions?

Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.