# Join

Il prefisso join unisce la tabella caricata a una tabella denominata esistente oppure all’ultima tabella di dati creata in precedenza.

L'effetto dell'unione dei dati consiste nell'estendere la tabella dati di destinazione con un set aggiuntivo di campi o attributi, ovvero quelli non ancora presenti nella tabella dati di destinazione. Eventuali nomi di campo comuni tra il set di dati di origine e la tabella dati di destinazione vengono utilizzati per determinare come associare i nuovi record in arrivo. Questa operazione è comunemente definita "natural join". Un'operazione di join Qlik può portare la tabella dati di destinazione risultante ad avere più o meno record rispetto a quelli iniziali, a seconda dell'univocità dell'associazione di join e del tipo di join impiegato.

[Join script prefix](https://play.vidyard.com/7xrdzssVH99Jsr8gmPunCC)

## Tipi di join

Esistono quattro tipi di join:

* Left join

* Inner join

* Outer join

* Right join

Esempi di set di risultati da diversi tipi di operazioni di join

Esempi di set di risultati da diversi tipi di operazioni di join

Esempi di set di risultati da diversi tipi di operazioni di join ![Esempi di set di risultati da diversi tipi di operazioni di join, con una rappresentazione prima e dopo delle tabelle dati a seguito di ciascuna operazione. Gli input consistono in una tabella dati di destinazione e un set di dati in arrivo. La tabella dati di destinazione ha due colonne con due voci di riga per i campi 'Trade ID' e 'Asset Class'. I dati in arrivo hanno due colonne con due voci di riga per i campi 'Trade ID' e 'Exchange'. Il Left Join mantiene la tabella dati di destinazione iniziale e aggiunge una terza colonna con tutto vuoto tranne l'aggiunta di una delle voci di riga 'Exchange'. L'Inner Join crea una tabella con una riga Trade ID e una terza colonna, ancora una volta, per la voce di riga 'Exchange'. L'Outer Join mantiene la tabella dati di destinazione e aggiunge una terza colonna, insieme a una terza riga a cui viene aggiunta la seconda riga del set di dati in arrivo. Il Right Join rimuove la seconda voce di riga della tabella dati di destinazione e la sostituisce con le informazioni della seconda voce di riga del set di dati in arrivo, aggiungendo una terza colonna nel processo.](https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-join-examples-operations.png)

### Left join

I left join sono il tipo di join più comune. Ad esempio, se si dispone di un set di dati di transazioni e si desidera combinarlo con un set di dati di riferimento, in genere si utilizza un `Left Join`. Si caricherebbe prima la tabella delle transazioni, quindi si caricherebbe il set di dati di riferimento unendolo tramite un prefisso `Left Join` alla tabella delle transazioni già caricata. Un `Left Join` manterrebbe tutte le transazioni così come sono e aggiungerebbe i campi dei dati di riferimento supplementari laddove viene trovata una corrispondenza.

Left join

Left join

Left join ![Diagramma che delinea, a un livello elevato, le combinazioni di dati che si verificano durante un left join.](https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Resources/Images/join-types-scripting_left.png)

### Inner join

Quando si dispone di due set di dati in cui interessano solo i risultati in cui è presente un'associazione corrispondente, considerare l'utilizzo di un `Inner Join`. Ciò eliminerà tutti i record sia dai dati di origine caricati che dalla tabella dati di destinazione se non viene trovata alcuna corrispondenza. Di conseguenza, ciò potrebbe lasciare la tabella dati di destinazione con meno record rispetto a prima dell'operazione di join.

Inner join

Inner join

Inner join ![Diagramma che delinea, a un livello elevato, le combinazioni di dati che si verificano durante un inner join.](https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Resources/Images/join-types-scripting_inner.png)

### Outer join (predefinito)

Quando è necessario mantenere sia i record di destinazione che tutti i record in arrivo, utilizzare un `Outer Join`. Laddove non viene trovata alcuna corrispondenza, ogni set di record viene comunque mantenuto mentre i campi dal lato opposto del join rimarranno non popolati (null).

Se la parola chiave del tipo viene omessa, il tipo di join predefinito è un outer join.

Outer join

Outer join

Outer join ![Diagramma che delinea, a un livello elevato, le combinazioni di dati che si verificano durante un outer join.](https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Resources/Images/join-types-scripting_outer.png)

### Right join

Questo tipo di join mantiene tutti i record che stanno per essere caricati, riducendo al contempo i record nella tabella presa di mira dal join solo a quei record in cui c'è una corrispondenza di associazione nei record in arrivo. Questo è un tipo di join di nicchia che a volte viene utilizzato come mezzo per ridurre una tabella di record pre-caricata a un sottoinsieme richiesto.

Right join

Right join

Right join ![Diagramma che delinea, a un livello elevato, le combinazioni di dati che si verificano durante un right join.](https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Resources/Images/join-types-scripting_right.png)

### Cross join

Nota informaticaSe non ci sono nomi di campo in comune tra l'origine e la destinazione di un'operazione di join, il join risulterà in un prodotto cartesiano di tutte le righe: questo è chiamato "cross join".

Esempio di set di risultati da un'operazione di "cross join"

Esempio di set di risultati da un'operazione di "cross join"

Esempio di set di risultati da un'operazione di "cross join" ![Confronto prima e dopo dei dati di input con l'output dopo un'operazione di cross join (che può comportare un'operazione di join di qualsiasi tipo). Gli input sono una tabella dati di destinazione e un set di dati in arrivo. La tabella dati di destinazione consiste in tre colonne, con due voci di riga. Le colonne sono 'Trade ID', 'Base Currency' e 'Amount'. Il set di dati in arrivo ha due colonne ('Trade Currency' e 'Rate') e due voci di riga. La tabella risultante ha cinque colonne, che sono 'Trade ID', 'Base Currency', 'Amount', 'Target Currency' e 'Rate'. Ci sono quattro voci di riga, che combinano tutti i dati. Ogni voce 'Trade ID' ha due righe con dati diversi negli altri campi.](https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-examples-join-no-common-fields.png)

