(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Cómo crear y utilizar un Synapse Notebook para exploración de datos en Azure Synapse Analytics

João Barros 27 de August de 2026 5 min de lectura

Este tutorial muestra, paso a paso, cómo crear y usar un Synapse Notebook en Azure Synapse Analytics para leer archivos Parquet almacenados en un Data Lake, explorar datos, aplicar transformaciones simples y escribir resultados. Es un enfoque práctico para análisis exploratorio (EDA), validación de esquemas y preparación de datos para pipelines o modelos de machine learning. En escenarios reales, un Notebook es muy útil para trabajar interactivamente con datasets desde algunos megabytes hasta cientos de gigabytes.

Requisitos previos

  • Cuenta Azure con permisos para un workspace de Azure Synapse Analytics.
  • Un Synapse Workspace configurado y un Spark Pool disponible (por ejemplo, 3–8 nodos dependiendo del volumen de datos).
  • Archivos Parquet en un contenedor de Azure Data Lake Storage Gen2 (acceso vía Linked Service, SAS o managed identity).
  • Conocimientos básicos de PySpark y Python; experiencia mínima con SQL es útil.

Sugerencia práctica: para datasets < 1 GB, un Spark Pool con 3 nodos (cada uno con ~8–16 GB) es suficiente; para 50–200 GB considere 8 nodos con 32 GB cada uno. Estimar correctamente ayuda a evitar fallos por falta de memoria o costes innecesarios.

Paso 1: Abrir el Synapse Studio y crear un Notebook

Abra el Synapse Studio en el portal Azure, haga clic en Develop y cree un nuevo Notebook. Elija un nombre descriptivo, por ejemplo Exploracao_Parquet. Asocie el Notebook a un Spark Pool (en la barra superior del Notebook elija el pool). Si está probando, use un pool small; para producción, prefiera pools cuyos nodos tengan al menos 16–32 GB de RAM por nodo.

Buenas prácticas: al trabajar con archivos grandes, encienda el cluster solo cuando sea necesario y apáguelo fuera del período de trabajo para controlar costes. Utilice notas en el propio Notebook para describir cada paso y los parámetros usados.

Paso 2: Configurar acceso al Data Lake

Verifique cómo va a acceder al storage: Linked Service (recomendado para producción), SAS token (útil para pruebas rápidas) o managed identity (más seguro cuando está configurado). En el Notebook puede montar directamente la ruta ABFSS o usar las APIs az storage. Si el Workspace tiene acceso configurado, use ABFSS para evitar compartir claves.

# Path para o ficheiro Parquet
path = "abfss://container@storageaccount.dfs.core.windows.net/pasta/exemplo.parquet"

Ejemplo: si su contenedor tiene 12 archivos Parquet de 1 GB cada uno, la ruta puede apuntar a la carpeta (p. ej. /pasta/*.parquet) para leerlos todos de una vez.

Paso 3: Leer el archivo Parquet con PySpark

Use la sesión Spark disponible en el Notebook para leer el Parquet en un DataFrame. Esto permite inspeccionar el esquema, contar registros rápidamente y medir tiempos de lectura.

# Ler ficheiro Parquet
df = spark.read.parquet(path)

# Ver schema e primeiras linhas
df.printSchema()
df.show(10)

Indicador útil: después de leer, ejecute df.count() (solo para datasets pequeños) o use df.rdd.getNumPartitions() para ver la partición inicial. Una lectura de 10 millones de filas puede tardar desde algunos segundos hasta minutos, dependiendo de la red y del número de particiones.

Paso 4: Explorar y limpiar los datos (ejemplo práctico)

Explore estadísticas, valores nulos y aplique transformaciones. Aquí mostramos cómo obtener estadísticas, contar nulos por columna y hacer una limpieza simple: rellenar nulos y crear una columna derivada con el año del timestamp.

# Estatísticas básicas
from pyspark.sql.functions import col, when

df.describe().show()

# Contar valores nulos por coluna
nulls = {c: df.filter(col(c).isNull()).count() for c in df.columns}
print(nulls)

# Exemplo de limpeza: preencher nulos e criar coluna derivada
df2 = df.fillna({ 'payment_amount': 0 })
df2 = df2.withColumn('year', df2['event_timestamp'].cast('timestamp').substr(1,4))

df2.select('payment_amount','year').show(10)

Consejo de rendimiento: si va a reutilizar df2 en varias operaciones, haga df2.cache() para evitar releer. Para workloads de escritura, use df2.repartition(10) u otro número basado en el número de archivos de salida deseados. Por ejemplo, para generar ~10 archivos de salida para 100 GB, use repartition(10) para distribuir ~10 GB por archivo.

Paso 5: Escribir resultados como Parquet o tablas temporales

Tras transformar los datos puede escribir el resultado de nuevo en el Data Lake como Parquet (compacto y eficiente) o registrar una temp view para consultas SQL interactivas en el mismo Notebook.

# Gravar como Parquet num caminho de saída
output_path = "abfss://container@storageaccount.dfs.core.windows.net/pasta/out/resultado.parquet"
df2.write.mode('overwrite').parquet(output_path)

# Criar uma view temporária para usar Spark SQL
df2.createOrReplaceTempView('vw_exploracao')

# Exemplo de query SQL
spark.sql("SELECT year, AVG(payment_amount) as avg_pay FROM vw_exploracao GROUP BY year").show()

Verifique el número de archivos escritos y el tamaño medio — si aparecen muchos archivos pequeños, considere coalescer antes de escribir: df2.coalesce(10).write(...).

Verificar el resultado

Confirme que el archivo de salida existe en el Data Lake (vía Azure Portal o Storage Explorer) y valide el esquema. En el Notebook use spark.read.parquet(output_path).show() para una inspección rápida. Si faltan permisos verá errores de acceso (403) — verifique la Linked Service o la managed identity. Si los datos tienen tipos inesperados, repase las transformaciones y puntos de verificación.

Conclusión

Ahora tiene un Synapse Notebook que lee Parquet, explora, limpia y escribe resultados usando Spark. Siguientes pasos prácticos: automatizar este Notebook con un Pipeline en Synapse, parametrizar rutas (por ejemplo, pasadas como widgets) y optimizar el Spark Pool según la carga. Comience siempre con small datasets para validar la lógica y solo después escale a volúmenes mayores — típicamente probar con el 1–10% del dataset final da una buena idea del rendimiento. ¿Quiere ver un ejemplo de parametrización del Notebook o de programación con Pipeline?