Cómo limpiar y normalizar datos técnicos de múltiples proveedores
Un proceso paso a paso para recibir, clasificar y estandarizar datos de producto industriales entregados en formatos heterogéneos por múltiples proveedores.
En distribución industrial hay un problema que aparece muy rápido cuando el catálogo empieza a crecer: cada proveedor describe sus productos con su propio idioma.
Uno entrega una planilla de Excel con veinte columnas. Otro manda un CSV con ochenta. Un tercero envía fichas técnicas en PDF. Otro publica toda la información en su sitio web. Incluso cuando dos fabricantes venden productos comparables, pueden llamar de manera diferente al mismo atributo, utilizar unidades distintas o agrupar la información con criterios incompatibles.
Entonces aparecen columnas como Potencia, Pot., Power, Potencia nominal y Rated Power. Una medida llega como 25 mm, otra como 2,5 cm y otra como 0.984 in. Un proveedor escribe Acero inoxidable, otro INOX y otro Stainless Steel.
Ninguno tiene que estar necesariamente equivocado. El problema es que nuestro catálogo necesita un lenguaje común para poder comparar, buscar, filtrar, integrar y publicar esos productos.
Por eso, limpiar datos técnicos de múltiples proveedores no consiste simplemente en corregir errores. El trabajo real es construir una capa que permita traducir estructuras diferentes hacia un modelo de datos común sin perder la información original.
Normalizar datos de proveedores no significa conseguir que todos entreguen la información de la misma manera. Significa que nuestro catálogo pueda interpretar esas diferencias y transformarlas en una estructura común.
¿Por dónde empiezo cuando cada proveedor entrega algo diferente?
Mi primera recomendación es bastante poco espectacular: no tocar los datos originales.
Cuando recibimos un archivo, conviene conservar una copia exactamente como llegó y hacer las transformaciones en otra versión o capa de trabajo. Parece una precaución menor, pero es fundamental para mantener la trazabilidad.
Si transformamos 3/4" en 19,05 mm, tenemos que poder saber de dónde salió ese valor. Si convertimos Stainless Steel en Acero inoxidable, también. Y si más adelante descubrimos que interpretamos incorrectamente una columna, necesitamos volver al origen.
Por eso me resulta útil pensar el proceso en tres niveles:
Dato original → dato interpretado → dato normalizado
Por ejemplo:
| Valor original | Interpretación | Valor normalizado |
|---|---|---|
| Stainless Steel | Material | Acero inoxidable |
| 2,5 cm | Longitud | 25 mm |
| YES | Valor booleano | Sí |
| 1.5 kW | Potencia nominal | 1500 W |
El valor original funciona como evidencia. El valor normalizado es el que queremos utilizar dentro del catálogo.
La diferencia entre ambos es importante porque normalizar no debería significar borrar el camino que recorrió el dato.
Paso 1: primero diagnostico, después limpio
Cuando recibimos información de diez, cincuenta o cien proveedores, es tentador abrir cada archivo y empezar a corregir.
Yo prefiero hacer primero un inventario de lo que llegó.
Necesito saber:
- qué formatos recibimos;
- cuántas columnas utiliza cada proveedor;
- qué atributos parecen equivalentes;
- qué campos están vacíos;
- qué unidades aparecen;
- qué datos vienen mezclados;
- qué vocabularios distintos se utilizan;
- qué información aparece solo en descripciones o fichas técnicas;
- qué identificadores permiten relacionar cada producto con su origen.
Ese diagnóstico nos permite separar los errores puntuales de los problemas estructurales.
También me interesa detectar información que existe, pero no está estructurada. Por ejemplo, una descripción puede contener material, potencia y dimensiones dentro de un único texto aunque no existan columnas específicas para esos atributos.
Este diagnóstico permite distinguir errores puntuales de problemas sistemáticos.
Una errata en cinco registros puede corregirse. Pero si treinta proveedores llaman de treinta formas distintas al mismo concepto, corregir celda por celda no resuelve el problema: necesitamos una regla.
Si un problema aparece una vez, puede ser un error. Si aparece de forma recurrente en distintos proveedores, probablemente necesitemos una regla de normalización.
Paso 2: defino mi modelo de catálogo antes de copiar el modelo del proveedor
Una de las decisiones más importantes es evitar que cada proveedor determine la estructura de nuestro catálogo.
Si creamos un atributo nuevo por cada columna que recibimos, terminamos reproduciendo hacia adentro todas las diferencias que existen afuera.
Un fabricante puede llamar a un campo Diámetro nominal, otro DN, otro Nominal diameter y otro simplemente Size. Antes de crear cuatro atributos necesitamos averiguar si estamos frente a cuatro conceptos diferentes o ante cuatro maneras de nombrar el mismo.
Por eso conviene trabajar primero con familias o tipos de producto comparables.
Una bomba, un cable eléctrico, una válvula y una herramienta de medición no necesitan los mismos atributos. En cambio, dos válvulas equivalentes de fabricantes diferentes deberían poder describirse mediante un conjunto común de características.
Ahí empieza a aparecer nuestro modelo.
La pregunta deja de ser “¿qué columnas me entregó este proveedor?” y pasa a ser:
¿Qué necesito saber sobre este tipo de producto para poder identificarlo, compararlo, encontrarlo y publicarlo correctamente?
Ese cambio de perspectiva es importante porque convierte el catálogo en una estructura propia y no en una suma de estructuras ajenas.
Paso 3: construyo un diccionario de equivalencias entre atributos
Una vez que entiendo las fuentes y tengo una estructura de destino, puedo empezar a mapearlas.
Para eso me resulta muy útil crear una tabla de equivalencias.
Por ejemplo:
| Campo recibido | Ejemplo | Atributo destino | Tipo de dato | Acción |
|---|---|---|---|---|
| Rated Power | 1500 W | Potencia nominal | Métrica | Mapear |
| Pot. | 1.5 kW | Potencia nominal | Métrica | Convertir |
| Housing Material | Stainless Steel | Material de carcasa | Lista | Normalizar |
| Mat. cuerpo | INOX | Material de carcasa | Lista | Normalizar |
| IP Rating | IP67 | Grado de protección IP | Lista | Mapear |
| Dimensions | 30x20x15 cm | Alto / Ancho / Profundidad | Métrica | Separar |
Esta tabla funciona como un puente entre el idioma del proveedor y el idioma del catálogo.
También nos obliga a tomar decisiones que de otra manera pueden quedar escondidas. Por ejemplo: ¿Dimensions es realmente un atributo o estamos recibiendo tres medidas diferentes dentro de una misma celda? ¿Size representa diámetro, longitud o tamaño comercial?
El nombre de una columna por sí solo no siempre explica el dato. Para mapear correctamente necesitamos observar el contexto, la familia de producto y los valores reales que contiene.
Paso 4: separo los datos que vienen mezclados
Uno de los problemas más habituales en información técnica es recibir varios conceptos dentro del mismo campo.
Por ejemplo:
30 x 20 x 15 cm
Para una persona puede ser evidente que estamos mirando tres dimensiones. Para un sistema todavía necesitamos decidir cuál corresponde a alto, ancho y profundidad.
Lo mismo ocurre con valores como:
220 V / 50 Hz
Acero inoxidable - IP67
10 kg máx.
El dato existe, pero todavía no está suficientemente estructurado.
La solución no siempre es dividir automáticamente por guiones, barras o espacios. Primero necesitamos entender qué representa cada componente y recién después establecer una regla.
Esto es particularmente importante cuando esos valores se van a utilizar en filtros, comparaciones o integraciones. Si alto, ancho y profundidad viven juntos dentro de un texto, podemos mostrarlos, pero resulta mucho más difícil trabajar con ellos individualmente.
Paso 5: cada atributo necesita el tipo de dato correcto
En una planilla podemos ver estos valores:
10 kg
220 V
25–40 °C
Sí
Acero inoxidable
Visualmente todos pueden parecer simples textos dentro de celdas. Semánticamente representan cosas muy diferentes.
Uno es una magnitud con unidad. Otro es una tensión. Otro es un rango. Otro puede representarse como un valor booleano. El último pertenece probablemente a una lista controlada de materiales.
Guardar todo como texto libre hace que la información sea legible, pero reduce mucho lo que podemos hacer con ella.
Si queremos ordenar productos por peso, necesitamos un número. Si queremos convertir unidades, necesitamos reconocer la magnitud. Si queremos filtrar materiales, necesitamos valores consistentes. Si una característica solo admite sí o no, probablemente sea mejor modelarla de esa forma.
Por eso, cuando normalizamos, no alcanza con decidir cómo se llama el atributo. También necesitamos decidir qué tipo de información puede almacenar.
Un dato técnico no está estructurado solamente porque tenga su propia columna. Está estructurado cuando sabemos qué significa, qué tipo de valor admite y cómo debería interpretarlo otro sistema.
Paso 6: normalizo las unidades de medida
Las unidades merecen una etapa propia porque en catálogos industriales aparecen constantemente.
Podemos recibir:
- milímetros, centímetros y metros;
- gramos y kilogramos;
- watts y kilowatts;
- bar, psi o pascales;
- grados Celsius y Fahrenheit;
- pulgadas y milímetros.
Antes de convertir nada necesitamos establecer qué unidad utilizará nuestro catálogo como referencia para cada magnitud.
Si elegimos milímetros para longitud, podemos transformar valores equivalentes antes de incorporarlos al modelo. Si elegimos watts para potencia, 1.5 kW puede convertirse en 1500 W.
La conversión matemática suele ser la parte sencilla.
Lo difícil es asegurarnos de que entendimos qué estamos convirtiendo.
Una columna llamada Size no debería transformarse automáticamente a milímetros hasta saber si representa diámetro, largo, calibre o simplemente una denominación comercial del fabricante.
También puede ser conveniente conservar el valor recibido originalmente o registrar la transformación realizada. De esa forma, si una regla necesita revisarse, podemos volver atrás.
Paso 7: creo vocabularios controlados para valores equivalentes
Después están los sinónimos y variantes de escritura.
En un atributo de material podemos encontrar:
Stainless Steel
Stainless
S. Steel
INOX
Acero Inox.
Acero inoxidable
Si determinamos que todos representan el mismo concepto, podemos crear una tabla de equivalencias:
| Valor recibido | Valor normalizado |
|---|---|
| Stainless Steel | Acero inoxidable |
| Stainless | Acero inoxidable |
| INOX | Acero inoxidable |
| Acero Inox. | Acero inoxidable |
El objetivo no es corregir manualmente cada aparición, sino documentar una regla reutilizable.
Pero acá hay una precaución importante: parecido no significa equivalente.
Acero, Acero galvanizado y Acero inoxidable tienen términos en común, pero no describen necesariamente el mismo material. Si los agrupamos solo para reducir la cantidad de valores, estamos perdiendo información técnica útil.
Normalizar no significa conseguir la lista más corta posible. Significa distinguir correctamente qué diferencias importan y cuáles son simplemente formas diferentes de expresar un mismo concepto.
Un vocabulario controlado no elimina diferencias útiles. Elimina diferencias de escritura que no aportan significado.
Paso 8: trato las excepciones como excepciones
En proyectos grandes siempre aparecen valores que no encajan en las reglas existentes.
Eso no significa necesariamente que el modelo esté mal.
Puede aparecer un producto nuevo, una familia que necesita una característica adicional, un atributo que todavía no contemplamos, un error de origen o una excepción técnicamente válida.
Lo que intento evitar es resolver cada caso creando automáticamente un campo nuevo.
Si cada excepción produce una columna, podemos terminar muy rápido con atributos como:
Material
Material 2
Tipo de material
Material especial
Material proveedor
Material web
El modelo crece, pero no necesariamente mejora.
Las excepciones deberían pasar por una instancia de revisión donde podamos decidir si realmente estamos frente a un concepto nuevo o simplemente ante otra forma de expresar uno existente.
Paso 9: defino qué fuente tiene autoridad cuando los datos se contradicen
Trabajar con múltiples proveedores también significa encontrar contradicciones.
Una planilla indica que una pieza mide 125 mm. La ficha técnica dice 120 mm. El sitio del fabricante muestra 12,5 cm. Un archivo del año anterior tiene un cuarto valor.
¿Cuál utilizamos?
No hay una regla universal. Necesitamos definir una jerarquía de fuentes según el tipo de dato.
Para ciertas especificaciones puede prevalecer la documentación técnica oficial. Para identificadores comerciales puede existir un archivo maestro. Los activos digitales pueden tener otro repositorio de referencia.
Lo importante es que esa decisión no quede implícita.
Cuando distintas fuentes pueden modificar el mismo atributo, necesitamos saber cuál consideramos autoritativa y qué hacemos cuando existe un conflicto.
Esa regla también forma parte del modelo de datos.
Paso 10: automatizo las reglas que ya entendimos
Cuando empezamos a detectar patrones claros podemos automatizar.
Si definimos que:
1 kW → 1000 W
o que:
INOX → Acero inoxidable
esa transformación puede ejecutarse miles de veces sin intervención manual.
Pero si todavía no sabemos si Size representa diámetro, longitud o tamaño comercial, automatizar la decisión simplemente multiplica una duda.
En proyectos industriales de CRITERIA encontramos situaciones donde parte de la información de los fabricantes llegaba en planillas y otra parte solo estaba disponible en sus sitios web. Para construir una fuente homogénea hubo que extraer información mediante scraping, traducirla y reprocesarla antes de incorporarla al PIM.
La automatización resolvió el volumen y la repetición. Antes hizo falta definir qué información extraer, cómo interpretarla y a qué estructura tenía que llegar.
Automatizar funciona muy bien cuando repetimos una decisión ya tomada. Funciona bastante peor cuando usamos la automatización para evitar tomar esa decisión.
¿Cuándo conviene utilizar un estándar como ETIM?
No siempre necesitamos inventar desde cero la forma de describir productos técnicos.
En determinadas industrias existen estándares de clasificación que pueden servir como referencia para estructurar la información. ETIM, por ejemplo, organiza productos técnicos mediante grupos y clases, y define características, valores y unidades que permiten describir productos comparables de fabricantes diferentes.
Esto es especialmente útil cuando necesitamos construir un lenguaje común entre organizaciones que utilizan estructuras distintas.
No significa que cualquier catálogo industrial deba copiar ETIM completo. Podemos utilizar el estándar como referencia para revisar nomenclaturas, detectar características relevantes, analizar familias o construir equivalencias con nuestro modelo propio.
En un proyecto de CRITERIA para distribución eléctrica, por ejemplo, se realizó un análisis profundo de ETIM considerando grupos, clases y características sobre más de 140.000 entidades. A partir de ese trabajo se construyó una nueva taxonomía con más de 140 familias y más de 400 atributos, que después permitió reestructurar un catálogo de más de 50.000 productos.
El valor no estaba simplemente en “usar un estándar”. Estaba en contar con una referencia común para describir productos procedentes de fabricantes diferentes.
Paso 11: pruebo las reglas sobre una muestra antes de aplicarlas a todo el catálogo
Cuando tenemos decenas o cientos de miles de registros, ejecutar una transformación sobre todo el catálogo no es la mejor manera de descubrir que una regla estaba equivocada.
Prefiero trabajar primero con una muestra representativa.
Selecciono productos de diferentes proveedores y familias, aplico los mapeos, conversiones y vocabularios y reviso el resultado.
Quiero comprobar si perdimos información, si aparecen atributos vacíos, si alguna unidad se transformó incorrectamente, si dos conceptos distintos terminaron fusionados o si aparecen valores que nuestras reglas todavía no reconocen.
También hay una pregunta especialmente importante:
¿Los productos equivalentes ahora se pueden comparar utilizando los mismos atributos?
Si la respuesta es no, probablemente todavía quede trabajo de modelado.
Cuando la muestra funciona, podemos avanzar por lotes y controlar las excepciones que van apareciendo.
En grandes volúmenes, corregir una regla antes de escalarla siempre es más sencillo que deshacer miles de transformaciones incorrectas.
¿Cómo sé si los datos quedaron realmente normalizados?
No porque la planilla se vea prolija.
La prueba real aparece cuando podemos tomar productos equivalentes de fabricantes distintos y trabajar con ellos utilizando una misma lógica.
Si puedo filtrar válvulas por diámetro aunque tres proveedores hayan entregado originalmente esa medida de formas distintas, la normalización está funcionando.
Si puedo comparar potencia sin recordar qué proveedor utiliza watts y cuál kilowatts, también.
Si puedo utilizar un filtro de materiales sin encontrar diez maneras distintas de decir Acero inoxidable, también.
Y hay una señal todavía más interesante: cuando llega un proveedor nuevo, ya no tenemos que rediseñar todo el catálogo. Tenemos que interpretar su información y mapearla contra una estructura que ya existe.
Ahí el trabajo empieza a escalar.
De cien idiomas de proveedor a un idioma común de catálogo
Recibir información heterogénea no es una anomalía en distribución industrial. Es parte del problema que tenemos que resolver.
Cada fabricante creó sus datos para sus propios procesos, sistemas y necesidades. Pretender que todos los proveedores modifiquen su estructura para adaptarse perfectamente a la nuestra rara vez es una estrategia sostenible.
Lo que sí podemos construir es una capa capaz de interpretarlos.
Para eso necesitamos conservar el dato original, diagnosticar las fuentes, definir un modelo propio, mapear atributos, separar valores mezclados, tipificar correctamente la información, normalizar unidades y vocabularios, gestionar excepciones y automatizar solamente aquello que ya entendemos.
Con esas reglas, el próximo proveedor deja de significar otro proyecto desde cero. Pasa a ser una nueva fuente que tenemos que incorporar a una estructura conocida.
Para mí, ordenar datos técnicos de muchos proveedores se parece bastante a recibir ingredientes de mercados distintos: algunos vienen en kilos, otros en libras; algunos usan nombres locales y otros etiquetas que nunca vimos. No necesitamos que todos los mercados cambien. Necesitamos entender qué recibimos, decidir cómo lo vamos a llamar, dónde lo vamos a guardar y qué transformación necesita para poder utilizarlo con seguridad. En un catálogo industrial ocurre algo parecido: la escala empieza a ser manejable cuando dejamos de corregir productos uno por uno y empezamos a construir reglas.
