

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Ausdrucksattributnamen (Aliasse) in DynamoDB
<a name="Expressions.ExpressionAttributeNames"></a>

Ein *Ausdrucksattributname* ist ein Alias (oder Platzhalter), den Sie in einem Amazon-DynamoDB-Ausdruck als Alternative zu einem tatsächlichen Attributnamen verwenden. Ein Ausdrucksattributname muss mit einem Rautezeichen (`#`) beginnen, gefolgt von einem oder mehreren alphanumerischen Zeichen. Der Unterstrich (`_`) ist ebenfalls zulässig.

Dieser Abschnitt beschreibt einige Situationen, in denen Sie Ausdrucksattributnamen verwenden müssen.

**Anmerkung**  
Die Beispiele in diesem Abschnitt verwenden das AWS Command Line Interface (AWS CLI). 

**Topics**
+ [Reservierte Wörter](#Expressions.ExpressionAttributeNames.ReservedWords)
+ [Attributnamen mit Sonderzeichen](#Expressions.ExpressionAttributeNames.AttributeNamesContainingSpecialCharacters)
+ [Verschachtelte Attribute](#Expressions.ExpressionAttributeNames.NestedAttributes)
+ [Wiederholtes Verweisen auf Attributnamen](#Expressions.ExpressionAttributeNames.RepeatingAttributeNames)

## Reservierte Wörter
<a name="Expressions.ExpressionAttributeNames.ReservedWords"></a>

In einigen Fällen kann es erforderlich sein, einen Ausdruck mit einem Attributnamen zu erstellen, der mit einem für DynamoDB reservierten Wort in Konflikt steht. (Eine vollständige Liste der reservierten Wörter finden Sie unter [Reservierte Wörter in DynamoDB](ReservedWords.md).)

Das folgende Beispiel würde AWS CLI beispielsweise fehlschlagen, da es sich um ein reserviertes Wort `COMMENT` handelt.

```
aws dynamodb get-item \
    --table-name ProductCatalog \
    --key '{"Id":{"N":"123"}}' \
    --projection-expression "Comment"
```

Um dieses Problem zu vermeiden, können Sie `Comment` durch einen Ausdrucksattributnamen wie `#c` ersetzen. Das Rautezeichen `#` ist erforderlich und gibt an, dass es sich um einen Platzhalter für einen Attributnamen handelt. Das AWS CLI Beispiel würde jetzt wie folgt aussehen.

```
aws dynamodb get-item \
     --table-name ProductCatalog \
     --key '{"Id":{"N":"123"}}' \
     --projection-expression "#c" \
     --expression-attribute-names '{"#c":"Comment"}'
```

**Anmerkung**  
Wenn ein Attributname mit einer Zahl beginnt, ein Leerzeichen oder ein reserviertes Wort enthält, *müssen* Sie einen Ausdrucksattributnamen verwenden, um den Namen des Attributs im Ausdruck zu ersetzen.

## Attributnamen mit Sonderzeichen
<a name="Expressions.ExpressionAttributeNames.AttributeNamesContainingSpecialCharacters"></a>

In einem Ausdruck wird ein Punkt (".") als Trennzeichen in einem Dokumentpfad interpretiert. DynamoDB bietet allerdings die Möglichkeit, ein Punktzeichen und andere Sonderzeichen wie einen Bindestrich („-“) in einem Attributnamen zu verwenden. Dies kann in einigen Fällen zweideutig sein. Angenommen, Sie möchten das Attribut `Safety.Warning` aus einem `ProductCatalog`-Element abrufen (siehe [Verweisen auf Elementattribute beim Verwenden von Ausdrücken in DynamoDB](Expressions.Attributes.md)).

In diesem Beispiel gehen wir davon aus, dass Sie auf `Safety.Warning` mit einem Projektionsausdruck zugreifen möchten.

```
aws dynamodb get-item \
    --table-name ProductCatalog \
    --key '{"Id":{"N":"123"}}' \
    --projection-expression "Safety.Warning"
```

DynamoDB gibt statt der erwarteten Zeichenfolge („`Always wear a helmet`“) ein leeres Ergebnis zurück. Der Grund dafür ist, dass DynamoDB einen Punkt in einem Ausdruck als Dokumentpfadtrennzeichen interpretiert. In diesem Fall müssen Sie einen Ausdrucksattributnamen (z. B. `#sw`) als Ersatz für `Safety.Warning` definieren. Anschließend können Sie den folgenden Projektionsausdruck verwenden.

```
aws dynamodb get-item \
    --table-name ProductCatalog \
    --key '{"Id":{"N":"123"}}' \
    --projection-expression "#sw" \
    --expression-attribute-names '{"#sw":"Safety.Warning"}'
```

DynamoDB gibt dann das richtige Ergebnis zurück.

**Anmerkung**  
Wenn ein Attributname einen Punkt („.“) oder einen Bindestrich („-“) enthält, *müssen* Sie einen Ausdrucksattributnamen verwenden, um den Namen dieses Attributs im Ausdruck zu ersetzen.

## Verschachtelte Attribute
<a name="Expressions.ExpressionAttributeNames.NestedAttributes"></a>

Angenommen, Sie möchten auf das verschachtelte Attribut `ProductReviews.OneStar` zugreifen. In einem Ausdrucksattributnamen behandelt DynamoDB den Punkt („.“) als Zeichen in einem Attributnamen. Um auf das verschachtelte Attribut zu verweisen, definieren Sie einen Ausdrucksattributnamen für jedes Element im Dokumentpfad:
+ `#pr — ProductReviews`
+ `#1star — OneStar`

Anschließend können Sie `#pr.#1star` für den folgenden Projektionsausdruck verwenden.

```
aws dynamodb get-item \
    --table-name ProductCatalog \
    --key '{"Id":{"N":"123"}}' \
    --projection-expression "#pr.#1star"  \
    --expression-attribute-names '{"#pr":"ProductReviews", "#1star":"OneStar"}'
```

DynamoDB gibt dann das richtige Ergebnis zurück.

## Wiederholtes Verweisen auf Attributnamen
<a name="Expressions.ExpressionAttributeNames.RepeatingAttributeNames"></a>

Ausdrucksattributnamen sind hilfreich, wenn Sie sich wiederholt auf den gleichen Attributnamen beziehen müssen. Betrachten Sie z. B. den folgenden Ausdruck zum Abrufen einiger Rezensionen aus einem `ProductCatalog`-Element.

```
aws dynamodb get-item \
    --table-name ProductCatalog \
    --key '{"Id":{"N":"123"}}' \
    --projection-expression "ProductReviews.FiveStar, ProductReviews.ThreeStar, ProductReviews.OneStar"
```

Um den Ausdruck prägnanter zu gestalten, können Sie `ProductReviews` durch einen Ausdrucksattributnamen wie `#pr` ersetzen. Der geänderte Ausdruck sieht wie folgt aus:
+  `#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"}'
```

Wenn Sie einen Ausdrucksattributnamen definieren, müssen Sie ihn im gesamten Ausdruck einheitlich verwenden. Sie dürfen außerdem nicht das Symbol `#` weglassen. 