Мне нужно удалить некоторые поля из вывода при отображении набора атрибутов.
Введите:
[
{
"eventType": "xxx",
"entityId": "xxxxxx",
"userName": "xxxxx",
"dateTime": "2010-11-11T07:00:00Z",
"status": "SHIPPED",
"additionalData": {
"quoteId": "xxxxx",
"clientReferenceId": "Srites004",
"modifiedDt": "2010-11-11T07:00:00Z",
"packageId": "AIM_PACKAGE",
"sbsOrderId": "TEST-TS-201809-79486",
"orderReferenceId": "xxxxxx",
"shipDate_1": "2010-11-11T07:00:00Z",
"shipDate_2": "2010-11-12T07:00:00Z",
"shipDate_3": "2010-11-13T07:00:00Z",
"shipMethod_1": "UPS Ground",
"shipMethod_3": "UPS Ground3",
"shipMethod_2": "UPS Ground2",
"trackingNumber_3": "333",
"trackingNumber_1": "2222",
"trackingNumber_2": "221"
}
}
]
Выход:
{
"attribute_name": {
"sbsOrderId": "xxx",
"packageId": "xxxx"
}
}
Эти поля не должны отображаться в выходных данных:
[ "ShipDate", "shipMethod", "Trackingnumber", "quoteId", "цитата-корректуры композиционно-PAGECOUNT", "цитата-корректуры композиционно-актив", "preflightErrorReport", "modifiedDt", "clientReferenceId », "schoolIds", "orderReferenceId"]
Мой текущий поток данных:
%dw 1.0
%output application/json skipNullOn="everywhere"
---
attribute_name:
(pl.additionalData mapObject {
(($$) :[$]) when not ( ($$ contains "shipDate") or ($$ contains "shipMethod") or ($$ contains "trackingNumber") or ($$ contains "quoteId") or ($$ contains "quote-proof-composition-pageCount") or ($$ contains "quote-proof-composition-asset") or ($$ contains "preflightErrorReport") or ($$ contains "modifiedDt") or ($$ contains "clientReferenceId") or ($$ contains "schoolIds") or ($$ contains "orderReferenceId"))})
]]}
Работает нормально, но мне нужно сделать dw более простым.
Есть предложения?