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.

Especificación de NiFi Jolt para entrada de arreglo.

Tengo la siguiente entrada en el procesador de especificación de Nifi Jolt:

[
  {
    "values": [
      {
        "id": "paramA",
        "value": 1
      }
    ]
  },
  {
    "values": [
      {
        "id": "paramB",
        "value": 3
      }
    ]
  }
]

Salida esperada:

[
  {
    "id": "paramA",
    "value": 1
  },
  {
    "id": "paramB",
    "value": 2
  }
]

¿Puede explicar cómo debo hacerlo?

Gracias de antemano.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para transformar el JSON de entrada en el JSON de salida esperado utilizando la especificación Jolt en el procesador Nifi, puedes seguir estos pasos:

    1. Agrega un nuevo procesador JoltTransformJSON a tu flujo de Nifi.
    2. Conecta el procesador JoltTransformJSON con el controlador de flujo de datos.
    3. Configura el procesador JoltTransformJSON con estas propiedades:
      • Especificación Jolt:
    [
      {
        "operation": "shift",
        "spec": {
          "*": {
            "values": {
              "*": {
                "@(2,id)": "[&1].id",
                "@(2,value)": "[&1].value"
              }
            }
          }
        }
      }
    ]
    
    • Destino: contenido del flujo de archivos.
    • Comportamiento de campo no coincidente: déjalo como predeterminado (Ignorar).
      1. Guarda y inicia el procesador JoltTransformJSON.
      2. El JSON de salida esperado será el resultado de este procesador.

    La Especificación Jolt definida anteriormente realiza una única operación (shift) en el JSON de entrada. Especifica cómo mapear los campos de salida deseados (id y valor) a partir del JSON de entrada.

    El * (comodín) se utiliza para indicar que queremos aplicar este mapeo a todos los niveles del JSON de entrada, independientemente de qué tan anidado esté.

    Las expresiones “@(2,id)” y “@(2,value)” seleccionan el valor de los campos “id” y “valor” en el JSON de entrada, respectivamente. La notación “&1” se utiliza para definir dinámicamente el nombre del objeto de salida, que se basa en la posición del objeto coincidente en el JSON de entrada.

    El resultado de esta especificación es un nuevo JSON que contiene un array de objetos, cada uno con un campo “id” y “valor” extraído del JSON de entrada.

Comments are closed.