Transformaciones y reglas de calidad
Objetivo y contrato de los registros
Las transformaciones integradas trabajan sobre los registros que llegan desde sus padres. Una operación puede cambiar campos, valores, cantidad de filas u orden. Antes de conectar un destino, declare cuáles de esas propiedades deben conservarse. La calidad no se limita a que el Mapping sea válido: un grafo correcto puede producir un resultado de negocio incorrecto si las claves o el tipo de unión no representan la relación real.
El catálogo siguiente contiene todos los componentes de categorías Transform y Quality. Sus identificadores son estables dentro de la configuración; las etiquetas son las mostradas al usuario. Los campos enumerados describen el contrato del componente, no funciones de un lenguaje de programación abierto. Para fuentes y destinos consulte componentes de Mapping.
Catálogo completo
| Componente / identificador | Categoría | Configuración declarada |
|---|---|---|
Row filter / filter |
Transform | field; operator (equals, not_equals, contains, starts_with, ends_with, gt, gte, lt, lte, not_empty); value |
Field selector / select |
Transform | fields |
Field mapper / rename |
Transform | mapping |
Calculated field / derive |
Transform | field; template |
Convert type / convert |
Transform | field; targetType (string, integer, number, boolean, date, datetime); outputField; onError (fail, null, keep, default); defaultValue |
Clean text / clean |
Transform | fields; operations |
Replace values / replace |
Transform | field; find; replacement; matchMode (contains, exact, starts_with, ends_with); caseSensitive |
Split field / split |
Transform | field; delimiter; outputFields; keepSource; trimParts |
Concatenate fields / concat |
Transform | fields; outputField; separator; skipEmpty |
Join / join |
Transform | joinType (inner, left, right, full); leftInputId; rightInputId; leftKey; rightKey; conditions; keyType (auto, string, integer, number, boolean, date, datetime); strategy (auto, hash, sorted); caseSensitive; trimStrings; nullsEqual; rightPrefix |
Default value / defaults |
Quality | field; value; when (null_or_empty, null, empty) |
Limit rows / limit |
Transform | count; offset |
Deduplicate / dedupe |
Quality | fields |
Row sort / sort |
Transform | field; direction (asc, desc) |
Group aggregate / aggregate |
Transform | groupBy; metric (count, sum, avg); field; outputField |
Quality check / validate |
Quality | field; maxNullPercent |
Required fields / quality_required |
Quality | fields; maxInvalidPercent |
Type check / quality_type |
Quality | field; expectedType (string, integer, number, boolean, date, datetime); allowEmpty; maxInvalidPercent |
Pattern check / quality_pattern |
Quality | field; pattern; allowEmpty; maxInvalidPercent |
Range check / quality_range |
Quality | field; minimum; maximum; inclusive; allowEmpty; maxInvalidPercent |
Allowed values / quality_domain |
Quality | field; allowedValues; caseSensitive; allowEmpty; maxInvalidPercent |
Proyección y enriquecimiento
Field selector conserva la lista de campos elegida. Field mapper relaciona nombres de origen con nombres de destino; úselo para establecer un esquema de salida reconocible por el consumidor. Revise colisiones antes de renombrar: dos conceptos distintos no deben terminar representados por un mismo nombre lógico.
Calculated field crea un campo a partir de una plantilla. ${customer} toma el valor de una columna y ${param.region} toma un parámetro. La sustitución produce texto; no interpreta una fórmula aritmética ni ejecuta JavaScript o SQL. Consulte expresiones y variables para distinguir esta plantilla de una condición de Workflow.
Convert type admite String, Integer, Number, Boolean, Date y Date and time. Output field vacío reemplaza el campo de origen; un nombre distinto permite conservar el valor inicial. On conversion error decide entre fallar, asignar nulo, conservar el original o usar un valor predeterminado. Conservar valores originales puede dejar una columna heterogénea: valide la salida antes de enviarla a una tabla tipada.
Limpieza de texto
Clean text aplica una lista ordenada de operaciones: trim, collapse_whitespace, lower, upper y remove_accents. Por defecto recorta extremos y colapsa espacios. Aplique una política coherente a ambos lados de una clave de unión. No elimine acentos de un nombre que deba conservarse legalmente sólo para facilitar una comparación; cree un campo normalizado separado cuando sea necesario.
Replace values distingue coincidencia por contenido, valor exacto, prefijo y sufijo; Case sensitive controla el tratamiento de mayúsculas. Split field divide por un delimitador y asigna Output fields, con opciones para conservar el origen y recortar partes. Concatenate fields define separador, campo de salida y omisión de valores vacíos. Ninguno de estos componentes debe confundirse con un analizador de expresiones regulares arbitrarias.
Cantidad, orden y agrupación
Row filter acepta Equals, Does not equal, Contains, Starts with, Ends with, comparadores mayor/menor con o sin igualdad, e Is not empty. Su lista de operadores no coincide con la de decisiones de Workflow. Tipifique números antes de comparar cuando el origen sea textual y valide los límites con registros exactamente iguales al umbral.
Limit rows combina Maximum rows y Rows to skip. Sirve para una ventana controlada, pero no convierte una muestra en una validación de toda la población. Row sort ordena por Field y Direction. Group aggregate agrupa por Group fields y calcula Count, Sum o Average, con Value field y Output field según corresponda. No documente medianas, percentiles ni múltiples métricas implícitas: no figuran en este catálogo.
Deduplicate configura Match fields. Es una regla de identidad, por lo que debe probarse con registros iguales en la clave y distintos en otros atributos. Confirme qué registro resulta antes de usarla para reconciliación de datos; no presuponga una política de “última actualización” que no haya modelado explícitamente.
Uniones
Join declara Inner, Left, Right y Full, padres izquierdo y derecho, claves y condiciones adicionales AND. Key type puede ser automático o un tipo explícito. Strategy distingue Automatic hash, Hash y Sorted merge. Case sensitive, Trim strings y Match nulls modifican la equivalencia de claves. Right collision prefix, inicialmente right_, permite distinguir nombres repetidos.
Compruebe unicidad y cardinalidad antes de unir. Dos coincidencias a la izquierda y tres a la derecha pueden multiplicar registros; ese resultado no es necesariamente un defecto del motor. Prepare casos sin coincidencia, con coincidencia única, con duplicados y con nulos. Un Left join debería preservar la intención de mantener registros izquierdos, pero la cantidad exacta depende de cuántas coincidencias produzca cada clave.
Reglas de calidad
Default value completa un campo cuando es nulo, vacío o cualquiera de ambos, según Apply when. Quality check controla porcentaje máximo de nulos. Required fields valida completitud de una lista. Type check valida el tipo declarado y puede permitir vacíos. Pattern check aplica un patrón. Range check define mínimo, máximo e inclusión de límites. Allowed values limita el dominio y ofrece sensibilidad a mayúsculas.
Los controles de porcentaje constituyen umbrales de aceptación; no describen una salida automática de cuarentena. No presente una regla como separación de filas válidas e inválidas si el diseño no la implementa. Establezca cero cuando ninguna infracción sea admisible y pruebe el comportamiento con una fila inválida conocida.
POC sintética de limpieza y control
Prepare un CSV con id,name,amount: dos registros válidos y un tercero con amount vacío. Conecte Flat File input → Clean text sobre name → Convert type sobre amount → Required fields sobre id y amount → Flat File output. Use trim y upper; configure conversión con Set null y calidad con Maximum invalid percent igual a cero.
La expectativa es un fallo de calidad debido al tercer registro, sin considerar esa ejecución una carga aceptada. Corrija el dato sintético de entrada, repita y verifique tres registros, nombres normalizados e importes numéricos compatibles con la salida. Si usa un destino remoto, haga esta prueba en un recurso descartable y compruebe efectos parciales antes de reintentar.
Como ampliación, prepare otra fuente con dos claves y una descripción, añada Join y compruebe manualmente el resultado esperado. Registre filas antes y después, claves sin coincidencia y duplicados. Este procedimiento es un ejercicio de aceptación para ejecutar en su entorno; no supone que un destino real ya haya sido validado.