## Sintassi e argomenti

[inner | outer | left | right ]Join [ (tablename ) ]( loadstatement | selectstatement )

Argomenti

| Argomento | Descrizione |
| --- | --- |
| tablename | La tabella denominata da confrontare con la tabella caricata. |
| loadstatementoppure selectstatement | L'istruzione LOAD o SELECT per la tabella caricata. |

## Argomenti correlati

Questi argomenti possono aiutare a lavorare con questa funzione:

Argomenti correlati

| Argomento | Descrizione |
| --- | --- |
| [Combinazione di tabelle con Join e Keep](https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/combine-tables-join-keep.htm) | Questo argomento fornisce un'ulteriore spiegazione dei concetti di "unione" (joining) e "mantenimento" (keeping) dei set di dati. |
| [Keep](https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Keep.htm) | Il prefisso di caricamento `Keep` è simile al prefisso `Join`, ma non combina i set di dati di origine e di destinazione. Invece, riduce ogni set di dati in base al tipo di operazione adottata (inner, outer, left o right). |

## Esempi di script di caricamento - Left join

Un left join mantiene tutti i record dalla tabella principale (di destinazione) e aggiunge i dati corrispondenti da una seconda tabella (di origine). Se non c'è corrispondenza nell'origine, il record della tabella principale appare comunque, ma con campi vuoti dalla tabella di origine.

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### Left join: esempio di base

Aggiungere lo script di esempio alla propria applicazione ed eseguirlo. Per visualizzare il risultato, aggiungere i campi elencati nella colonna dei risultati a un foglio nella propria applicazione.

Script di caricamento

```
Table1:
Load * inline [
Column1, Column2
A, B
1, aa
2, cc
3, ee ];

Table2:
Left Join Load * inline [
Column1, Column3
A, C
1, xx
4, yy ]; 
```

Per ulteriori informazioni sull'utilizzo dei caricamenti inline, vedere [Utilizzo dei caricamenti inline per caricare i dati](https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm).

Risultati

Tabella risultante

| Column1 | Column2 | Column3 |
| --- | --- | --- |
| A | B | C |
| 1 | aa | xx |
| 2 | cc | - |
| 3 | ee | - |

Questo esempio dimostra l'output di Left Join in cui vengono uniti solo i valori presenti nella prima tabella (a sinistra).

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### Esempio di Left join: arricchire gli ordini con le informazioni sul cliente

