我希望使用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查询引起的!
发布于 2020-03-23 09:03:21
不确定它是否具有更多的性能,但我会使用联接语法来执行以下操作:
{
"array1": array2@$A2.table1.array1@$A1[$A1.country_region = $A2.country_region].$merge([$A1, $A2])
}https://stackoverflow.com/questions/60788572
复制相似问题