Expression attribute names (aliases) in DynamoDB
An expression attribute name is an alias (or placeholder) that you
		use in an Amazon DynamoDB expression as an alternative to an actual attribute name. An expression
		attribute name must begin with a pound sign (#) and be followed by one or more
		alphanumeric characters. The underscore (_) character is also allowed.
This section describes several situations in which you must use expression attribute names.
Note
The examples in this section use the AWS Command Line Interface (AWS CLI).
Topics
Reserved words
Sometimes you might need to write an expression containing an attribute name that conflicts with a DynamoDB reserved word. (For a complete list of reserved words, see Reserved words in DynamoDB.)
For example, the following AWS CLI example would fail because COMMENT is a
			reserved word.
aws dynamodb get-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"123"}}' \ --projection-expression "Comment"
To work around this, you can replace Comment with an expression attribute
			name such as #c. The # (pound sign) is required and indicates
			that this is a placeholder for an attribute name. The AWS CLI example would now look like
			the following.
aws dynamodb get-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"123"}}' \ --projection-expression "#c" \ --expression-attribute-names '{"#c":"Comment"}'
Note
If an attribute name begins with a number, contains a space or contains a reserved word, you must use an expression attribute name to replace that attribute's name in the expression.
Attribute names containing special characters
In an expression, a dot (".") is interpreted as a separator character in a document
			path. However, DynamoDB also allows you to use a dot character and other special
			characters, such as a hyphen ("-") as part of an attribute name. This can be ambiguous
			in some cases. To illustrate, suppose that you wanted to retrieve the
				Safety.Warning attribute from a ProductCatalog item (see
				Referring to item attributes when using
				expressions in DynamoDB).
Suppose that you wanted to access Safety.Warning using a projection
			expression.
aws dynamodb get-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"123"}}' \ --projection-expression "Safety.Warning"
DynamoDB would return an empty result, rather than the expected string ("Always
				wear a helmet"). This is because DynamoDB interprets a dot in an expression as a
			document path separator. In this case, you must define an expression attribute name
			(such as #sw) as a substitute for Safety.Warning. You could
			then use the following projection expression.
aws dynamodb get-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"123"}}' \ --projection-expression "#sw" \ --expression-attribute-names '{"#sw":"Safety.Warning"}'
DynamoDB would then return the correct result.
Note
If an attribute name contains a dot (".") or a hyphen ("-"), you must use an expression attribute name to replace that attribute's name in the expression.
Nested attributes
Suppose that you wanted to access the nested attribute
				ProductReviews.OneStar. In an expression attribute name, DynamoDB treats
			the dot (".") as a character within an attribute's name. To reference the nested
			attribute, define an expression attribute name for each element in the document
			path:
- 
				#pr — ProductReviews
- 
				#1star — OneStar
You could then use #pr.#1star for the projection expression.
aws dynamodb get-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"123"}}' \ --projection-expression "#pr.#1star" \ --expression-attribute-names '{"#pr":"ProductReviews", "#1star":"OneStar"}'
DynamoDB would then return the correct result.
Repeatedly referencing attribute names
Expression attribute names are helpful when you need to refer to the same attribute
			name repeatedly. For example, consider the following expression for retrieving some of
			the reviews from a ProductCatalog item.
aws dynamodb get-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"123"}}' \ --projection-expression "ProductReviews.FiveStar, ProductReviews.ThreeStar, ProductReviews.OneStar"
To make this more concise, you can replace ProductReviews with an
			expression attribute name such as #pr. The revised expression would now
			look like the following.
- 
				#pr.FiveStar, #pr.ThreeStar, #pr.OneStar
aws dynamodb get-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"123"}}' \ --projection-expression "#pr.FiveStar, #pr.ThreeStar, #pr.OneStar" \ --expression-attribute-names '{"#pr":"ProductReviews"}'
If you define an expression attribute name, you must use it consistently throughout
			the entire expression. Also, you cannot omit the # symbol.