Saltar al contenido

DataFrames

Menú

Puedes leer sin crear un espacio. Créalo solo cuando quieras guardar.

Guardar progreso

Lección 3 de 5

Joins, unions y claves compuestas

El tipo de join expresa qué filas deben sobrevivir; la cardinalidad y las claves determinan corrección y coste.

17 min aprox.

Detalles

DataFrames, transformaciones y datos complejos

Domina las operaciones que aparecen en ETL real: joins, arrays, structs, ventanas y deduplicación.

Reto observable

Dado un dataset semiestructurado, publica una tabla normalizada con esquema explícito y demuestra unicidad de claves, cardinalidad y tratamiento de registros inválidos.

Al terminar podrás
  • Transformar columnas y filas con funciones nativas
  • Manipular arrays, maps y structs
  • Combinar y deduplicar datasets de forma determinista
Prerrequisitos
m03
Última revisión
25 ago 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
03
Operación

Joins, unions y claves compuestas

El tipo de join expresa qué filas deben sobrevivir; la cardinalidad y las claves determinan corrección y coste.

Inner conserva coincidencias; left conserva todas las filas de la izquierda; full conserva ambos lados. Antes del join comprueba unicidad: una dimensión duplicada puede multiplicar hechos sin producir error.

union combina por posición y unionByName por nombre; ninguna elimina duplicados. Broadcast puede evitar shuffle para un lado pequeño, pero solo tras confirmar tamaño.

PySparkJoin con claves compuestas
enriched = orders.join(
    customers.select("tenant_id", "customer_id", "segment"),
    ["tenant_id", "customer_id"],
    "left",
)

Compara row count y claves sin correspondencia después del join.

¿Qué puede revelar un aumento inesperado de filas?

Profundiza

Un join combina conjuntos según predicados, pero su corrección depende del grain y la cardinalidad antes que del tipo sintáctico. Inner conserva coincidencias; left preserva todas las filas izquierdas; semi responde existencia sin añadir columnas; anti conserva ausencias. Si una clave es única en un lado y repetida en otro, el resultado puede multiplicar filas legítimamente. Si se esperaba uno a uno, esa multiplicación es un defecto de datos o de predicado. Antes de optimizar broadcast o particiones, declara qué fila representa cada entrada, normaliza claves y estima conteos. Un join rápido que duplica ingresos es peor que uno lento: semántica y reconciliación son criterios de aceptación.

Cardinalidad

Relación de multiplicidad entre claves de dos datasets, como uno-a-uno o uno-a-muchos.

Predice el número de filas y revela duplicaciones accidentales.
Left semi join

Join que conserva filas izquierdas con al menos una coincidencia sin añadir columnas derechas.

Es la forma precisa y eficiente de filtrar por existencia.
Null-safe equality

Comparación que considera dos null equivalentes mediante una semántica explícita.

Evita asumir que la igualdad SQL ordinaria empareja valores desconocidos.
Resumen

Puntos clave

  • Elige join por semántica
  • Valida cardinalidad antes y después
  • Union no deduplica

Evita

  • Unir solo por customer_id en un sistema multitenant
  • Confundir union con eliminación de duplicados

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

Módulo 04

Contenido del módulo