как обрабатывать нули в массовом обновлении Mulesoft - PullRequest
0 голосов
/ 12 марта 2019

Есть много похожих вопросов / ответов, но они не включают пример полезной нагрузки или не предназначены для dataweave 2.0.

Пример полезной нагрузки

{
  "updateCaseOutput": [
    {
      "HENRY_RESPONSE": "error",
      "AUTO_INDEX": 472
    },
        {
      "HENRY_RESPONSE": null,
      "AUTO_INDEX": 473
    },
        {
      "AUTO_INDEX": 474
    }
  ]
}

У меня естьследующее преобразование просто включает массив.

%dw 2.0
output application/json
---
payload.updateCaseOutput map ( updateCaseOutput , indexOfUpdateCaseOutput ) -> {
    HENRY_RESPONSE: updateCaseOutput.HENRY_RESPONSE default 'updated',
    AUTO_INDEX: updateCaseOutput.AUTO_INDEX
}

Что показывает это в предварительном просмотре преобразования:

[
  {
    "HENRY_RESPONSE": "error",
    "AUTO_INDEX": 472
  },
  {
    "HENRY_RESPONSE": "updated",
    "AUTO_INDEX": 473
  },
  {
    "HENRY_RESPONSE": "updated",
    "AUTO_INDEX": 474
  }
]

Пока все хорошо.Следующий инструмент - это средство ведения журнала, и он во время выполнения вместо значения по умолчанию для пустых значений отображается как

"HENRY_RESPONSE": {}

, что приводит к сбою массового обновления для типа столбца:

********************************************************************************
Message               : Invalid column type.
Error type            : DB:QUERY_EXECUTION
Element               : UpdateHenry/processors/4 @ retro:retro.xml:79 (Bulk update)
Element XML           : <db:bulk-update doc:name="Bulk update" doc:id="e282a24a-d585-4a53-8f0f-eff2f99e5e32" config-ref="ClarifyDev">
<db:sql>UPDATE SA.RETRO_EMAILCLERK_STAGING_UPD
SET HENRY_RESPONSE=:HENRY_RESPONSE,DATE_TIME_PROCESSED=SYSDATE
WHERE AUTO_INDEX=:AUTO_INDEX</db:sql>
</db:bulk-update>

  (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
********************************************************************************

Кто-нибудь может показать мне, что мне здесь не хватает?Вот массовое обновление:

        <db:bulk-update doc:name="Bulk update" doc:id="e282a24a-d585-4a53-8f0f-eff2f99e5e32" config-ref="ClarifyDev">
            <db:sql >UPDATE MyTableName
SET HENRY_RESPONSE=:HENRY_RESPONSE,
 DATE_TIME_PROCESSED=SYSDATE
WHERE AUTO_INDEX=:AUTO_INDEX</db:sql>
        </db:bulk-update>

Очень ценится

...