Relleno Cruzado

Sistema para completar campos faltantes priorizando fuentes (SISBEN IV, CCB, RUES, etc.), con trazabilidad por GlobalID_EMISOR.

Arquitectura

Snippet (preferencia de fuentes)

def prefer_sources(row, fields, sources_order):
    out = {}
    for f in fields:
        for src in sources_order:
            v = row.get(f"{f}__{src}")
            if v not in (None, ""):
                out[f] = v
                break
        out.setdefault(f, None)
    return out

Más snippets en /snippets.