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

Cómo validar particiones de fecha en ELT: paso a paso

João Barros 18 de September de 2026 4 min de lectura

Este tutorial muestra cómo validar particiones de fecha en ELT para garantizar consistencia, evitar huecos y mejorar el rendimiento de las consultas. Validar particiones de fecha es útil para detectar fallos de carga, archivos corruptos y problemas de retención antes de que afecten a informes o pipelines downstream.

Prerequisitos

  • Acceso a un entorno con soporte de archivos/Delta (por ejemplo: Data Lake con Delta Lake o parquet) y SQL/Notebooks.
  • Herramientas para ejecutar SQL o Python (por ejemplo: Databricks, Synapse, o otro entorno con Spark/SQL).
  • Conocimientos básicos de ELT, particiones por fecha (date, year/month/day) y comandos SQL/Python.

Paso 1: Identificar el esquema de partición

Comprender cómo están particionados los datos: por date, year/month/day o por otra convención. Esto permite construir comprobaciones específicas (huecos, formatos inválidos, metadatos).

# Exemplo SQL para ver estrutura de partição (Delta ou Hive metastore)  DESCRIBE DETAIL nome_da_tabela;  -- ou  SHOW PARTITIONS nome_da_tabela LIMIT 100;  

Paso 2: Listar particiones esperadas

Generar la lista de fechas que deberían existir en el periodo de interés. Esto ayuda a detectar huecos (missing partitions) en el intervalo de carga.

# Exemplo Python (Spark) para gerar datas esperadas entre start_date e end_date  from pyspark.sql.functions import sequence, to_date, explode, lit  start = '2026-09-01'  end = '2026-09-10'  dates_df = spark.sql(f"SELECT explode(sequence(to_date('{start}'), to_date('{end}'), interval 1 day)) as dt")  dates_df.show()  

Paso 3: Obtener particiones reales

Extraer las particiones efectivamente presentes en el almacenamiento/metastore. Para Delta/Hive, podemos consultar las particiones o inferir a partir de las rutas de archivo.

# Exemplo SQL para obter partições reais (tabela particionada por dt)  SELECT DISTINCT dt FROM nome_da_tabela ORDER BY dt;  -- Ou listar ficheiros no diretório de data: /data/tabela/dt=YYYY-MM-DD/  

Paso 4: Comparar esperado vs real y reportar huecos

Hacer la unión entre las fechas esperadas y las reales para identificar días faltantes. Reportar resultados para alertas o triggers de backfill.

# Exemplo Spark SQL juntando datas esperadas e reais  dates_df.createOrReplaceTempView('expected_dates')  spark.sql("""
SELECT e.dt as date_expected, r.dt as date_present
FROM expected_dates e
LEFT JOIN (SELECT DISTINCT dt FROM nome_da_tabela) r
ON e.dt = r.dt
WHERE r.dt IS NULL
ORDER BY e.dt
""").show()  

Paso 5: Verificar integridad de los archivos por partición

Detectar archivos corruptos o con schema diferente que provoquen errores en las lecturas. Podemos intentar leer cada partición y capturar excepciones; también validar número de archivos y tamaño mínimo.

# Exemplo Python para validar leitura por partição e contar ficheiros  from pyspark.sql.utils import AnalysisException    partitions = [r['dt'] for r in spark.sql("SELECT DISTINCT dt FROM nome_da_tabela").collect()]  bad_partitions = []  for p in partitions:      path = f"/data/nome_da_tabela/dt={p}"      try:          df = spark.read.format('delta').load(path)  # ou parquet          cnt = df.count()          if cnt == 0:              bad_partitions.append((p, 'empty'))      except Exception as e:          bad_partitions.append((p, str(e)))    print('Partições com problemas:', bad_partitions)  

Paso 6: Validar metadatos y estadísticas por partición

Comprobar columnas clave (ej.: id, timestamp) para valores nulos, tipos inesperados o outliers por partición. Calcular estadísticas básicas ayuda a detectar regresiones.

# Exemplo SQL para checar nulos e contar por partição  SELECT dt,         COUNT(*) as rows,         SUM(CASE WHEN id IS NULL THEN 1 ELSE 0 END) as id_nulls,         MIN(event_time) as min_time,         MAX(event_time) as max_time  FROM nome_da_tabela  GROUP BY dt  ORDER BY dt;  

Verificar el resultado

Confirme que:

  • No existen fechas faltantes en la ventana analizada (resultado del Paso 4 vacío).
  • La lista de bad_partitions del Paso 5 está vacía o solo contiene casos explicables.
  • Las estadísticas por partición (Paso 6) están dentro de los límites esperados (rows, id_nulls, min/max ok).

Conclusión

Validar particiones de fecha en ELT previene fallos de carga y degradación del rendimiento. Próximos pasos: automatizar estas comprobaciones como parte del pipeline (jobs programados) e integrar alertas/rollback para particiones con fallos. Consejo: empieza por monitorizar una ventana corta (7-14 días) para reducir falsos positivos y ajustar límites.