Puedes leer todo sin registrarte. Solo crearemos un perfil anónimo cuando decidas guardar tu progreso.
Lección 4 de 5
explode, arrays, maps y structs
Arrays, structs y maps pueden transformarse sin perder el contexto de la fila padre.
- Duración
- 17 min aprox.
- Objetivo
- Arrays, structs y maps pueden transformarse sin perder el contexto de la fila padre.
- Siguiente paso
- Continuar con la siguiente lección
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
04Diagnósticoexplode, arrays, maps y structs
Arrays, structs y maps pueden transformarse sin perder el contexto de la fila padre.
+
explode, arrays, maps y structs
Arrays, structs y maps pueden transformarse sin perder el contexto de la fila padre.
explode crea una fila por elemento; explode_outer conserva la fila cuando la colección es null o vacía. Los campos de un struct se seleccionan con notación de punto y transform procesa arrays sin expandirlos.
Al normalizar JSON, conserva la clave del registro padre y define qué hacer con arrays vacíos. Inferir indefinidamente el esquema de producción hace que cambios de origen alteren resultados sin revisión.
Modelo mental
Los tipos complejos conservan estructura: un struct agrupa campos con esquema, un array mantiene una secuencia y un map asocia claves con valores. No es necesario convertir JSON a cadenas ni explotar todo inmediatamente. Las funciones de orden superior transform, filter, exists y aggregate operan dentro de un array preservando la fila padre; la notación de campo navega structs; element_at consulta colecciones. explode cambia el grain al crear filas y, por tanto, exige conservar claves del padre. explode_outer mantiene una representación cuando la colección es null o vacía. Elegir entre transformación anidada y normalización depende del consumidor y de la semántica, no de una limitación de Spark.
Valor compuesto con campos nombrados y tipos definidos dentro de una columna.
Permite conservar jerarquía y seleccionar atributos sin perder el contrato.Expresión que aplica una operación a elementos de una colección sin convertirlos en filas independientes.
Preserva grain y suele simplificar transformaciones de arrays.Generador que expande elementos y conserva el padre con null cuando la colección no aporta elementos.
Evita perder entidades padre cuando la ausencia de detalles tiene significado.lines = (raw
.select("order_id", F.explode_outer("items").alias("item"))
.select("order_id", F.col("item.sku").alias("sku"), F.col("item.qty").alias("qty")))Decide si una fila con sku null debe ir a cuarentena.
Puntos clave
- explode cambia cardinalidad
- explode_outer conserva padres sin elementos
- El esquema anidado debe versionarse
Evita
- Perder order_id al explotar items
- Usar explode cuando transform mantiene mejor la cardinalidad
Recuerdo activo