Select 行(按 Amazon Athena 中的索引)
Select rows by index in Amazon Athena
这是一个非常简单的问题,但我似乎找不到相关文档。如何按索引查询行(即 select table 中的第 10 行到第 20 行)?
我知道有一个 row_numbers
函数,但它似乎无法满足我的要求。
我似乎在 Athena 中找到了一种迂回而笨拙的方法,所以欢迎任何更好的答案。这种方法要求您的 table 中已经有一些数字列,在本例中名为 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
解释一下,您首先 select 数据中的一些数字列,然后根据 select 的顺序创建一个行号列(称为 row_num)编辑数字列。然后将所有内容包装在 select 调用中,因为 Athena 不支持在单个调用中创建并调节 row_num 列。如果您不将其包装在第二个 SELECT
调用中,Athena 将吐出一些关于未找到名为 row_num
.
的列的错误
不要指定任何分区,因此您的行号将是 1 和记录数之间的整数。
SELECT row_num FROM (
SELECT row_number() over () as row_num
FROM your_table
)
WHERE row_num between 100000 and 100010
这是一个非常简单的问题,但我似乎找不到相关文档。如何按索引查询行(即 select table 中的第 10 行到第 20 行)?
我知道有一个 row_numbers
函数,但它似乎无法满足我的要求。
我似乎在 Athena 中找到了一种迂回而笨拙的方法,所以欢迎任何更好的答案。这种方法要求您的 table 中已经有一些数字列,在本例中名为 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
解释一下,您首先 select 数据中的一些数字列,然后根据 select 的顺序创建一个行号列(称为 row_num)编辑数字列。然后将所有内容包装在 select 调用中,因为 Athena 不支持在单个调用中创建并调节 row_num 列。如果您不将其包装在第二个 SELECT
调用中,Athena 将吐出一些关于未找到名为 row_num
.
不要指定任何分区,因此您的行号将是 1 和记录数之间的整数。
SELECT row_num FROM (
SELECT row_number() over () as row_num
FROM your_table
)
WHERE row_num between 100000 and 100010