Я хотел бы объединить 2 массива, содержащих около 500 элементов, с использованием JSONata.
Я нашел способ объединения 2 массивов, но он не очень производительный. См. https://try.jsonata.org/VqzeZDAjA (тот же ввод и вывод и запрос копируются здесь ниже).
Ввод:
{
"_msgid": "a070e32c.e71ed",
"topic": "",
"rc": {
"code": 0
},
"table1": {
"array1": [
{
"country_region": "Thailand",
"field_A": "A for Thailand"
},
{
"country_region": "Japan",
"field_A": "A for Japan"
}
]
},
"array2": [
{
"country_region": "Thailand",
"field_B": "B for Thailand"
},
{
"country_region": "Japan",
"field_B": "B for Japan"
}
]
}
Ожидаемый результат:
{
"array1": [
{
"country_region": "Thailand",
"field_A": "A for Thailand",
"field_B": "B for Thailand"
},
{
"country_region": "Japan",
"field_A": "A for Japan",
"field_B": "B for Japan"
}
]
}
Рабочий запрос , но не очень эффективный в случае массивов с 500 элементами.
(
$array2 := array2;
table1 ~> | array1 | { "field_B" :
($country_region := country_region;
$array2[$country_region=$.country_region])
.field_B}|
)
Обновление 2020- 03-29
Здесь выше утверждается, что рабочий запрос (см. Выше) не очень производительный. Дальнейший анализ показал, что это не так: фактическая производительность вышеупомянутого запроса в порядке (аналогична производительности утвержденного запроса). Проблема с производительностью, с которой я столкнулся, была вызвана другим запросом JSONata, который не имеет ничего общего с этим соединением!