Panoramica

Supponiamo di avere un elenco di ordini, ma non tutti gli ordini hanno un record cliente corrispondente.

Script di caricamento

```
Orders:
Load * inline [
OrderID, CustomerID, Amount
1, 101, 200
2, 102, 150
3, 104, 400
];

Customers:
Left Join (Orders)
Load * inline [
CustomerID, Name
101, Alice
102, Bob
103, Carol
];
```

Risultati

Se si espande la finestra di anteprima nel visualizzatore del modello dati, si vedrà una parte del set di risultati completo organizzato in una tabella:

Anteprima della tabella nel visualizzatore del modello dati

| OrderID | CustomerID | Amount | Name |
| --- | --- | --- | --- |
| 1 | 101 | 200 | Alice |
| 2 | 102 | 150 | Bob |
| 3 | 104 | 400 | - |

OrderID 1 e 2 hanno clienti corrispondenti. OrderID 3 non ha un cliente corrispondente, quindi Name è vuoto.

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### Esempio di Left join: arricchire una tabella dati di destinazione con un set di dati di riferimento

Panoramica

Aprire l'Editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova sezione.

Lo script di caricamento contiene:

* Un set di dati che rappresenta i record di modifica, che viene caricato in una tabella denominata `Changes`. Include un campo chiave Status ID.

* Un secondo set di dati che rappresenta gli stati di modifica, che viene caricato e combinato con i record di modifica originali unendolo con un prefisso di caricamento `Join` left.

Questo left join assicura che i record di modifica rimangano intatti aggiungendo attributi di stato laddove viene trovata una corrispondenza nei record di stato in arrivo basata su un comune Status ID.

Script di caricamento

```
Changes:
Load * inline [ 
Change ID	Status ID	Scheduled Start Date	Scheduled End Date	Business Impact 
10030	4	19/01/2022	23/02/2022	None
10015	3	04/01/2022	15/02/2022	Low
10103	1	02/04/2022	29/05/2022	Medium
10185	2	23/06/2022	08/09/2022	None
10323	1	08/11/2022	26/11/2022	High
10326	2	11/11/2022	05/12/2022	None
10138	2	07/05/2022	03/08/2022	None
10031	3	20/01/2022	25/03/2022	Low
10040	1	29/01/2022	22/04/2022	None
10134	1	03/05/2022	08/07/2022	Low
10334	2	19/11/2022	06/02/2023	Low
10220	2	28/07/2022	06/09/2022	None
10264	1	10/09/2022	17/10/2022	Medium
10116	1	15/04/2022	24/04/2022	None
10187	2	25/06/2022	24/08/2022	Low
] (delimiter is '\t');

Status:
Left Join (Changes)
Load * inline [
Status ID	Status	Sub Status
1	Open	Not Started
2	Open	Started
3	Closed	Completed
4	Closed	Cancelled
5	Closed	Obsolete			
] (delimiter is '\t');
```

Risultati

Aprire il Data model viewer e notare la forma del modello dati. È presente solo una tabella denormalizzata. È una combinazione di tutti i record di modifica originali, con gli attributi di stato corrispondenti uniti a ciascun record di modifica.

Modello dati interno risultante

| Changes |
| --- |
| Change ID |
| Status ID |
| Scheduled Start Date |
| Scheduled End Date |
| Business Impact |
| Status |
| Sub Status |

Se si espande la finestra di anteprima nel visualizzatore del modello dati, si vedrà una parte di questo set di risultati completo organizzato in una tabella:

Anteprima della tabella Changes nel visualizzatore del modello dati

