Can we query first n rows from DynamoDB using PartiQL?

0

I'm trying to fetch first 5 rows from DynamoDB using PartiQL but couldnot find any syntax or maybe I'm missing something on that. My requirement is to only use it through PartiQL and not by any document model or client library.

已提問 1 年前檢視次數 2912 次
2 個答案
3
已接受的答案

To suit your needs you can use the Limit parameter for PartiQL where you can limit the results to n rows:

https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ExecuteStatement.html#DDB-ExecuteStatement-request-Limit

JS Example:

const params = {
   "Limit": 3,
   "Statement": "SELECT * FROM mytable"
}
const result = client.executeStatement(params).promise()
profile pictureAWS
專家
已回答 1 年前
1

As of writing, PartiQL does not support a "LIMIT" clause. But if you'd like to use PartiQL only, you could run a """SELECT * FROM "<table_name>"""" that would return up to 1MB worth of items and then pick the first 5. This may not be super efficient until a LIMIT clause is supported.

PartiQL SELECT - https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ql-reference.select.html

Even when using PartiQL, you are directly interacting with DynamoDB via an AWS SDK (if not using the AWS Console). Using a Scan API on the SDK does support a LIMIT parameter which can be efficient as it would only return 5 items. Note that the behavior in terms of what items are returned are going to be same for the above mentioned PartiQL query or the Scan API.

If you use a WHERE clause in your PartiQL query with the table's partition key as a filter, then you'd get the results for that partition key sorted by the table's Sort key value (if the table has a Sort key). The non-PartiQL equivalent of this operation would be a Query API.

Query API - https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html

Scan API - https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Scan.html

Any of the ways listed above would return a maximum of 1MB worth of items. For Query/Scan APIs, there is a LIMIT parameter supported which can help be efficient in only returning the number of items you need. Hope this helps!

profile pictureAWS
已回答 1 年前

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南