ПОКАЗАТЬ РАЗДЕЛЫ при заказе в Амазонке Афина - PullRequest
0 голосов
/ 07 июня 2018

У меня есть этот запрос:

SHOW PARTITIONS tablename;

Результат:

dt=2018-01-12
dt=2018-01-20
dt=2018-05-21
dt=2018-04-07
dt=2018-01-03

Это дает список разделов на таблицу.Поле раздела для этой таблицы dt, которое является столбцом даты.Я хочу увидеть заказанные разделы.

Документация не объясняет, как это сделать: https://docs.aws.amazon.com/athena/latest/ug/show-partitions.html

Я пытался добавить заказ по:

SHOW PARTITIONS tablename order by dt;

Но это дает:

Амазонка Афина;Код статуса: 400;Код ошибки: InvalidRequestException;

Ответы [ 3 ]

0 голосов
/ 02 января 2019

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

SELECT partition_value
FROM information_schema.__internal_partitions__
WHERE table_schema = '<DB_NAME>'
        AND table_name = '<TABLE_NAME>'
ORDER BY partition_value
0 голосов
/ 04 февраля 2019

Из ваш комментарий звучит так, будто вы хотите отсортировать разделы, чтобы выяснить, существует ли определенный раздел.Для этого я предлагаю вам использовать Glue API вместо запросов к Athena.Запустите aws glue get-partition help или ознакомьтесь с документацией предпочитаемого SDK, чтобы узнать, как он работает.

Существует также вариант, чтобы вывести список всех разделов таблицы, запустите aws glue get-partitions help, чтобы узнать больше об этом.Я не думаю, что он возвращает разделы в алфавитном порядке, но у него есть операторы для фильтрации.

0 голосов
/ 07 июня 2018

Команда SHOW PARTITIONS не позволит упорядочить результат, так как эта команда не создает набор результатов для сортировки.Эта команда создает только строковый вывод.

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

select distinct dt from tablename order by dt asc;
...