| Change ID | Status ID | Scheduled Start Date | Scheduled End Date | Business Impact | Status | Sub Status |
| --- | --- | --- | --- | --- | --- | --- |
| 10030 | 4 | 19/01/2022 | 23/02/2022 | None | Closed | Cancelled |
| 10031 | 3 | 20/01/2022 | 25/03/2022 | Low | Closed | Completed |
| 10015 | 3 | 04/01/2022 | 15/02/2022 | Low | Closed | Completed |
| 10103 | 1 | 02/04/2022 | 29/05/2022 | Medium | Open | Not Started |
| 10116 | 1 | 15/04/2022 | 24/04/2022 | None | Open | Not Started |
| 10134 | 1 | 03/05/2022 | 08/07/2022 | Low | Open | Not Started |
| 10264 | 1 | 10/09/2022 | 17/10/2022 | Medium | Open | Not Started |
| 10040 | 1 | 29/01/2022 | 22/04/2022 | None | Open | Not Started |
| 10323 | 1 | 08/11/2022 | 26/11/2022 | High | Open | Not Started |
| 10187 | 2 | 25/06/2022 | 24/08/2022 | Low | Open | Started |
| 10185 | 2 | 23/06/2022 | 08/09/2022 | None | Open | Started |
| 10220 | 2 | 28/07/2022 | 06/09/2022 | None | Open | Started |
| 10326 | 2 | 11/11/2022 | 05/12/2022 | None | Open | Started |
| 10138 | 2 | 07/05/2022 | 03/08/2022 | None | Open | Started |
| 10334 | 2 | 19/11/2022 | 06/02/2023 | Low | Open | Started |

Poiché la quinta riga nella tabella Status (Status ID: '5', Status: 'Closed', Sub Status: 'Obsolete') non corrisponde a nessuno dei record nella tabella Changes, le informazioni in questa riga non appaiono nel set di risultati sopra.

Tornare all'Editor caricamento dati. Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere questo campo come dimensione: `Status`.

Aggiungere questa misura:

`=Count([Change ID])`

Ora è possibile ispezionare il numero di modifiche per stato.

Tabella dei risultati

| Status | =Count([Change ID]) |
| --- | --- |
| Open | 12 |
| Closed | 3 |

## Esempi di script di caricamento - Inner join

Un inner join mantiene solo i record che esistono in entrambe le tabelle (basato su valori di campo corrispondenti).

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### Inner join: esempio di base

Script di caricamento

Aggiungere lo script di esempio alla propria applicazione ed eseguirlo. Per visualizzare il risultato, aggiungere i campi elencati nella colonna dei risultati a un foglio nella propria applicazione.

```
Table1:
Load * inline [
Column1, Column2
A, B
1, aa
2, cc
3, ee ];

Table2:
Inner Join Load * inline [
Column1, Column3
A, C
1, xx
4, yy ];
```

Per ulteriori informazioni sull'utilizzo dei caricamenti inline, vedere [Utilizzo dei caricamenti inline per caricare i dati](https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm).

Risultati

Tabella risultante

| Column1 | Column2 | Column3 |
| --- | --- | --- |
| A | B | C |
| 1 | aa | xx |

Questo esempio dimostra l'output di Inner Join in cui vengono uniti solo i valori presenti sia nella prima tabella (a sinistra) che nella seconda tabella (a destra).

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### Esempio di Inner join: ridurre gli ordini solo a quelli spediti

Panoramica

Si dispone di ordini e di un elenco di ordini spediti. Si desiderano solo gli ordini che sono stati spediti.

Script di caricamento

```
Orders:
Load * inline [
OrderID, Amount
1, 200
2, 150
3, 400
];

Shipped:
Inner Join (Orders)
Load * inline [
OrderID, ShipDate
2, 2022-05-01
3, 2022-05-02
4, 2022-05-03
];
```

Risultati

Se si espande la finestra di anteprima nel visualizzatore del modello dati, si vedrà una parte del set di risultati completo organizzato in una tabella:

Anteprima della tabella nel visualizzatore del modello dati

| OrderID | Amount | ShipDate |
| --- | --- | --- |
| 2 | 150 | 2022-05-01 |
| 3 | 400 | 2022-05-02 |

Appaiono solo OrderID 2 e 3, perché esistono in entrambe le tabelle.

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### Esempio di Inner join: combinare solo i record corrispondenti

Panoramica

Aprire l'Editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova sezione.

Lo script di caricamento contiene:

* Un set di dati che rappresenta i record di modifica, che viene caricato in una tabella denominata Changes.

* Un secondo set di dati che rappresenta i record di modifica provenienti dal sistema di origine JIRA. Questo viene caricato e combinato con i record originali unendolo con un prefisso di caricamento Inner Join.

