Динамически генерировать условие фильтра в DataWeave

#filter #dataweave

Вопрос:

Можно ли динамически генерировать условие фильтра в DW на основе входных значений?

Что-то вроде этого

 payload.entries filter ((item, index) -> dynamicallyGeneratedFilterCondition )
 

где dynamycallyGeneratedFilterCondition-это переменная, определенная, например, следующим образом

 var dynamicallyGeneratedFilterCondition = "item.price == 10"
 

Ответ №1:

filter является «динамическим» по определению, потому что 2-й аргумент является лямбда-выражением (он же анонимная функция), которое создается и предоставляется filter с каждым приложением.

Теперь, основываясь на ваших фрагментах кода, на том, можете ли вы реорганизовать выражение так, чтобы оно отображалось как отдельное объявление, ответ таков: да, вы можете:

 %dw 2.0
output application/json

var fn = (v) -> v > 5
---
{
    call1: 1 to 10 filter $ > 5,
    call2: 1 to 10 filter fn($)
}