Да, вы можете сделать что-то вроде этого:
"transform": [
{
"window": [{"op": "rank", "as": "rank"}],
"sort": [{"field": "Days_to_maturity", "order": "descending"}]
},
{"joinaggregate": [{"op": "max", "field": "rank", "as": "total"}]}
{"filter": "(datum.rank <= 10) || (datum.rank > datum.total - 10)"}
],
Обратите внимание, что агрегат rank
будет давать равные значения одинакового ранга, поэтому он может не отображать ровно 10 на каждом конце, если есть дубликаты значения в ваших данных. Если вы хотите просто отобразить первую и последнюю 10 строк независимо от дубликатов, вы можете изменить на count
окно с помощью ignorePeers
:
"transform": [
{
"window": [{"op": "count", "as": "rank"}],
"sort": [{"field": "Days_to_maturity", "order": "descending"}],
"ignorePeers": true
},
{"joinaggregate": [{"op": "max", "field": "rank", "as": "total"}]},
{"filter": "(datum.rank <= 10) || (datum.rank > datum.total - 10)"}
],
Более подробную информацию о параметрах преобразования окон можно найти в Документы Window Transform .