2017-11-23 1 views
0

Apache NiFi 사용 다른 두 필드의 연결을 기반으로 JSON 플로우 파일 내의 모든 요소에 새 필드를 추가하고 싶습니다. 이 경우 JoltTransformJSON 프로세서를 사용하려고하지만, 사용하려는 Jolt 변환은 온라인 tools을 사용하여 정상적으로 작동하지만 NiFi에서는 작동하지 않습니다. 버전 문제가 의심 스럽지만 Jolt 사양에 어리 석을 수 있습니다. JSON에서 concat 지원 Apache에서의 Jolt NiFi

JSON은 다음과 같습니다 입력

...

[ 
    { 
    "id": 485842, 
    "cc": 1, 
    "x": 0, 
    "y": null 
    }, 
    { 
    "id": 281733, 
    "cc": 1, 
    "x": 0, 
    "y": 10 
    }, 
    { 
    "id": 721412, 
    "cc": 12, 
    "x": 0, 
    "y": null 
    } 
] 

내가 원하는 원하는 출력이입니다 ...

[ { 
    "id" : 485842, 
    "cc" : 1, 
    "x" : 0, 
    "y" : null, 
    "id_cc" : "485842_1" 
}, { 
    "id" : 281733, 
    "cc" : 1, 
    "x" : 0, 
    "y" : 10, 
    "id_cc" : "281733_1" 
}, { 
    "id" : 721412, 
    "cc" : 12, 
    "x" : 0, 
    "y" : null, 
    "id_cc" : "721412_12" 
} ] 

그리고 맞으면 내가 site이 온라인에서 사용 변환 .. . NiFi에서

[{ 
    "operation": "modify-default-beta", 
    "spec": { 
    "*": { 
     "id_cc": "=concat(@(1,id),'_',@(1,cc))" 
    } 
    } 
}] 

, 나는을 위해 JoltTransformJSON 프로세서를 구성및 약간 수정 된 Jolt 사양을 사용합니다 ...

{ 
    "operation": "modify-default", 
    "spec": { 
     "*": { 
     "id_cc": "=concat(@(1,id),'_',@(1,cc))" 
     } 
    } 
} 

NiFi가이 확인을 확인하고 프로세스가 실행됩니다. 이 문제를 해결 또는 거기가 시프트 연산을 사용하여 더 쉬운 방법입니다 것 수정 - 기본 동작에 빠른 수정이되는 출력 JSON은 하나의 기록으로 구성되어 있으며 새로운 필드는이

"operation": "modify-default" 

처럼 추가 ?

미리 알려 주셔서 감사합니다.

+0

select (select id, cc, x, y, CAST (id AS VARCHAR) || '_'|| CAST (cc AS VARCHAR) AS id_cc FROMFILE)와 함께 QueryRecord 프로세서를 사용할 수 있습니다. 나는 나중에 대답을 쓸 것이다. – tonykoval

답변

0

동료의 도움을 받아이 작업을 수행 할 수있는 방법을 찾았습니다.

먼저 프로세서의 Jolt Transformation DSL 속성을 Chain으로 설정하십시오.

둘째, 다음에 맞으면 스펙 ... 조작에 beta 같이

[{ 
    "operation": "modify-default-beta", 
    "spec": { 
     "*": { 
     "id_cc": "=concat(@(1,id),'_',@(1,cc))" 
     } 
    } 
}] 

[]

가 필수적인 세트.

셋째, Jolt 프로세서에 공급되는 JSON이 배열인지 확인하십시오.

이 모든 사항을 올바르게 수정하면 예상되는 출력이 생성됩니다.