Выберите строки по индексу в Афинах Амазонки - PullRequest
0 голосов
/ 28 июня 2018

Это очень простой вопрос, но я не могу найти документацию по нему. Как можно было бы запросить строки по индексу (то есть выбрать строку с 10-го по 20-й в таблице)?

Я знаю, что есть функция row_numbers, но, похоже, она не выполняет то, что я хочу.

1 Ответ

0 голосов
/ 02 июля 2018

Кажется, я нашел обходной и неуклюжий способ сделать это в Афине, так что любые лучшие ответы приветствуются. Этот подход требует, чтобы в вашей таблице уже был какой-то числовой столбец, в данном случае с именем some_numeric_column:

SELECT some_numeric_column, row_num FROM (
  SELECT some_numeric_column,
row_number() over (order by some_numeric_column) as row_num
FROM your_table 
  )
  WHERE row_num between 100000 and 100010

Чтобы объяснить, вы сначала выбираете какой-либо числовой столбец в ваших данных, а затем создаете столбец (называемый row_num) номеров строк, который основан на порядке выбранного вами числового столбца. Затем вы оборачиваете все это в вызове select, потому что Athena не поддерживает создание и последующую обработку столбца row_num в рамках одного вызова. Если вы не закроете его за второй SELECT вызов, Афина выложит несколько ошибок о том, что не найдет столбец с именем row_num.

...