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

explode, arrays, maps y structs

Contenido abierto

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.

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
04
Diagnóstico

explode, arrays, maps y structs

Arrays, structs y maps pueden transformarse sin perder el contexto de la fila padre.

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

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.

Struct

Valor compuesto con campos nombrados y tipos definidos dentro de una columna.

Permite conservar jerarquía y seleccionar atributos sin perder el contrato.
Función de orden superior

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

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.
PySparkNormalizar líneas de pedido
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

¿Cuándo elegir explode_outer?

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