У меня есть простая таблица в Афине, у нее есть массив событий.Я хочу написать простую инструкцию выбора, чтобы каждое событие в массиве становилось строкой.
Я пытался взорвать, преобразовать, но безуспешно.Я успешно сделал это в Spark and Hive.Но эта Афина обманывает меня.Пожалуйста, посоветуйте
DROP TABLE bi_data_lake.royalty_v4;
CREATE external TABLE bi_data_lake.royalty_v4 (
KAFKA_ID string,
KAFKA_TS string,
deviceUser struct< deviceName:string, devicePlatform:string >,
consumeReportingEvents array<
struct<
consumeEvent: string,
consumeEventAction: string,
entryDateTime: string
>
>
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
LOCATION 's3://XXXXXXXXXXX';
Запрос, который не работает
select kafka_id, kafka_ts,deviceuser,
transform( consumereportingevents, consumereportingevent -> consumereportingevent.consumeevent) as cre
from bi_data_lake.royalty_v4
where kafka_id = 'events-consumption-0-490565';
Не поддерживается разнесенный вид сбоку (самовывоз репортажных событий) как саморазвитие репортажного события
Ответ на вопрос, чтобы использовать unnset
Нашел ответ на мой вопрос
WITH samples AS (
select kafka_id, kafka_ts,deviceuser, consumereportingevent, consumereportingeventPos
from bi_data_lake.royalty_v4
cross join unnest(consumereportingevents) WITH ORDINALITY AS T (consumereportingevent, consumereportingeventPos)
where kafka_id = 'events-consumption-0-490565' or kafka_id = 'events-consumption-0-490566'
)
SELECT * FROM samples