Apache Nifi: Actualizar Registro – Verificar null y reemplazar con otro parámetro
Estoy utilizando Apache Nifi para el trabajo de ETL. En mi estructura de datos, debido a datos heredados, algunos campos están vacíos o nulos. Quiero completarlos con datos lógicos. Los datos son los siguientes:
[
{
"id": 1234,
"business_date": "2021-11-30",
"order_date_time": "2021-11-30 12:10:45"
},
{
"id": 1,
"business_date": null,
"order_date_time": "2009-10-12 01:02:03"
},
{
"id": 2,
"business_date": "",
"order_date_time": "2007-01-02 03:04:05"
}
]
El resultado final debería ser el siguiente:
[
{
"id": 1234,
"business_date": "2021-11-30",
"order_date_time": "2021-11-30 12:10:45"
},
{
"id": 1,
"business_date": "2009-10-12",
"order_date_time": "2009-10-12 01:02:03"
},
{
"id": 2,
"business_date": "2007-01-02",
"order_date_time": "2007-01-02 03:04:05"
}
]
Por lo tanto, basado en order_date_time, necesito derivar business_date si está vacío o nulo.
He leído a través de https://nifi.apache.org/docs/nifi-docs/html/record-path-guide.html
Todo es independiente y no puedo construir una solución.
Usando el procesador UpdateRecord con los siguientes detalles:
/business_date --> ${field.value:isEmpty():format(/order_date_time, "YYYY-mm-dd")}
Pero esto no parece funcionar.
¿Alguien puede enseñarme cómo se puede hacer esto?
davy.ai
Para poblar campos vacíos o nulos en Apache NiFi utilizando el procesador UpdateRecord, puedes utilizar la siguiente configuración:
${field.value:isEmpty():ifElse(${field.value:toDate("yyyy-MM-dd HH:mm:ss"):format("yyyy-MM-dd")}, ${field.value})}
Esta expresión verifica si el valor del campo está vacío o es nulo. Si lo está, entonces obtiene la fecha de negocio utilizando el order_date_time convirtiéndolo a una fecha y luego formateándolo en el formato yyyy-MM-dd. Si el valor del campo no está vacío, se mantiene el mismo valor del campo.
Con esta configuración, el procesador UpdateRecord debería ser capaz de actualizar el campo business_date con el valor de fecha derivado para los registros donde el campo está vacío o es nulo.