извлечение массива из json в виде таблицы в Кусто - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь получить все строки из массива Json. json аналогичен показанному ниже.

 {
  "messageId": "123",
  "fileName": "abc.json",
  "payload": {
    "routeStatus": "FINAL",
    "activities": [
      {
        "durationSeconds": 1800,
        "location": {
          "longitude": 151.2603,
          "latitude": -33.7644
        },
        "type": "DEPART",
        "slot": {
          "start": "2020-04-14T19:05:00.0000000Z",
          "cost": null,
          "end": "2020-04-15T03:30:00.0000000Z"
        }
      },
      {
        "durationSeconds": 1100,
        "type": "DRIVE"
      },
      {
        "durationSeconds": 360,
        "location": {
          "longitude": 151.21814,
          "latitude": -33.756319
        },
        "type": "SERVICE",
        "slot": {
          "start": "2020-04-14T20:00:00.0000000Z",
          "cost": null,
          "end": "2020-04-15T00:45:00.0000000Z"
        }
      },
      {
        "durationSeconds": 164,
        "type": "DRIVE"
      }
    ],
    "truck": "XYZ"
  }
}

Я хотел бы получить все атрибуты под действиями в таблице, так как мне нужно было бы фильтровать и присоединяться к другим таблицам. Я могу получить только одну строку из массива. Любые указатели были бы полезны.

1 Ответ

1 голос
/ 16 апреля 2020

вы можете использовать mv-expand или mv-apply.

, например:

print d = dynamic({
  "messageId": "123",
  "fileName": "abc.json",
  "payload": {
    "routeStatus": "FINAL",
    "activities": [
      {
        "durationSeconds": 1800,
        "location": {
          "longitude": 151.2603,
          "latitude": -33.7644
        },
        "type": "DEPART",
        "slot": {
          "start": "2020-04-14T19:05:00.0000000Z",
          "cost": null,
          "end": "2020-04-15T03:30:00.0000000Z"
        }
      },
      {
        "durationSeconds": 1100,
        "type": "DRIVE"
      },
      {
        "durationSeconds": 360,
        "location": {
          "longitude": 151.21814,
          "latitude": -33.756319
        },
        "type": "SERVICE",
        "slot": {
          "start": "2020-04-14T20:00:00.0000000Z",
          "cost": null,
          "end": "2020-04-15T00:45:00.0000000Z"
        }
      },
      {
        "durationSeconds": 164,
        "type": "DRIVE"
      }
    ],
    "truck": "XYZ"
  }
})
| mv-expand d.payload.activities
| project durationSeconds = tolong(d_payload_activities.durationSeconds), type = tostring(d_payload_activities.type)
...