В Афине я читаю некоторые вложенные файлы JSON в таблицу.Поле, которое на самом деле содержит вложенный JSON, содержит несовместимое количество полей в разных файлах необработанных данных.
Иногда данные выглядят примерно так:
{
"id": "9f1e07b4",
"date": "05/20/2018 02:30:53.110 AM",
"data": {
"a": "asd",
"b": "adf",
"body": {
"sid": {
"uif": "yes",
"sidd": "no",
"state": "idle"
}
},
"category": "scene"
}
}
В других случаяхданные выглядят примерно так:
{
"id": "9f1e07b4",
"date": "05/20/2018 02:30:45.436 AM",
"data": {
"a": "event",
"b": "state",
"body": {
"persona": {
"one": {
"movement": "idle"
}
}
},
"category": "scene"
}
}
В других случаях поле "body" содержит как структуру "sid", так и структуру "персона".
Как видите, поля, указанные в "теле", не всегда согласованы.Я попытался добавить все возможные поля и их структуры в мой запрос CREATE EXTERNAL TABLE.Однако столбец «data», который содержит поле «body», по-прежнему не заполняется и остается пустым, когда я «таблица предварительного просмотра» в Афинах.
В CREATE TABLE DDL есть способ указать, что IХотите заполнить все столбцы, которые отсутствуют в JSON каждого файла, нулевыми значениями?
Кроме того, «имена», данные полям в запросе, не должны соответствовать значениям ключа в необработанном JSON.Кажется, Афина просто читает структуру и ничего больше.Есть ли способ указать, какой ключ JSON соответствует какому имени поля Athena напрямую?Так что, если в «теле» одного файла отсутствуют некоторые поля, Афина может узнать, какое из них отсутствует, и заполнить его как ноль?