2017-12-07 1 views
0

Wie kann ich verschachtelte/rekursive Transformation mit Jolt-Transformation tun. Ich versuche, die gewünschte Ausgabe vor der Eingabe in den nachfolgenden Service zu bekommen.Verschachtelte Transformation mit Rolt-Transformer

Meine Eingabe ist

  { 
        "took": 7, 
        "timed_out": false, 
       "_shards": { 
       "total": 1, 
       "successful": 1, 
       "failed": 0 
       }, 
       "hits": { 
       "total": 5, 
       "max_score": 1.000438, 
       "hits": [ 
        { 
        "_id": "AV-SJgvFPkCspwtrqHA1", 
        "_source": { 
         "tenant_id": "tenant1", 
         "session_id": "e780ff74-d33e-4024-9bb7-971f067484ea" 
        }, 
        "inner_hits": { 
         "network_events": { 
         "hits": { 
          "total": 1, 
          "max_score": 6.0892797, 
          "hits": [ 
          { 
           "_source": { 
           "event_id": 16, 
           "response_time": 0, 
           "url": "http://www.google.com/" 
           } 
          }, 
          { 
           "_source": { 
           "event_id": 18, 
           "response_time": 1, 
           "url": "http://www.google1.com/" 
           } 
          } 
          ] 
         } 
         } 
        } 
        }, 
        { 
        "_id": "BS-SJgvFPkCspwtrqHA1", 
        "_source": { 
         "tenant_id": "tenant2", 
         "session_id": "f4939272-d33e-4024-9bb7-971f067484ea" 
        }, 
        "inner_hits": { 
         "network_events": { 
         "hits": { 
          "total": 1, 
          "max_score": 6.0892797, 
          "hits": [ 
          { 
           "_source": { 
           "event_id": 18, 
           "response_time": 4, 
           "url": "http://www.google4.com/" 
           } 
          }, 
          { 
           "_source": { 
           "event_id": 5, 
           "response_time": 5, 
           "url": "http://www.google5.com/" 
           } 
          } 
          ] 
         } 
         } 
        } 
        } 
       ] 
       } 
      } 

und die gewünschte Ausgabe ist

{ 
    “sessions”: [ 
     { 
      session_id : “S1”, 
      tenant_id : “T1”, 
      network_events : [ 
       { 
        “url”: “A”, 
        “response_time” : 22 
       }, 
       { 
        “url”: “B, 
        “response_time” : 1 
       }   
      ] 


     }, 
     { 
      session_id : “S2”, 
      tenant_id : “T1”, 
      network_events : [ 
       { 
        “url”: “C”, 
        “response_time” : 22 
       } 
      ] 


     } 
] 
} 

Ist dies möglich mit Jolt. Ich habe mehrere Kombinationen aus den Beispielbeispielen ausprobiert, aber nicht viel bekommen.

Ich bin neu in Jolt so jede Hilfe wird geschätzt.

Antwort

1
[ 
    { 
    "operation": "shift", 
    "spec": { 
     "hits": { 
     "hits": { 
      "*": { 
      "_source": { 
       "tenant_id": "sessions[#3].tenant_id", 
       "session_id": "sessions[#3].session_id" 
      }, 
      "inner_hits": { 
       "network_events": { 
       "hits": { 
        "hits": { 
        "*": { 
         "_source": { 
         "@": "sessions[#8].network_events.[]" 
         } 
        } 
        } 
       } 
       } 
      } 
      } 
     } 
     } 
    } 
    }, 
    { 
    "operation": "remove", 
    "spec": { 
     "sessions": { 
     "*": { 
      "network_events": { 
      "*": { 
       "data_in": "", 
       "data_out": "", 
       "attributes": "", 
       "event_id": "", 
       "parent_url": "", 
       "resource_type": "" 
      } 
      } 
     } 
     } 
    } 
    } 
]