मैं .NET कोर के लिए एडब्ल्यूएस एसडीके का उपयोग करने की कोशिश कर रहा हूँ।

  • वीडियो पर देखे जाने की संख्या गिनने के लिए एक टेबल बनाएं.
  • एक दिन के लिए देखे जाने की संख्या जोड़ें।
  • एक दिन के लिए मौजूदा गणना बढ़ाएँ।
  • वीडियो के लिए क्वेरी की गणना किसी वीडियो के लिए दो तिथियों के बीच की जाती है।

.NET कोर AWS SDK Async विधियों का उपयोग करता है जो AWS में प्रलेखित नहीं हैं। ऐसा होने के लिए उनके जीथब पेज पर एक फीचर अनुरोध है .... लेकिन यह पिछले साल से दिनांकित है। (https://github.com/aws/aws-sdk-net/issues /787)

तालिका बनाएं

यह काम करता है और एडब्ल्यूएस कंसोल पर एक टेबल बनाता है।

var ctRequest = new CreateTableRequest
{
    AttributeDefinitions = new List<AttributeDefinition>()
    {
        new AttributeDefinition
        {
            AttributeName = "ViewUid",
            AttributeType = ScalarAttributeType.S
        },
        new AttributeDefinition
        {
            AttributeName = "ViewDate",
            AttributeType = ScalarAttributeType.S
        }
    },
    KeySchema = new List<KeySchemaElement>
    {
        new KeySchemaElement
        {
            AttributeName = "ViewUid",
            KeyType = KeyType.HASH //Partition key
        },
        new KeySchemaElement
        {
            AttributeName = "ViewDate",
            KeyType = KeyType.RANGE
        }
    },
    ProvisionedThroughput = new ProvisionedThroughput
    {
        ReadCapacityUnits = 5,
        WriteCapacityUnits = 6
    },
    TableName = _settings.AWSDynamoDBViewCountTable
};

var response = _client.CreateTableAsync(ctRequest).Result;

स्वत: वृद्धि के साथ अद्यतन और आइटम एक फ़ील्ड

यह, दुख की बात है, जहां मैंने मुद्दों को मारा। पुराने दस्तावेज़ यहाँ परमाणु काउंटर अनुभाग के अंतर्गत पाए जाते हैं। (https://docs.aws.amazon.com/amazondynamodb/latest /डेवलपरगाइड/LowLevelDotNetItemCRUD.html)

अमान्य कंडीशन एक्सप्रेशन: सिंटैक्स त्रुटि; टोकन: \"सेट\", निकट: \"सेट वीसी\"

var viewData = new Document();
viewData["ViewUid"] = videoUid; //Table entry UID
viewData["VideoId"] = videoId;  // Video ID
viewData["ViewDate"] = date;
viewData["ViewCount"] = 0;
//Document result = await _viewCountTable.PutItemAsync(viewData);

Expression expr = new Expression();
expr.ExpressionStatement = "SET #VC = #VC + :val";
expr.ExpressionAttributeValues[":val"] = 1;
expr.ExpressionAttributeNames["#VC"] = "ViewCount";
var updateConfig = new UpdateItemOperationConfig() { 
    ConditionalExpression = expr,
    ReturnValues = ReturnValues.UpdatedNewAttributes
};

var result = await _viewCountTable.UpdateItemAsync(viewData, updateConfig);
return result;

दिनांक सीमा के लिए क्वेरी

दिनांक सीमा के लिए एक वीडियो के देखे जाने की संख्या प्राप्त करें।

string queryTimeSpanStartString = dateFrom.ToString(AWSSDKUtils.ISO8601DateFormat);
string queryTimeSpanEndString = dateTo.ToString(AWSSDKUtils.ISO8601DateFormat);
var request = new QueryRequest
{
    TableName = _settings.AWSDynamoDBViewCountTable,
    KeyConditions = new Dictionary<string, Condition>()
    {
        {
            "VideoId",  new Condition()
            {
                ComparisonOperator = "EQ",
                AttributeValueList = new List<AttributeValue>()
                {
                    new AttributeValue { S = videoId }
                }
            }
        },
        {
            "ViewDate",
            new Condition
            {
                ComparisonOperator = "BETWEEN",
                AttributeValueList = new List<AttributeValue>()
                {
                    new AttributeValue { S = queryTimeSpanStartString },
                    new AttributeValue { S = queryTimeSpanEndString }
                }
            }
        }
    }
};

var response = await _client.QueryAsync(request);

किसी भी सहायता की सराहना की जाएगी।

0
WebSight 13 सितंबर 2018, 12:31

1 उत्तर

सबसे बढ़िया उत्तर

मैं निम्नलिखित कोड के साथ व्यूकाउंट को अपडेट करने में सक्षम था:

स्ट्रिंग टेबलनाम = "वीडियो";

        var request = new UpdateItemRequest
        {
            Key = new Dictionary<string, AttributeValue>() { { "ViewUid", new AttributeValue { S = "replaceVideoIdhere" } } },
            ExpressionAttributeNames = new Dictionary<string, string>()
            {
                {"#Q", "ViewCount"}
            },
            ExpressionAttributeValues = new Dictionary<string, AttributeValue>()
            {
                {":incr", new AttributeValue {N = "1"}}
            },
            UpdateExpression = "SET #Q = #Q + :incr",
            TableName = tableName
        };

        var response = await _dynamoDbClient.UpdateItemAsync(request);

मैंने स्ट्रिंग के रूप में "ViewUid" नामक विभाजन कुंजी के साथ "वीडियो" नामक एक तालिका बनाई। अगर यह आपके काम का है, तो मुझे बताएं।

2
Raymond Sanchez 14 सितंबर 2018, 00:53