

# DynamoDB에서 프로젝션 표현식 사용
<a name="Expressions.ProjectionExpressions"></a>

테이블에서 데이터를 읽으려면 `GetItem`, `Query`, `Scan` 등과 같은 작업을 사용합니다. Amazon DynamoDB는 기본적으로 모든 항목 속성을 반환합니다. 모든 속성 대신 일부 속성만 가져오려면 프로젝션 표현식을 사용합니다.

*프로젝션 표현식*은 원하는 속성을 식별하는 문자열입니다. 단일 속성을 가져오려면 속성의 이름을 지정합니다. 여러 속성의 경우 이름을 쉼표로 구분해야 합니다.

`ProductCatalog`의 [DynamoDB에서 표현식 사용 시 항목 속성 참조](Expressions.Attributes.md) 항목을 기반으로 한 프로젝션 표현식의 몇 가지 예는 다음과 같습니다.
+ 단일 최상위 속성입니다.

  `Title `
+ 세 가지 최상위 속성입니다. DynamoDB는 전체 `Color` 집합을 검색합니다.

  `Title, Price, Color`
+ 네 가지 최상위 속성입니다. DynamoDB는 `RelatedItems` 및 `ProductReviews`의 전체 내용을 반환합니다.

  `Title, Description, RelatedItems, ProductReviews`

**참고**  
프로젝션 표현식은 프로비저닝된 처리량 소비에 영향을 주지 않습니다. DynamoDB는 애플리케이션에 반환되는 데이터 크기 대신 항목 크기를 기준으로 소비된 용량 단위를 결정합니다.

**예약어 및 특수 문자**

DynamoDB에는 예약어와 특수 문자가 있습니다. DynamoDB에서는 이름에 이러한 예약어와 특수 문자를 사용하도록 허용하지만, 표현식에서 이러한 이름을 사용할 때마다 별칭을 사용해야 하므로 사용하지 않는 것이 좋습니다. 전체 목록은 [DynamoDB의 예약어](ReservedWords.md) 섹션을 참조하세요.

다음과 같은 경우에는 실제 이름 대신 표현식 속성 이름을 사용해야 합니다.
+ 속성 이름은 DynamoDB의 예약어 목록에 있습니다.
+ 속성 이름이 첫 번째 문자가 `a-z` 또는 `A-Z`이고 두 번째 문자(있는 경우)가 `a-Z`, `A-Z` 또는 `0-9`여야 하는 요구 사항을 충족하지 않습니다.
+ 속성 이름에는 **\$1**(해시) 또는 **:**(콜론)이 포함됩니다.

다음은 AWS CLI 작업과 함께 프로젝션 표현식을 사용하는 방법을 보여주는 `GetItem` 예입니다. 이 프로젝션 표현식은 최상위 스칼라 속성(`Description`), 목록의 첫 번째 요소(`RelatedItems[0]`) 및 맵 내에 중첩된 목록(`ProductReviews.FiveStar`)을 가져옵니다.

```
aws dynamodb get-item \
    --table-name ProductCatalog \
    --key '"Id": { "N": "123" } \
    --projection-expression "Description, RelatedItems[0], ProductReviews.FiveStar"
```

이 예제에서는 다음 JSON이 반환됩니다.

```
{
    "Item": {
        "Description": {
            "S": "123 description"
        },
        "ProductReviews": {
            "M": {
                "FiveStar": {
                    "L": [
                        {
                            "S": "Excellent! Can't recommend it highly enough! Buy it!"
                        },
                        {
                            "S": "Do yourself a favor and buy this."
                        }
                    ]
                }
            }
        },
        "RelatedItems": {
            "L": [
                {
                    "N": "341"
                }
            ]
        }
    }
}
```