

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

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

I suggerimenti per le analisi SQL forniscono direttive di ottimizzazione che guidano le strategie di esecuzione delle query AWS Clean Rooms, consentendoti di migliorare le prestazioni delle query e ridurre i costi di elaborazione. I suggerimenti suggeriscono come il motore di analisi Spark dovrebbe generare il suo piano di esecuzione.

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

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

I suggerimenti sono incorporati nelle query SQL utilizzando una sintassi in stile commento e devono essere inseriti direttamente dopo la parola chiave SELECT.

## Tipi di suggerimenti supportati
<a name="supported-hint-types"></a>

AWS Clean Rooms supporta due categorie di suggerimenti: suggerimenti per il join e suggerimenti per il partizionamento.

**Topics**
+ [Join (suggerimenti)](join-hints.md)
+ [Suggerimenti per il partizionamento](partitioning-hints.md)

# Join (suggerimenti)
<a name="join-hints"></a>

I suggerimenti di unione suggeriscono strategie di unione per l'esecuzione delle query. La sintassi, gli argomenti e alcuni esempi provengono da [Apache Spark SQL](https://spark.apache.org/docs/latest/sql-ref-syntax-qry-select-hints.html#join-hints) Reference per ulteriori informazioni

### TRASMISSIONE
<a name="broadcast-hint"></a>

Suggerisce di AWS Clean Rooms utilizzare broadcast join. La pagina di accesso con il suggerimento verrà trasmessa indipendentemente da autoBroadcastJoin Threshold. Se entrambe le parti del join hanno i suggerimenti per la trasmissione, verrà trasmessa quella con le dimensioni inferiori (in base alle statistiche).

*Alias:* BROADCASTJOIN, MAPJOIN

*Parametri: identificatori* di tabella (opzionali)

*Esempi:*

```
-- 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>

Suggerisce l' AWS Clean Rooms uso di shuffle sort merge join.

*Alias: SHUFFLE\$1MERGE*, MERGEJOIN

*Parametri:* identificatori di tabella (opzionali)

*Esempi:*

```
-- 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>

Suggerisce di utilizzare shuffle hash AWS Clean Rooms join. Se entrambe le parti hanno gli hash hint shuffle, l'ottimizzatore di query sceglie il lato più piccolo (in base alle statistiche) come lato di compilazione.

*Parametri*: identificatori di tabella (opzionali)

*Esempi:*

```
-- 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>

Suggerisce di utilizzare il nested loop join. AWS Clean Rooms shuffle-and-replicate

*Parametri:* identificatori di tabella (opzionali)

*Esempi:*

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

### Suggerimenti per la risoluzione dei problemi in Spark SQL
<a name="join-hint-warning-cases"></a>

La tabella seguente mostra scenari comuni in cui i suggerimenti non vengono applicati in SparkSQL. Per ulteriori informazioni, consulta [Considerazioni e limitazioni](sql-commands-hints-spark.md#hints-usage-notes).

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

# Suggerimenti per il partizionamento
<a name="partitioning-hints"></a>

I suggerimenti per il partizionamento controllano la distribuzione dei dati tra i nodi esecutori. Quando vengono specificati più suggerimenti di partizionamento, più nodi vengono inseriti nel piano logico, ma il suggerimento più a sinistra viene selezionato dall'ottimizzatore.

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

Riduce il numero di partizioni al numero di partizioni specificato.

*Parametri:* Valore numerico (obbligatorio), deve essere un numero intero positivo compreso tra 1 e 2147483647

*Esempi:*

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

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

Ripartiziona i dati nel numero specificato di partizioni utilizzando le espressioni di partizionamento specificate. Utilizza la distribuzione round-robin.

*Parametri:*
+ Valore numerico (opzionale): numero di partizioni; deve essere un numero intero positivo compreso tra 1 e 2147483647
+ Identificatori di colonna (facoltativi): colonne in base alle quali partizionare; queste colonne devono esistere nello schema di input.
+ Se vengono specificati entrambi, il valore numerico deve essere al primo posto

*Esempi:*

```
-- 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;
```

### RIPARTIZIONE\$1PER\$1INTERVALLO
<a name="repartition-by-range-hint"></a>

Ripartiziona i dati nel numero specificato di partizioni utilizzando il partizionamento a intervalli sulle colonne specificate.

*Parametri:*
+ Valore numerico (opzionale): numero di partizioni; deve essere un numero intero positivo compreso tra 1 e 2147483647
+ Identificatori di colonna (facoltativi): colonne in base alle quali partizionare; queste colonne devono esistere nello schema di input.
+ Se vengono specificati entrambi, il valore numerico deve essere al primo posto

*Esempi:*

```
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;
```

### RIEQUILIBRARE
<a name="rebalance-hint"></a>

Riequilibra le partizioni di output dei risultati della query in modo che ogni partizione sia di dimensioni ragionevoli (né troppo piccola né troppo grande). Si tratta di un'operazione che richiede il massimo sforzo: se ci sono degli scostamenti, AWS Clean Rooms dividerà le partizioni inclinate per renderle non troppo grandi. Questo suggerimento è utile quando è necessario scrivere il risultato di una query su una tabella per evitare file troppo piccoli o troppo grandi.

*Parametri:*
+ Valore numerico (opzionale): numero di partizioni; deve essere un numero intero positivo compreso tra 1 e 2147483647
+ Identificatori di colonna (facoltativi): le colonne devono apparire nell'elenco di output SELECT
+ Se vengono specificati entrambi, il valore numerico deve essere al primo posto

*Esempi:*

```
-- 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;
```

## Combinazione di più suggerimenti
<a name="combining-multiple-hints"></a>

È possibile specificare più suggerimenti in una singola query separandoli con virgole:

```
-- 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;
```

## Considerazioni e limitazioni
<a name="hints-usage-notes"></a>
+ I suggerimenti sono suggerimenti di ottimizzazione, non comandi. L'ottimizzatore delle query può ignorare i suggerimenti basati su vincoli di risorse o condizioni di esecuzione.
+ I suggerimenti sono incorporati direttamente nelle stringhe di query SQL per entrambi e. CreateAnalysisTemplate StartProtectedQuery APIs
+ I suggerimenti devono essere inseriti direttamente dopo la parola chiave SELECT.
+ I parametri denominati non sono supportati con i suggerimenti e genereranno un'eccezione.
+ I nomi delle colonne nei suggerimenti REPARTITION e REPARTITION\$1BY\$1RANGE devono esistere nello schema di input.
+ I nomi delle colonne nei suggerimenti REBALANCE devono apparire nell'elenco di output SELECT.
+ I parametri numerici devono essere numeri interi positivi compresi tra 1 e 2147483647. *Le notazioni scientifiche come 1e1 non sono supportate*
+ I suggerimenti non sono supportati nelle query SQL sulla privacy differenziale.
+ I suggerimenti per le query SQL non sono supportati nei job. PySpark Per fornire direttive per i piani di esecuzione in un PySpark job, utilizza l'API Data Frame. Per ulteriori informazioni, consulta la [documentazione sull' DataFrame API Apache Spark.](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.hint.html) 