Нет, без использования Glue config. Glue Crawlers не очень умны и обычно не могут решать ничего, кроме самых простых c задач, но в данном случае ограничение есть в Афине. Вы не можете указать таблице распаковать такую структуру.
В вашем примере строки имеют разные ключи (key_1, key_2, key_3), действительно ли они разные от строки к строке или на самом деле это одно и то же ключ в каждой строке? Поскольку вы используете одни и те же строки для свойства id
, я предполагаю, что они как-то связаны?
Если они разные, я думаю, вам более или менее не повезло, каждая строка заставит Glue Crawler создать другой столбец, и вы, вероятно, получите произвольный набор столбцов где-то около предела количества разрешенных столбцов - и набор столбцов будет меняться в зависимости от порядка, в котором краулер видел строки в конкретный день. К сожалению, это никогда не будет работать с Glue или Athena.
Если, однако, внешний ключ в каждой строке одинаковый (скажем, «external_key»), вы можете создать представление, которое выполняет распаковку для вы, так что ваши запросы не должны:
CREATE VIEW unpacked_rows AS
SELECT outer_key.id, outer_key.name, outer_key.other_key
FROM my_table
Затем вы можете запросить это представление, как любую таблицу, и получить желаемый результат:
SELECT * FROM unpacked_rows
id | name | other_key
------+--------+----------
key_1 | name_1 | data_1
key_2 | name_2 | data_2
key_3 | name_3 | data_3