在 Vertica 中使用 fjsonparser 处理 JSON return 中的嵌套 Arrays/List

Handling Nested Arrays/List in JSON return with fjsonparser in Vertica

我 运行 遇到了一个问题,但我找不到处理它的好方法。我举个例子。

假设我正在使用 Python 请求向 Amtrack 发出 API 调用以获取有关他们的票的信息。 return 以 JSON 格式返回,如下所示:

{
   "tickets": [
    {
      "id":               12345,
      "external_id":      "abcdefg",
      "created_at":       "2015-04-27T22:55:29Z",
      "updated_at":       "2015-04-27T10:38:52Z",
      "type":             "commuter",
      "priority":         "high",
      "status":           "open",
      "recipient":        "Amanda",
      "requester_id":     1234567,
      "route_id":      1234567,
      "tags":             ["round-trip", "commuter"],
      "via": {
        "channel": "web"
      },
      "custom_fields": [
        {
          "id":    27642,
          "value": "Commuter Ticket"
        },
        {
          "id":    27648,
          "value": "reoccuring charge"
        }
      ],

    }
}

我正在生成一个包含大约 1,000,000 张票的 JSON 文件。

我想将它放入 Vertica table,所以我使用内置的 fjsonparser,它运行良好,但 Custom_Fields 键除外。我可以将它放入 table,但该专栏充满了几乎无法阅读的垃圾,我什至无法将其放入此处的文本中。

我正在想办法解决这个问题。我需要 Custom_Fields 中的数据,但由于格式原因,将其解析为字符串是不可行的。当我在 API 拉取后写入文件时,我考虑将所有自定义字段添加到它们自己的 JSON 文件中。类似于:

CF_list = data['tickets']['custom_fields']

with open(filePath, mode='w') as F:
        json.dump(CF_list, F)

这里的问题是我无法将 Custom_Fields 与他们来自的票联系起来。我需要一些帮助。

谢谢!

flatten_arrays=true 添加到 FJSONPARSER。这将展平嵌套数组。