我正在尝试将来自 Zendesk 的 Incremental Ticket Events API(JSON 格式)的数据收集到关系 MySQL 数据库中——为什么?
好吧,实际上,最终目标是我想要一个指标(计算每天解决的票数)——自动导入主数据库。所以 SQL 可能是不必要的,但我不确定通过解析 JSON 来计算解决次数的最佳方法。我无法直接对 Zendesk 的计算指标进行 API 调用。
所以基本上,重复出现的 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< 时,这指的是已更新的票证字段 - 所以它可以被命名为任何东西。优先级、发送者、接收者、状态等。
我只对>随机字段名称<中的状态字段感兴趣。具体来说,我只想找到“状态”:“已解决” ——这意味着状态已更新为已解决。每次发生这种情况时,我都想提取时间戳、ticket_id 和 updater_id,它们都是“子事件”的兄弟。
所以这就是问题所在。显然,SQL 数据库需要固定数量的字段。所以我不能拉所有的孩子事件。没问题,我只需要一个子事件(状态)。好吧,即使我要在我的工具 (Pentaho) 中找到正确的 JSON 查询表达式来仅提取 $child_events.status 元素,也不是每个更新都有状态更新。该工具希望所有字段之间的比例为 1:1。
实际上 --- 我想我可以将巨大的“子事件”数组放入一个大的 SQL 字段中......然后简单地在 SQL 环境中为“status_solved”做一个解析(in_str)或一些东西......我不知道. 我在这里有点超出我的深度 - 你如何最好地将我想要完成的内容解析到 SQL 数据库中?或者是否有更好的方法完全涉及跳过 SQL?
同样,我使用的是 Pentaho,它允许在需要时将数据解析为 JSON 之前对数据进行 java 和 javascript 转换。
同样,我想要状态:解决事件、时间戳、updater_id、ticket_id。非常感谢任何帮助!