Questo Inner Join assicura che vengano mantenuti solo i cinque record di modifica che si trovano in entrambi i set di dati.

Script di caricamento

```
Changes:
Load * inline [
Change ID	Status ID	Scheduled Start Date	Scheduled End Date	Business Impact
10030	4	19/01/2022	23/02/2022	None
10015	3	04/01/2022	15/02/2022	Low
10103	1	02/04/2022	29/05/2022	Medium
10185	2	23/06/2022	08/09/2022	None
10323	1	08/11/2022	26/11/2022	High
10326	2	11/11/2022	05/12/2022	None
10138	2	07/05/2022	03/08/2022	None
10031	3	20/01/2022	25/03/2022	Low
10040	1	29/01/2022	22/04/2022	None
10134	1	03/05/2022	08/07/2022	Low
10334	2	19/11/2022	06/02/2023	Low
10220	2	28/07/2022	06/09/2022	None
10264	1	10/09/2022	17/10/2022	Medium
10116	1	15/04/2022	24/04/2022	None
10187	2	25/06/2022	24/08/2022	Low
] (delimiter is '\t');

JIRA_changes:
Inner Join (Changes)
Load
  [Ticket ID] AS [Change ID],
  [Source System]
inline
[
Ticket ID	Source System
10000	JIRA					
10030	JIRA
10323	JIRA
10134	JIRA
10334	JIRA
10220	JIRA
20000	TFS
] (delimiter is '\t');
```

Risultati

Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere tali campi come dimensioni:

* Source System

* Change ID

* Business Impact

Ora è possibile ispezionare i cinque record risultanti. La tabella risultante da un Inner Join includerà solo i record con informazioni corrispondenti in entrambi i set di dati.

Tabella dei risultati

| Source System | Change ID | Business Impact |
| --- | --- | --- |
| JIRA | 10030 | None |
| JIRA | 10134 | Low |
| JIRA | 10220 | None |
| JIRA | 10323 | High |
| JIRA | 10334 | Low |

## Esempi di script di caricamento - Outer join

Un outer join mantiene tutti i record da entrambe le tabelle. Laddove non c'è corrispondenza, i campi vengono lasciati vuoti.

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### Outer join: Esempio di base

Script di caricamento

Aggiungere lo script di esempio alla propria applicazione ed eseguirlo. Per visualizzare il risultato, aggiungere i campi elencati nella colonna dei risultati a un foglio nella propria applicazione.

```
Table1:
Load * inline [
Column1, Column2
A, B
1, aa
2, cc
3, ee ];

Table2:
Outer Join Load * inline [
Column1, Column3
A, C
1, xx
4, yy ]; 
```

Per ulteriori informazioni sull'utilizzo dei caricamenti inline, vedere [Utilizzo dei caricamenti inline per caricare i dati](https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm).

Risultati

Tabella risultante

| Column1 | Column2 | Column3 |
| --- | --- | --- |
| A | B | C |
| 1 | aa | xx |
| 2 | cc | - |
| 3 | ee | - |
| 4 | - | yy |

In questo esempio, le due tabelle, Table1 e Table2, vengono unite in un'unica tabella denominata Table1. In casi come questo, il prefisso outer viene spesso utilizzato per unire diverse tabelle in un'unica tabella per eseguire aggregazioni sui valori di una singola tabella.

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### Outer join: Creare un elenco completo di tutti i clienti e gli ordini

Panoramica

Si desidera un elenco completo di tutti i clienti e gli ordini, anche se alcuni clienti non hanno ordini e alcuni ordini non hanno un record cliente.

Script di caricamento

```
Orders:
Load * inline [
OrderID, CustomerID
1, 101
2, 102
3, 104
];

Customers:
Outer Join (Orders)
Load * inline [
CustomerID, Name
101, Alice
102, Bob
103, Carol
];
```

Risultati

Se si espande la finestra di anteprima nel visualizzatore del modello dati, si vedrà una parte di questo set di risultati completo organizzato in una tabella:

Anteprima della tabella nel visualizzatore del modello dati

| OrderID | CustomerID | Name |
| --- | --- | --- |
| 1 | 101 | Alice |
| 2 | 102 | Bob |
| 3 | 104 | - |
| - | 103 | Carol |

