2017-09-21 9 views
1

나는 아파치 Nifi에 초보자이야 다음과 같은 문제를 다음과 같이 내가 JSON 파일을 변환하고 싶습니다 : 에서 :업데이트 JSON - 속성 : 맞으면

{ 
    "Property1": "x1", 
    "Property2": "Tag_**2ABC**", 
    "Property3": "x3", 
    "Property4": "x4" 
    } 

에 :

{ 
    "**2ABC**_Property1": "x1", 
    "**2ABC**_Property3": "x3", 
    "**2ABC**_Property4": "x4" 
    }, 

의미 : 특정 속성에서 값을 가져 와서 다른 모든 속성을 업데이트합니다. 업데이트가 문자열을 추가 할 때 잘 작동하는 JoltTransformer-Processor를 사용하여 예제를 찾을 수 있습니다. 하지만 내 경우가 아닙니다. 지금까지 수행 한 작업 : evaluateJSONPath 프로세서를 사용하여 각 속성을 설정했습니다. 그러나 나는 업데이트 속성 프로세서를 사용하여 성공하지 못하게 할 수있는 많은 가능성을 시험해 보았습니다. 내 모든 가능한 시험은 같은 (UpdateAttribute 이내)보고 :

[ 
{"operation": "modify-overwrite-beta", 
    "spec": { 
     "Property1": "${'Property2':substring(4,6)}_${'Property1'}" 
      } 
} 
] 

내가 여기에 포인트를 잃었 :

Property1 --> ${'Property2':substring(4,6)}"_"${'Property1'} 

이 맞으면를 사용하십니까? 미리 감사드립니다!

답변

1

저는 Nifi에 대해 잘 모릅니다. 그러나 Jolt에서 어떻게 할 수 있는지 여기 있습니다.

사양

[ 
    { 
    "operation": "shift", 
    "spec": { 
     // match Property2 
     "Property2": { 
     "Tag_*": { // capture the nasty "**2ABC**" part to reference later 
      // go back up the tree to the root 
      "@2": { 
      // match and ignore Property2 
      "Property2": null, 
      // 
      // match Property* and use it and the captured 
      // "prefix" to create the output key 
      // &(2,1) references the Tag_*, and pull off the "**2ABC**" part 
      "Property*": "&(2,1)_&" 
      } 
     } 
     } 
    } 
    } 
] 
+0

우수한 당신을 감사합니다! 다행스럽게도 OP가 동의 할 것입니다. NiFi는 모든 Jolt 사양을 허용하며 "Shift"를 선택하여 Milo의 ​​사양에 붙여 넣어야합니다. – mattyb

+0

좋아요! 수백만 주셔서 감사합니다! 내 주말에 .... – MDS