Anti join sinistro
Uno dei tipi di join disponibili nella finestra di dialogo Unione in Power Query è un anti join a sinistra, che inserisce solo righe della tabella a sinistra che non dispongono di righe corrispondenti dalla tabella a destra. Altre informazioni: Panoramica delle operazioni di merge
Il diagramma mostra la tabella a sinistra con le colonne Date, CountryID e Units. La colonna CountryID evidenziata contiene valori pari a 1 nelle righe 1 e 2, 3 nella riga 3 e 2 nella riga 4. La tabella destra contiene le colonne ID e Country. La colonna ID evidenziata contiene valori pari a 3 nella riga 1 (che denota Panama) e 4 nella riga 2 (denoting Spain). Una tabella sotto le prime due tabelle contiene le colonne Date, CountryID, Units e Country. La tabella contiene tre righe, con due righe contenenti i dati per CountryID 1 e una riga per CountryID 2. Poiché nessuno dei CountryID rimanenti corrisponde a uno qualsiasi dei paesi o delle aree geografiche nella tabella destra, le righe nella colonna Country nella tabella unita contengono tutti null.
Questo articolo usa dati di esempio per illustrare come eseguire un'operazione di unione con l'anti join a sinistra. Le tabelle di origine di esempio per questo esempio sono:
Vendite: questa tabella include i campi Date, CountryID e Units. CountryID è un valore numerico intero che rappresenta l'identificatore univoco della tabella Paesi .
Paesi: questa tabella è una tabella di riferimento con l'ID dei campi e Country. Il campo ID rappresenta l'identificatore univoco per ogni record.
In questo esempio vengono unite entrambe le tabelle, con la tabella Sales come tabella sinistra e la tabella Countries come quella destra. Il join viene eseguito tra le colonne seguenti.
Campo della tabella Sales | Campo della tabella Paesi |
---|---|
CountryID | ID |
L'obiettivo è creare una tabella come quella seguente, in cui vengono mantenute solo le righe della tabella sinistra che non corrispondono a nessuna della tabella destra.
Screenshot della tabella finale di anti join a sinistra con intestazioni di colonna Date, CountryID, Units e Country e tre righe di dati di cui i valori per la colonna Country sono tutti Null.
Per eseguire un anti join a sinistra:
- Selezionare la query Sales e quindi merge di query.
- Nella finestra di dialogo Unione selezionare Paesi in Tabella destra per l'unione.
- Nella tabella Sales selezionare la colonna CountryID.
- Nella tabella Paesi selezionare la colonna ID.
- Nella sezione Tipo di join selezionare Left anti.In the Join kind section, select Left anti.
- Seleziona OK.
Suggerimento
Esaminare più in dettaglio il messaggio nella parte inferiore della finestra di dialogo che legge "La selezione seleziona 3 di 4 righe dalla prima tabella". Questo messaggio è fondamentale per comprendere il risultato ottenuto da questa operazione.
Nella tabella Sales sono presenti due istanze di CountryID pari a 1 e un'istanza di CountryID pari a 2, ma nessuna di esse è presente nella tabella Paesi. Pertanto, la corrispondenza ha trovato tre di quattro righe nella tabella a sinistra (prima).
Nella tabella Paesi è presente il Paese Panama con ID 3, in modo che il record non venga inserito nella tabella Sales perché i numeri corrispondono. Inoltre, si dispone di un Paese Spagna con ID 4, ma non sono presenti record per CountryID 4 nella tabella Sales. Di conseguenza, nessuna delle due righe della tabella destra (seconda) viene inserita nella tabella Sales .
Nella colonna Paesi appena creati espandere il campo Paese. Non selezionare la casella di controllo Usa nome colonna originale come prefisso .
Dopo aver eseguito questa operazione, è stata creata una tabella simile all'immagine seguente. Il campo Country appena espanso non ha valori perché l'anti join a sinistra non porta alcun valore dalla tabella destra, ma mantiene solo le righe dalla tabella a sinistra.
Screenshot della tabella finale con le intestazioni di colonna Date, CountryID, Units e Country e tre righe di dati. I valori per la colonna Country sono tutti Null.