

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.

# Hinweise
<a name="sql-commands-hints-spark"></a>

Hinweise für SQL-Analysen enthalten Optimierungsrichtlinien, die als Leitfaden für Strategien zur Abfrageausführung AWS Clean Rooms dienen. So können Sie die Abfrageleistung verbessern und die Rechenkosten senken. Hinweise geben an, wie die Spark-Analyse-Engine ihren Ausführungsplan generieren sollte.

## Syntax
<a name="hints-syntax"></a>

```
SELECT /*+ hint_name(parameters), hint_name(parameters) */ column_list
FROM table_name;
```

Hinweise werden mithilfe einer Syntax im Kommentarstil in SQL-Abfragen eingebettet und müssen direkt nach dem SELECT-Schlüsselwort platziert werden.

## Unterstützte Hinweistypen
<a name="supported-hint-types"></a>

AWS Clean Rooms unterstützt zwei Kategorien von Hinweisen: Join-Hinweise und Partitionierungshinweise.

**Topics**
+ [Hinweise zusammenführen](join-hints.md)
+ [Hinweise zur Partitionierung](partitioning-hints.md)

# Hinweise zusammenführen
<a name="join-hints"></a>

Verbindungshinweise schlagen Verbindungsstrategien für die Abfrageausführung vor. Die Syntax, die Argumente und einige Beispiele stammen aus der [Apache Spark-SQL-Referenz](https://spark.apache.org/docs/latest/sql-ref-syntax-qry-select-hints.html#join-hints) mit weiteren Informationen

### ÜBERTRAGUNG
<a name="broadcast-hint"></a>

Schlägt vor, Broadcast Join zu AWS Clean Rooms verwenden. Die Join-Seite mit dem Hinweis wird unabhängig von autoBroadcastJoin Threshold übertragen. Wenn beide Seiten des Joins die Broadcast-Hinweise haben, wird die Seite mit der kleineren Größe (basierend auf Statistiken) übertragen.

*Aliase:* BROADCASTJOIN, MAPJOIN

*Parameter:* Tabellenbezeichner (optional)

*Beispiele:*

```
-- Broadcast a specific table
SELECT /*+ BROADCAST(students) */ e.name, s.course
FROM employees e JOIN students s ON e.id = s.id;

-- Broadcast multiple tables
SELECT /*+ BROADCASTJOIN(s, d) */ *
FROM employees e
JOIN students s ON e.id = s.id
JOIN departments d ON e.dept_id = d.id;
```

### MERGE
<a name="merge-hint"></a>

Schlägt vor, Shuffle Sort Merge Join zu AWS Clean Rooms verwenden.

*Aliase:* SHUFFLE\$1MERGE, MERGEJOIN

*Parameter: Tabellenbezeichner (optional)*

*Beispiele:*

```
-- Use merge join for a specific table
SELECT /*+ MERGE(employees) */ *
FROM employees e JOIN students s ON e.id = s.id;

-- Use merge join for multiple tables
SELECT /*+ MERGEJOIN(e, s, d) */ *
FROM employees e
JOIN students s ON e.id = s.id
JOIN departments d ON e.dept_id = d.id;
```

### SHUFFLE\$1HASH
<a name="shuffle-hash-hint"></a>

Schlägt vor, Shuffle Hash Join AWS Clean Rooms zu verwenden. Wenn beide Seiten die Shuffle-Hash-Hinweise haben, wählt der Abfrageoptimierer die kleinere Seite (basierend auf Statistiken) als Build-Seite.

*Parameter:* Tabellenbezeichner (optional)

*Beispiele:*

```
-- Use shuffle hash join
SELECT /*+ SHUFFLE_HASH(students) */ *
FROM employees e JOIN students s ON e.id = s.id;
```

### SHUFFLE\$1REPLICATE\$1NL
<a name="shuffle-replicate-nl-hint"></a>

Schlägt vor, Nested Loop Join zu verwenden. AWS Clean Rooms shuffle-and-replicate

*Parameter:* Tabellenbezeichner (optional)

*Beispiele:*

```
-- Use shuffle-replicate nested loop join
SELECT /*+ SHUFFLE_REPLICATE_NL(students) */ *
FROM employees e JOIN students s ON e.id = s.id;
```

### Hinweise zur Fehlerbehebung in Spark SQL
<a name="join-hint-warning-cases"></a>

Die folgende Tabelle zeigt allgemeine Szenarien, in denen Hinweise in SparkSQL nicht angewendet werden. Weitere Informationen finden Sie unter [Überlegungen und Einschränkungen](sql-commands-hints-spark.md#hints-usage-notes).

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/clean-rooms/latest/sql-reference/join-hints.html)

# Hinweise zur Partitionierung
<a name="partitioning-hints"></a>

Partitionierungshinweise steuern die Datenverteilung zwischen den Executor-Knoten. Wenn mehrere Partitionierungshinweise angegeben sind, werden mehrere Knoten in den logischen Plan eingefügt, aber der Hinweis ganz links wird vom Optimierer ausgewählt.

### COALESCE
<a name="coalesce-hint"></a>

Reduziert die Anzahl der Partitionen auf die angegebene Anzahl von Partitionen.

*Parameter:* Numerischer Wert (erforderlich) — muss eine positive Ganzzahl zwischen 1 und 2147483647 sein

*Beispiele:*

```
-- Reduce to 5 partitions
SELECT /*+ COALESCE(5) */ employee_id, salary
FROM employees;
```

### VERTEILUNG
<a name="repartition-hint"></a>

Partitioniert Daten mithilfe der angegebenen Partitionierungsausdrücke auf die angegebene Anzahl von Partitionen neu. Verwendet die Round-Robin-Verteilung.

*Parameter:*
+ Numerischer Wert (optional) — Anzahl der Partitionen; muss eine positive Ganzzahl zwischen 1 und 2147483647 sein
+ Spaltenbezeichner (optional) — Spalten, nach denen partitioniert werden soll; Diese Spalten müssen im Eingabeschema vorhanden sein.
+ Wenn beide angegeben sind, muss der numerische Wert an erster Stelle stehen

*Beispiele:*

```
-- Repartition to 10 partitions
SELECT /*+ REPARTITION(10) */ *
FROM employees;

-- Repartition by column
SELECT /*+ REPARTITION(department) */ *
FROM employees;

-- Repartition to 8 partitions by department
SELECT /*+ REPARTITION(8, department) */ *
FROM employees;

-- Repartition by multiple columns
SELECT /*+ REPARTITION(8, department, location) */ *
FROM employees;
```

### REPARTITION\$1BY\$1RANGE
<a name="repartition-by-range-hint"></a>

Partitioniert Daten mithilfe der Bereichspartitionierung der angegebenen Spalten auf die angegebene Anzahl von Partitionen neu.

*Parameter:*
+ Numerischer Wert (optional) — Anzahl der Partitionen; muss eine positive Ganzzahl zwischen 1 und 2147483647 sein
+ Spaltenbezeichner (optional) — Spalten, nach denen partitioniert werden soll; Diese Spalten müssen im Eingabeschema vorhanden sein.
+ Wenn beide angegeben sind, muss der numerische Wert an erster Stelle stehen

*Beispiele:*

```
SELECT /*+ REPARTITION_BY_RANGE(10) */ *
FROM employees;

-- Repartition by range on age column
SELECT /*+ REPARTITION_BY_RANGE(age) */ *
FROM employees;

-- Repartition to 5 partitions by range on age
SELECT /*+ REPARTITION_BY_RANGE(5, age) */ *
FROM employees;

-- Repartition by range on multiple columns
SELECT /*+ REPARTITION_BY_RANGE(5, age, salary) */ *
FROM employees;
```

### NEU AUSBALANCIEREN
<a name="rebalance-hint"></a>

Die Ausgabepartitionen der Abfrageergebnisse werden neu verteilt, sodass jede Partition eine angemessene Größe hat (nicht zu klein und nicht zu groß). Dabei handelt es sich um ein Verfahren nach bestem Bemühen: Wenn schiefe Partitionen vorhanden sind, AWS Clean Rooms werden die schiefen Partitionen aufgeteilt, damit sie nicht zu groß werden. Dieser Hinweis ist nützlich, wenn Sie das Ergebnis einer Abfrage in eine Tabelle schreiben müssen, um zu kleine oder zu große Dateien zu vermeiden.

*Parameter:*
+ Numerischer Wert (optional) — Anzahl der Partitionen; muss eine positive Ganzzahl zwischen 1 und 2147483647 sein
+ Spaltenbezeichner (optional) — Spalten müssen in der SELECT-Ausgabeliste erscheinen
+ Wenn beide angegeben sind, muss der numerische Wert an erster Stelle stehen

*Beispiele:*

```
-- Rebalance to 10 partitions
SELECT /*+ REBALANCE(10) */ employee_id, name
FROM employees;

-- Rebalance by specific columns in output
SELECT /*+ REBALANCE(employee_id, name) */ employee_id, name
FROM employees;

-- Rebalance to 8 partitions by specific columns
SELECT /*+ REBALANCE(8, employee_id, name) */ employee_id, name, department
FROM employees;
```

## Kombinieren mehrerer Hinweise
<a name="combining-multiple-hints"></a>

Sie können mehrere Hinweise in einer einzigen Abfrage angeben, indem Sie sie durch Kommas trennen:

```
-- Combine join and partitioning hints
SELECT /*+ BROADCAST(d), REPARTITION(8) */ e.name, d.dept_name
FROM employees e JOIN departments d ON e.dept_id = d.id;

-- Multiple join hints
SELECT /*+ BROADCAST(s), MERGE(d) */ *
FROM employees e
JOIN students s ON e.id = s.id
JOIN departments d ON e.dept_id = d.id;

-- Hints within separate hint blocks within the same query
SELECT /*+ REPARTITION(100) */ /*+ COALESCE(500) */ /*+ REPARTITION_BY_RANGE(3, c) */ * FROM t;
```

## Überlegungen und Einschränkungen
<a name="hints-usage-notes"></a>
+ Hinweise sind Optimierungsvorschläge, keine Befehle. Der Abfrageoptimierer ignoriert möglicherweise Hinweise, die auf Ressourcenbeschränkungen oder Ausführungsbedingungen basieren.
+ Hinweise werden sowohl für als auch CreateAnalysisTemplate direkt in SQL-Abfragezeichenfolgen eingebettet. StartProtectedQuery APIs
+ Hinweise müssen direkt nach dem SELECT-Schlüsselwort stehen.
+ Benannte Parameter werden bei Hinweisen nicht unterstützt und lösen eine Ausnahme aus.
+ Spaltennamen in den Hinweisen REPARTITION und REPARTITION\$1BY\$1RANGE müssen im Eingabeschema vorhanden sein.
+ Die Spaltennamen in den REBALANCE-Hinweisen müssen in der SELECT-Ausgabeliste erscheinen.
+ Numerische Parameter müssen positive Ganzzahlen zwischen 1 und 2147483647 sein. *Wissenschaftliche Schreibweisen wie 1e1 werden nicht unterstützt*
+ Hinweise werden in Differential Privacy SQL-Abfragen nicht unterstützt.
+ Hinweise für SQL-Abfragen werden in PySpark Jobs nicht unterstützt. Verwenden Sie die Datenrahmen-API, um Anweisungen für Ausführungspläne in einem PySpark Job bereitzustellen. Weitere Informationen finden Sie in den [Apache DataFrame Spark-API-Dokumenten](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.hint.html). 