How fetch all values of particular key from a array of objects using Dataweave

Viewed 715

Using dataweave I want to fetch all the "ProductCode" values from an array of objects. The output should also fetch distinct values.

Input:

    [
    {
        "Header": {
            "Comments": null,
            "InvoiceNo": "4363627",
            "Vendor": "Vendor1",
            "Description": "Invoice1"
        },
        "Line": [
            {
                "Billing": null,
                "ComboNum": "1",
                "ProductCode": "D4500"
            }
        ]
    },
    {
        "Header": {
            "Comments": "GPoint",
            "InvoiceNo": "4356750",
            "Vendor": "Vendor2",
            "Description": "ALL"
        },
        "Line": [
            {
                "Billing": null,
                "ComboNum": "1",
                "ProductCode": "S4500"
            },
            {
                "Billing": null,
                "ComboNum": "2",
                "ProductCode": "D4500"
            },
            {
                "Billing": null,
                "ComboNum": "3",
                "ProductCode": "D4501"
            },
            {
                "Billing": null,
                "ComboNum": "4",
                "ProductCode": "B4500"
            }
        ]
    }
]

Expected Output:

ProductCode : ('D4500', 'S4500', 'D4501', 'B4500')

Thanks in advance

2 Answers

Try with this

%dw 2.0
output application/json
---
'ProductCode': payload.Line..ProductCode distinctBy $

You can try with this:

(flatten(payload.Line)).ProductCode distinctBy (a) -> a

First, it collects all lines. Then, it extracts the ProductCode and finally, it applies a distinct to get the unique codes.

Related