Get items count for a particular partition key using .net core

0

How can I get items count for a particular partition key using .net core preferably using Object Persistence Interface or Document Interfaces?

Since I do not see any docs any where, currently I get the number of items count by retrieve all the item and get its count, but it is very expensive to do the reads.

What is the best practices for such item count request? Thank you.

gefragt vor 4 Jahren453 Aufrufe
1 Antwort
0

I just realized that using low level interface in QueryRequest one can set Select = "COUNT" then when calling QueryAsync() orQuery() will return the count only as a integer only. Please refer to code sample below.

private static QueryRequest getStockRecordCountQueryRequest(string tickerSymbol, string prefix)
        {
            string partitionName = ":v_PartitionKeyName";
            string sortKeyPrefix = ":v_sortKeyPrefix";

            var request = new QueryRequest
            {
                TableName = Constants.TableName,
                ReturnConsumedCapacity = ReturnConsumedCapacity.TOTAL,
                Select = "COUNT",
                KeyConditionExpression = $"{Constants.PartitionKeyName} = {partitionName} and begins_with({Constants.SortKeyName},{sortKeyPrefix})",
                ExpressionAttributeValues = new Dictionary<string, AttributeValue>
                {
                    { $"{partitionName}", new AttributeValue {
                        S = tickerSymbol
                    }},
                    { $"{sortKeyPrefix}", new AttributeValue {
                        S = prefix
                    }}
                },
                // Optional parameter.
                ConsistentRead = false,
                ExclusiveStartKey = null,
            };
            return request;
        }

but I would like to point out that this still will consumed the same read units as retrieving all the item and get its count by yourself. but since it is only returning the count as an integer, it is a lot more efficient then transmitting the entire items list cross the wire.

I think using DynamoDB Streams in a more proper way to get the counts for large project. It is just a lot more complicated to implement.

beantwortet vor 4 Jahren

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen

Relevanter Inhalt