dynobase-icon
Dynobase

Error: ValidationException: Invalid KeyConditionExpression: Attribute name is a reserved keyword;

Rafal Wilinski

Answered by Rafal Wilinski

Solution

DynamoDB has a list of reserved keywords that you cannot use in your queries or scans directly. If you need to write an expression that contains one of them, you need to use ExpressionAttributeNames to replace reserved word with a placeholder. For example, this query with reserved keyword:

        params = {
            TableName : ‘MY_TABLE’,
            FilterExpression: "timestamp BETWEEN :startDate AND :endDate",
            ExpressionAttributeValues: { 
                ":startDate": ""+startDate, 
                ":endDate": ""+endDate
            } 
        }
        

Replace with:

 
        params = {
            TableName : ‘MY_TABLE’,
            FilterExpression: "#dynobase_timestamp BETWEEN :startDate AND :endDate",
            ExpressionAttributeValues: { 
                ":startDate": startDate, 
                ":endDate": endDate
            },
            ExpressionAttributeNames: { "#dynobase_timestamp": "timestamp" }
        }
        

Tired of switching accounts and regions? Use Dynobase.

Try 7-day free trial. No credit card needed.

Product Features

Download
/
Changelog
/
Pricing
/
Member Portal
/
Privacy
/
EULA
/
Twitter
© 2024 Dynobase
+
Tired of AWS Console?
Try Dynobase to accelerate your DynamoDB workflow. Start your 7-day free trial today.