Чтение данных Json из Афины - PullRequest
0 голосов
/ 17 июня 2019

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

{
"total":10,
"count":100,
"values":{
        "source":[{"sourceid":"10001","source":"ABC"},
                  {"sourceid":"10002","source":"XYZ"}
         ]}
}

```athena table
CREATE EXTERNAL TABLE source_master_data(
    total bigint,
    count bigint,
    values struct<source: array<struct<sourceid: string>>>
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
LOCATION 's3://sourcemaster/'


I am trying to read the sourceid and source but no luck.. can anyone help me out

select t1.source.sourceid
from source_master_data
cross join UNNEST(source_master_data.Values) AS t1

1 Ответ

0 голосов
/ 17 июня 2019

unnest необходимо поместить в тип массива. В вашем запросе вы пытаетесь удалить структуру, что невозможно в Афине.

Второй проблемой является использование values без кавычек. Это также не помогает, потому что values является зарезервированным словом в Афине.

Общий запрос будет выглядеть примерно так:

select t1.source.sourceid
from source_master_data
cross join UNNEST(source_master_data."values".source) AS t1 (source)
...