JQ производит переполнение памяти - PullRequest
1 голос
/ 29 февраля 2020

У меня есть файл json, в котором временные ряды хранятся под ключом data, а идентификатор объекта - в ключе info:

{info:
  {id: abc},
data:[
   [10, 5, 3],
   [12, 6, 4],
   # 5000 list items
   ]
}

Я хотел бы сгладить json и выдает что-то похожее на:

[
{id: abc, time: 10, x: 5, y: 3},
{id: abc, time: 12, x: 6, y: 4},
# the rest of 5000 points
]

Я выполняю запрос jq и, похоже, хорошо работает для создания серии элементов:

"{time: .data[][0], x: .data[][2], y: .data[][1], item: .info.id}"

Когда я пытаюсь поместить одно и то же выражение в список для создания списка диктов, я достигаю предела переполнения памяти:

"[{time: .data[][0], x: .data[][2], y: .data[][1], item: .info.id}]"

Есть ли что-нибудь еще, что я могу сделать по-другому ? Большое спасибо заранее.

1 Ответ

2 голосов
/ 29 февраля 2020

@ peak уже указал на проблему с вашим запросом , и вот решение, основанное на представленной им информации:

[(.data[]|{time:.[0],x:.[1],y:.[2]})+{id:.info.id}]

См. Его онлайн на jqplay .org

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...