我想使用 JSONata 以一种高性能的方式加入 2 个具有大约 500 个元素的数组。
我找到了一种加入 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 查询引起的!