如何在dataweave中获取动态列

how to get dynamic column in dataweave

我吹数组

[ {"FF15974433790786634518": 1 },
{"FF15974433790786634518": 2 },
{"FF15974433790786634519": 1 }]

如何在数据编织中获取["FF15974433790786634518","FF15974433790786634519"]

我们可以 map 每个项目和 pluck 键。这给了我们一个数组数组,所以我们使用 flatMap(相当于 flatten(payload map(...)。在得到我们的平面键数组后,我们可以 distinctBy 过滤掉重复项。

编辑:正如下面@machaval 所评论的,您可以使用 namesOf 来使它更加简洁和易于阅读,它是 pluck 的包装器。

%dw 2.0
output application/json
---
payload flatMap namesOf($) distinctBy($)

展开时所有这些都在做什么:

%dw 2.0
output application/json
---
flatten(
    payload map (item, index) -> (
        item pluck ((value, key, index) -> key)
    )
) distinctBy ((item, index) -> item)