es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Reemplace los valores de columna usando Apache NiFi.

Tengo un archivo CSV de ejemplo que se ve así:

ID,FNAME,PROBLEM_COL
1,sachith,
2,nalaka,
3,john,
4,adams,

Siempre el valor de PROBLEM_COL está vacío. Quiero reemplazar lo vacío con la cadena null.

Para eso, utilizo el procesador UpdateRecord y el lector CSV con la opción Use String Fields From Headers, valor personalizado como /PROBLEM_COL y ${field.value:replaceFirst('','null')}.

Esto se ejecuta sin errores o advertencias. Pero PROBLEM_COL no se reemplaza. Me referí a esto, pero no resuelve mi problema. Mis encabezados están en letras mayúsculas.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para reemplazar los valores vacíos en la columna PROBLEM_COL con la cadena null, puede seguir estos pasos utilizando los procesadores CSVReader y UpdateRecord:

    1. Agregue los procesadores CSVReader y UpdateRecord a su flujo de NiFi.
    2. Configure el procesador CSVReader para que use la propiedad “Use String Fields From Headers” y establezca “First Line Is Header” en “true”.
    3. Configure el procesador UpdateRecord y agregue una nueva “Propiedad Definida por el Usuario” con el nombre PROBLEM_COL y el valor ${field.value:replaceFirst('','null')}.
    4. Agregue una nueva configuración de “UpdateRecord” y use el CSVReader como el servicio de controlador de lectura de registros.
    5. Establezca los formatos CSV de entrada y salida en el mismo formato.
    6. En la propiedad “Record Path”, establezca /PROBLEM_COL como la ruta.
    7. Establezca la propiedad “Valor” en ${PROBLEM_COL}.
    8. Inicie ambos procesadores y monitoree su progreso.

    Si la columna PROBLEM_COL no se está reemplazando, es posible que necesite verificar que las cabeceras coincidan exactamente (incluyendo mayúsculas y minúsculas) y que el procesador esté configurado correctamente. También puede intentar utilizar la prueba de lenguaje de expresiones para probar la expresión ${field.value:replaceFirst('','null')} y asegurarse de que esté produciendo el resultado deseado.

Comments are closed.