JOLT映射中userEmailId字段未在输出中生成的问题
JOLT转换中WG_REQUESTOR_EMAIL字段丢失的修复方案
问题根源
- 第二个Shift操作过滤了items路径:原转换的第二个
shift操作仅明确保留了integrationEntityHeader、poDetails下的externalId、status、poHeader字段,完全未处理items层级,导致第一个shift中生成的items数据被直接丢弃。 - 第一个Shift中items映射未关联行数据:原第一个shift里,
WG_REQUESTOR_EMAIL的映射是独立的,但PO行数据(PO_POD_LN_EVW1)的处理在同级的*下,需要确保请求者邮箱的结构完整,同时和PO行数据的处理逻辑清晰分隔。
修复后的JOLT转换规则
[ { "operation": "shift", "spec": { "#UPSERT": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityHeader.action", "*": { "*": { "*": { "*": { "PO_ID": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.externalId", "#APPROVED": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.status", "PO_AMT_TTL": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.grossTotalAmount", "WG_REQUESTOR_EMAIL": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.items.item.requesterDetails.userEmailId", "PO_POD_LN_EVW1": { "WG_REQ_ID": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.poDescription", "#STANDARD": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.poType", "PO_POD_SHP_EVW1": { "FREIGHT_TERMS": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.deliveryTermCode" } } } } } } } }, { "operation": "shift", "spec": { "*": { "*": { "*": { "integrationEntityHeader": "&3.&2.&1.&", "integrationEntityDetails": { "*": { "externalId": "&5.&4.&3.&2.&1.&", "status": "&5.&4.&3.&2.&1.&", "poHeader": "&5.&4.&3.&2.&1.&", "items": "&5.&4.&3.&2.&1.&" } } } } } } }, { "operation": "cardinality", "spec": { "*": { "*": { "*": { "*": { "*": { "status": "ONE", "poHeader": { "*": "ONE" }, "items": { "item": { "requesterDetails": { "userEmailId": "ONE" } } } } } } } } } } ]
修复后输出结果
{ "integration-inbound:IntegrationDetails": { "integrationEntities": { "integrationEntity": { "integrationEntityHeader": { "action": "UPSERT" }, "integrationEntityDetails": { "poDetails": { "externalId": 25052, "status": "APPROVED", "poHeader": { "poType": "STANDARD", "grossTotalAmount": 14.99, "poDescription": 25694, "deliveryTermCode": "FOBDEST" }, "items": { "item": { "requesterDetails": { "userEmailId": "ZacharyEngels@westfieldgrp.com" } } } } } } } } }
关键修改点
- 第二个Shift操作新增items保留规则:在
integrationEntityDetails的处理中加入"items": "&5.&4.&3.&2.&1.&",确保items层级不会被过滤。 - 明确PO行字段匹配:将原第一个shift中的
*改为具体的PO_POD_LN_EVW1,避免不必要的字段匹配干扰。 - Cardinality操作补充items字段的唯一性约束:确保
userEmailId只保留一个值,符合输出结构要求。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

