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.

posta 4 anni fa454 visualizzazioni
1 Risposta
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.

con risposta 4 anni fa

Accesso non effettuato. Accedi per postare una risposta.

Una buona risposta soddisfa chiaramente la domanda, fornisce un feedback costruttivo e incoraggia la crescita professionale del richiedente.

Linee guida per rispondere alle domande