OrderID 3 non ha un cliente corrispondente (Name vuoto).

CustomerID 103 (Carol) non ha un ordine corrispondente (OrderID vuoto).

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### Outer join: Combinare set di record sovrapposti

Panoramica

Aprire l'Editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova sezione.

Lo script di caricamento contiene:

* Un set di dati che rappresenta i record di modifica, che viene caricato in una tabella denominata Changes.

* Un secondo set di dati che rappresenta i record di modifica provenienti dal sistema di origine JIRA, che viene caricato e combinato con i record originali unendolo con un prefisso di caricamento Outer Join.

Questo assicura che tutti i record di modifica sovrapposti da entrambi i set di dati vengano mantenuti.

Script di caricamento

```
// 8 Change records

Changes:
Load * inline [
Change ID	Status ID	Scheduled Start Date	Scheduled End Date	Business Impact
10030	4	19/01/2022	23/02/2022	None
10015	3	04/01/2022	15/02/2022	Low
10138	2	07/05/2022	03/08/2022	None
10031	3	20/01/2022	25/03/2022	Low
10040	1	29/01/2022	22/04/2022	None
10134	1	03/05/2022	08/07/2022	Low
10334	2	19/11/2022	06/02/2023	Low
10220	2	28/07/2022	06/09/2022	None
] (delimiter is '\t');

// 6 Change records

JIRA_changes:
Outer Join (Changes)
Load
  [Ticket ID] AS [Change ID],
  [Source System]
inline
[
Ticket ID	Source System
10030	JIRA
10323	JIRA
10134	JIRA
10334	JIRA
10220	JIRA
10597	JIRA
] (delimiter is '\t');
```

Risultati

Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere tali campi come dimensioni:

* Source System

* Change ID

* Business Impact

Ora è possibile ispezionare i 10 record risultanti.

Tabella dei risultati

| Source System | Change ID | Business Impact |
| --- | --- | --- |
| JIRA | 10030 | None |
| JIRA | 10134 | Low |
| JIRA | 10220 | None |
| JIRA | 10323 | - |
| JIRA | 10334 | Low |
| JIRA | 10597 | - |
| - | 10015 | Low |
| - | 10031 | Low |
| - | 10040 | None |
| - | 10138 | None |

## Esempi di script di caricamento - Right join

Un right join mantiene tutti i record dalla tabella di origine e aggiunge le informazioni corrispondenti dalla tabella di destinazione. Se la tabella di destinazione non ha corrispondenze, i campi da essa provengono vuoti.

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### Right join: esempio di base

Script di caricamento

Aggiungere lo script di esempio alla propria applicazione ed eseguirlo. Per visualizzare il risultato, aggiungere i campi elencati nella colonna dei risultati a un foglio nella propria applicazione.

```
Table1:
Load * inline [
Column1, Column2
A, B
1, aa
2, cc
3, ee ];

Table2:
Right Join Load * inline [
Column1, Column3
A, C
1, xx
4, yy ];
```

Per ulteriori informazioni sull'utilizzo dei caricamenti inline, vedere [Utilizzo dei caricamenti inline per caricare i dati](https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm).

Risultato

Tabella risultante

| Column1 | Column2 | Column3 |
| --- | --- | --- |
| A | B | C |
| 1 | aa | xx |
| 4 | - | yy |

Questo esempio dimostra l'output di Right Join in cui vengono uniti solo i valori presenti nella seconda tabella (a destra).

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### Esempio di Right join: combinare tutti i clienti con gli ordini corrispondenti

Panoramica

La tabella di origine è un elenco di clienti; si desiderano tutti i clienti, più eventuali ordini corrispondenti.

Script di caricamento

```
Orders:
Load * inline [
OrderID, CustomerID
1, 101
2, 102
3, 104
];

Customers:
Right Join (Orders)
Load * inline [
CustomerID, Name
101, Alice
102, Bob
103, Carol
];
```

Risultati

Se si espande la finestra di anteprima nel visualizzatore del modello dati, si vedrà una parte di questo set di risultati completo organizzato in una tabella:

Anteprima della tabella nel visualizzatore del modello dati

| CustomerID | Name | OrderID |
| --- | --- | --- |
| 101 | Alice | 1 |
| 102 | Bob | 2 |
| 103 | Carol | - |

