使用mysql以下代码:
SELECT * from TABLE limit 5, 10
将拉动表格的第 5 到第 10 行。通过 S3 选择中的 SQL 引擎执行此操作的等价物是什么(我相信 PrestoDB)?是否有与 S3 选择一起使用的行号构造函数或运算符?
使用mysql以下代码:
SELECT * from TABLE limit 5, 10
将拉动表格的第 5 到第 10 行。通过 S3 选择中的 SQL 引擎执行此操作的等价物是什么(我相信 PrestoDB)?是否有与 S3 选择一起使用的行号构造函数或运算符?
S3 Select 文档位于:Amazon S3 Select 和 Amazon Glacier Select 的 SQL 参考 - Amazon Glacier
该LIMIT
条款记录为:
LIMIT number
该
LIMIT
子句根据 number 限制您希望查询返回的记录数。
所以,不可用。
它不能作为一项功能使用,但这就是我们为我们的项目所做的。
在将 CSV 文件上传到 S3 之前,我们只是在 CSV 中添加了一个字段 row_index。
row_index, field1
1, a,
2, b,
3, c,
4, d,
5, d,
所以查询
Select * from Table Limit 1, 4
将被替换为
Select * from s3 where row_index >= 1 and row_index <= 4
请记住,如果您的文件太大,扫描成本会增加。但是您可以考虑将文件分成更小的块,以便以低成本更好地查询。
例如,一个 100k-rows.csv 的文件可以拆分为 10 个文件。
1-10000-rows.csv
10001-20000-rows.csv
...
然后您可以读取offset
,limit
变量来查找应该为您的行查询哪个文件。例如
to fetch rows 200- 300 - You will query the 1-10000-rows.csv
to fetch rows 12000- 12500 - You will query the 10001-20000-rows.csv
根据他们的文档,PrestoDB 支持 LIMIT 子句,但只有一个参数用于行数。它不支持偏移量的第二个参数。