Я пытаюсь собрать данные из Zendesk Incremental Ticket Events API (в формате JSON) в реляционную базу данных MySQL. Почему?
Ну, на самом деле, конечная цель заключается в том, что мне нужна метрика (количество решений по заявкам в день) — автоматически импортируемая в основную базу данных. Таким образом, SQL может быть ненужным, но я не уверен, что лучший способ подсчитать количество решений путем разбора JSON. Я не могу сделать прямой вызов API к расчетным показателям Zendesk.
Таким образом, повторяющаяся структура JSON выглядит следующим образом (внутри основной метки, называемой «ticket_events»):
{
"child_events":[
{"id": 6563223, "via": "Mail", "via_reference_id":null, >random field name1<:result},
{"id": 2321513, "via": "Mail", "via_reference_id":null, >random field name2<:result},
{.... for 1-n elements} ]
"id":8784848451,
"ticket_id":16037,
"updater_id":54548184848,
"timestamp":1416812299
}
Когда я помещаю >random field name1‹, это относится к обновленному полю билета, поэтому его можно назвать как угодно. Приоритет, отправитель, получатель, статус и т. д.
Меня интересует только поле status внутри >случайного имени поля‹. В частности, я просто хочу найти "статус":"решено" — это означает, что статус был изменен на "решено". Каждый раз, когда это происходит, я хочу получить временную метку, ticket_id и updater_id, которые являются братьями и сестрами для «дочерних событий».
Так вот в чем проблема. Очевидно, что для баз данных SQL требуется фиксированное количество полей. Поэтому я не могу вытащить все дочерние события. Не проблема, мне просто нужно одно дочернее событие (статус). Что ж, даже если бы я нашел правильное выражение запроса JSON в своем инструменте (Pentaho), чтобы извлекать только элементы $child_events.status, ну --- не каждое обновление имеет обновление статуса. И инструмент хочет соотношение 1:1 между всеми полями.
На самом деле --- я думаю, я могу поместить гигантский массив "дочерних событий" в одно большое поле SQL... и просто выполнить синтаксический анализ (in_str) или что-то в среде SQL для "status_solved"... я не знаю . Я немного не в своей тарелке - как бы вы лучше всего разобрали то, что я пытаюсь выполнить в базе данных SQL? Или есть лучший подход, который включает пропуск SQL?
Опять же, я использую Pentaho, который позволяет преобразовывать данные с помощью java и javascript, прежде чем я даже начну анализировать их как JSON, если это необходимо.
Опять же, мне нужен статус: решить события, временная метка, updater_id, ticket_id. Любая помощь высоко ценится!