Tutti i clienti appaiono. Carol non ha ordini (OrderID vuoto).

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### Esempio di Right join: ridurre una tabella dati di destinazione tramite un set di dati master secondario

Panoramica

Aprire l'Editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova sezione.

Lo script di caricamento contiene:

* Un set di dati che rappresenta i record di modifica, che viene caricato in una tabella denominata Changes.

* Un secondo set di dati che rappresenta i record di modifica provenienti dal sistema di origine Teamwork. Questo viene caricato e combinato con i record originali unendolo con un prefisso di caricamento Right Join.

Questo assicura che vengano mantenuti solo i record di modifica Teamwork, senza perdere alcun record Teamwork se la tabella di destinazione non ha un Change ID corrispondente.

Script di caricamento

```
Changes:

Load * inline [
Change ID	Status ID	Scheduled Start Date	Scheduled End Date	Business Impact
10030	4	19/01/2022	23/02/2022	None
10015	3	04/01/2022	15/02/2022	Low
10103	1	02/04/2022	29/05/2022	Medium
10185	2	23/06/2022	08/09/2022	None
10323	1	08/11/2022	26/11/2022	High
10326	2	11/11/2022	05/12/2022	None
10138	2	07/05/2022	03/08/2022	None
10031	3	20/01/2022	25/03/2022	Low
10040	1	29/01/2022	22/04/2022	None
10134	1	03/05/2022	08/07/2022	Low
10334	2	19/11/2022	06/02/2023	Low
10220	2	28/07/2022	06/09/2022	None
10264	1	10/09/2022	17/10/2022	Medium
10116	1	15/04/2022	24/04/2022	None
10187	2	25/06/2022	24/08/2022	Low
] (delimiter is '\t');

Teamwork_changes:
Right Join (Changes)
Load
  [Ticket ID] AS [Change ID],
  [Source System]
inline
[
Ticket ID	Source System
10040	Teamwork
10015	Teamwork
10103	Teamwork
10031	Teamwork
50231	Teamwork
] (delimiter is '\t');
```

Risultati

Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere tali campi come dimensioni:

* Source System

* Change ID

* Business Impact

Ora è possibile ispezionare i cinque record risultanti.

Tabella dei risultati

| Source System | Change ID | Business Impact |
| --- | --- | --- |
| Teamwork | 10015 | Low |
| Teamwork | 10031 | Low |
| Teamwork | 10040 | None |
| Teamwork | 10103 | Medium |
| Teamwork | 50231 | - |

## Risoluzione dei problemi - Cross join

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### Esempio di script di caricamento per la risoluzione dei problemi: nessun nome di campo comune

Panoramica

Se si uniscono due tabelle senza nomi di campo corrispondenti, ogni riga della prima tabella verrà combinata con ogni riga della seconda, producendo potenzialmente un numero enorme di record (un prodotto cartesiano) e portando a associazioni di dati impreviste.

Script di caricamento

```
TableA:
Load * inline [
A_ID, ValueA
1, foo
2, bar
];

TableB:
Join (TableA)
Load * inline [
B_ID, ValueB
10, baz
11, qux
];
```

Risultati

Se si espande la finestra di anteprima nel visualizzatore del modello dati, si vedrà una parte di questo set di risultati completo organizzato in una tabella:

Anteprima della tabella nel visualizzatore del modello dati

| A\_ID | ValueA | B\_ID | ValueB |
| --- | --- | --- | --- |
| 1 | foo | 10 | baz |
| 1 | foo | 11 | qux |
| 2 | bar | 10 | baz |
| 2 | bar | 11 | qux |

Ogni A\_ID è accoppiato con ogni B\_ID (totale 4 righe).

Nota di suggerimentoVerificare sempre che i nomi dei campi corrispondano come previsto prima di eseguire un join.

[Load](https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Load.htm)

[Select](https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Select.htm)

[Inner](https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Inner.htm)

[Outer](https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Outer.htm)

[Left](https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Left.htm)

[Right](https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Right.htm)

[Keep](https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Keep.htm)

[Combinazione di tabelle con Join e Keep](https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/combine-tables-join-keep.htm)