Se una query include più fonti, crea delle relazioni nel Builder per definire come combinare i loro record in base a un valore condiviso, come l'ID di un'entità, il numero di conto o il reparto.
Nota: Nell'editor SQL , usa una clausola JOIN per definire le relazioni tra le fonti di una query.
Panoramica
Ad esempio, la tua query include una tabella Ordini e una tabella Clienti come fonti. Nella scheda Relationships puoi definire come mettere in relazione gli ordini:
| ID Ordine | Codice cliente | Data dell'ordine |
|---|---|---|
| 111222 | 001 | 01/02/2021 |
| 121212 | 010 | 02/01/2021 |
| 212121 | 100 | 01/12/2021 |
ai clienti:
| ID cliente | NomeCliente | Regione |
|---|---|---|
| 001 | AAA Tintorie | Nord |
| 010 | Tecnologia Wayne | Est |
| 011 | Señor Taqueria | Ovest |
Suggerimento: Per identificare una colonna con valori unici - come CustomerID- in una tabella di dimensioni, contrassegnala come Chiave colonna.
Poiché entrambe le tabelle includono ID cliente, puoi creare una relazione basata sulle rispettive colonne CustomerID e selezionare come combinare o unirei loro record.
Una relazione Left join restituisce tutti i record della prima fonte a sinistra e qualsiasi corrispondenza nell'altra.
Suggerimento: Per evitare duplicati in una join sinistra, assicurati che la seconda colonna di origine sulla destra della relazione contenga valori univoci, come la colonna chiave di una tabella di dimensioni.
Ad esempio, nella relazione tra le nostre tabelle Ordini e Clienti, Left join restituisce tutti gli ordini, con ulteriori dettagli su quelli con ID cliente abbinati nella tabella Clienti. Gli ordini con ID cliente non abbinati alla tabella Clienti includono valori nulli per i dati aggiuntivi del cliente.
| ID ordine | Codice cliente | NomeCliente | Data dell'ordine | Regione |
|---|---|---|---|---|
| 111222 | 001 | AAA Tintorie | 01/02/2021 | Nord |
| 121212 | 010 | Tecnologia Wayne | 02/01/2021 | Est |
| 212121 | 100 | -------------------- | 01/12/2021 | ------- |
Una relazione Right join restituisce tutti i record della seconda fonte a destra e qualsiasi corrispondenza nell'altra.
Suggerimento: Per evitare i duplicati in una Right join, assicurati che la prima colonna di origine sulla sinistra della relazione contenga valori univoci, come ad esempio la colonna chiave di una tabella di dimensioni.
Nel caso delle nostre tabelle Ordini e Clienti, Right join restituisce tutti i clienti, con dettagli aggiuntivi per quelli con ID abbinati nella tabella Ordini. I clienti con ID non abbinati alla tabella Ordini includono valori nulli per i dati aggiuntivi dell'ordine.
| ID Ordine | Codice cliente | NomeCliente | Data dell'ordine | Regione |
|---|---|---|---|---|
| 111222 | 001 | AAA Tintorie | 01/02/2021 | Nord |
| 121212 | 010 | Tecnologia Wayne | 02/01/2021 | Est |
| -------- | 011 | Señor Taqueria | ------------- | Ovest |
Una relazione Inner join restituisce solo i record che compaiono in entrambe le fonti.
Nella relazione tra le tabelle Ordini e Clienti, la relazione Inner join restituisce solo gli ordini dei clienti con ID corrispondenti in entrambe le fonti.
| ID ordine | Codice cliente | NomeCliente | Data dell'ordine | Regione |
|---|---|---|---|---|
| 111222 | 001 | AAA Tintorie | 01/02/2021 | Nord |
| 121212 | 010 | Tecnologia Wayne | 02/01/2021 | Est |
Una relazione Full join restituisce tutti i record della fonte o.
Nell'esempio delle nostre tabelle Ordini e Clienti, Full join restituisce tutti gli ordini e i clienti. I record con ID cliente abbinati in una sola fonte includono valori nulli per i dati mancanti.
| ID ordine | Codice cliente | NomeCliente | Data dell'ordine | Regione |
|---|---|---|---|---|
| 111222 | 001 | AAA Tintorie | 01/02/2021 | Nord |
| 121212 | 010 | Tecnologia Wayne | 02/01/2021 | Est |
| -------- | 011 | Señor Taqueria | ------------- | Ovest |
| 212121 | 100 | -------------------- | 01/12/2021 | ------- |
Nella scheda Relationships si definisce la relazione tra le diverse fonti della query. Per definire questa relazione, devi abbinare i dati condivisi tra le fonti e selezionare come unire i loro record nei risultati della query.
Nota: Le relazioni tra le query sono cumulative e si basano l'una sull'altra. Le fonti di un join determinano le colonne disponibili per unirsi ad altre fonti.
Passo 1. Specifica le fonti da unire
Per definire la relazione di una sorgente con altre sorgenti della query, trascinala da Sources alla scheda Relationships.
- Per definire la prima relazione tra le fonti della query, trascina due fonti da Fonti a Congiunzione 1.
- Per definire la relazione di una sorgente con le sorgenti di una join precedente, clicca su Aggiungi un'altra join e trascina la sorgente da Sorgenti alla nuova join.
Nota: Se una query ha più join, disponili nell'ordine in cui devono avvenire, poiché ogni join dipende dalle fonti del join precedente. Per riposizionare un join, seleziona Sposta in alto o Sposta in basso dal suo menu. Per eliminare un join, ad esempio se la query non include più la sua fonte, seleziona Rimuovi dal suo menu.
Passo 2. Specifica la relazione tra le fonti
Per definire la relazione tra le fonti, puoi mappare i valori condivisi in base a:
- Colonne con dati corrispondenti
- Un campo calcolato per regolare i valori di una fonte in modo da farli coincidere con l'altra fonte.
Suggerimento: Puoi unire solo colonne dello stesso tipo di dati. Per unire dati di tipo diverso, ad esempio se gli ID del conto sono numeri interi in una fonte e stringhe di testo nell'altra, modifica il tipo di colonna dal pannello Proprietà del campo.
Nell'unione, seleziona le colonne corrispondenti da ogni fonte e scegli come abbinare i record in base ai loro valori.
| Operatore | Descrizione |
|---|---|
| Uguale a (=) | Corrisponde a record con valori identici in entrambe le fonti |
| Non uguale a (!=) | Corrisponde a record con valori diversi in entrambe le fonti, ad esempio per mappare gli ID dei conti con i nomi dei conti. |
| Maggiore di (>) | Corrisponde ai record quando il valore numerico o la data/ora della fonte di sinistra è maggiore o successivo al valore della fonte di destra. |
| Maggiore o uguale a (>=) | Corrisponde ai record quando il valore numerico o la data/ora della fonte di sinistra è identico, maggiore o successivo al valore della fonte di destra. |
| Meno di (<) | Corrisponde ai record quando il valore numerico o la data/ora della fonte di sinistra è inferiore o precedente al valore della fonte di destra. |
| Inferiore o uguale a (<=) | Corrisponde ai record quando il valore numerico o la data/ora dell'origine di sinistra è identico, inferiore o precedente al valore dell'origine di destra. |
Per mappare accuratamente i valori tra le fonti, puoi applicare un calcolo alle colonne di origine. Ad esempio, per mappare i numeri di conto in una tabella di dimensioni Mappa dei conti, potresti aver bisogno di:
- Regolare i valori all'interno di una singola colonna sorgente, ad esempio per estrarre le prime sei cifre dai numeri di conto di una tabella di bilancio -
SS_LEFT(tb.account, 6) - Utilizza i valori delle colonne di più fonti, ad esempio combinando o concatenando- i numeri di conto e gli ID della tabella dei fatti Trial Balance e della tabella delle dimensioni Entity Map, unite in precedenza-
CONCAT(tb.account,entity.id) - Definire uno schema comune tra i valori di una colonna, ad esempio per isolare il numero di conto da prefissi o suffissi in una tabella di bilancio -
tb.account LIKE __1005%
Nota: Per definire uno schema, puoi usare dei caratteri jolly per rappresentare i caratteri da ignorare - un trattino basso (
_) per un singolo carattere o un segno di percentuale (%) per nessun carattere o per più caratteri.
Per applicare un calcolo ai valori di una fonte:
- Nel join, seleziona Campo calcolato sotto la fonte con i valori da regolare.
- Nel pannello Proprietà del campo, trascina le colonne da includere nel calcolo da Fonti a Colonne incluse.
Nota: Per garantire un corretto SQL, includi solo le colonne dell'origine selezionata.
- In Calcolo, componi l'operazione Structured Query Language (SQL) da applicare ai valori delle colonne.
- Per fare riferimento a una colonna nel calcolo, clicca su di essa o seleziona Includi nel calcolo dal menu Colonne incluse, oppure inserisci il suo numero tra parentesi come
{1}+{2}. - Per aggiungere rapidamente un operatore SQL o una funzione al calcolo, selezionala dal menu Calculation .
- Per fare riferimento a una colonna nel calcolo, clicca su di essa o seleziona Includi nel calcolo dal menu Colonne incluse, oppure inserisci il suo numero tra parentesi come
- Nel join, seleziona come abbinare i record in base ai valori delle colonne unite:
Operatore Descrizione Uguale a (=) Corrisponde a record con valori identici in entrambe le fonti Non uguale a (!=) Corrisponde a record con valori diversi in entrambe le fonti, ad esempio per mappare gli ID dei conti con i nomi dei conti. Come Se il campo calcolato definisce un pattern con caratteri jolly, corrisponde ai record con valori che corrispondono al pattern Non come Se il campo calcolato definisce uno schema con caratteri jolly, corrisponde ai record con valori che non corrispondono allo schema Maggiore di (>) Corrisponde ai record quando il valore numerico o la data/ora della fonte di sinistra è maggiore o successivo al valore della fonte di destra. Maggiore o uguale a (>=) Corrisponde ai record quando il valore numerico o la data/ora della fonte di sinistra è identico, maggiore o successivo al valore della fonte di destra. Meno di (<) Corrisponde ai record quando il valore numerico o la data/ora della fonte di sinistra è inferiore o precedente al valore della fonte di destra. Inferiore o uguale a (<=) Corrisponde ai record quando il valore numerico o di data/ora della fonte di sinistra è identico, inferiore o precedente al valore della fonte di destra.
Passo 3. Definisci i join composti
Una singola join può mappare più valori tra le sue fonti. Per mappare altre coppie di valori all'interno di un join:
- Clicca su Aggiungi campo.
- Specifica le colonne aggiuntive o i campi calcolati da mappare tra le fonti.
- Seleziona se unire a più valori mappati (E) o solo i valori specifici basati sui dati (O).
Se più valori in una fonte corrispondono a valori diversi nell'altra fonte, seleziona E per abbinare i record in base a più valori mappati.
Ad esempio, se una tabella di dati del bilancio di esercizio ha colonne che corrispondono alla combinazione delle colonne chiave Numero di conto e Entità di una tabella di dimensioni Mappatura conti, clicca su E e unisci le colonne corrispondenti delle tabelle.
Nota: Nell'editor SQL , la relazione appare come JOIN ON (TB.entity = AccountMap.entity) AND (TB.account = AccountMap.account)
Se i valori di una fonte possono corrispondere a più valori nell'altra fonte a seconda dei dati, seleziona o per abbinare i record in base ai valori specifici mappati.
Ad esempio, se la colonna chiave Conto di una tabella di dimensione Mappatura conti corrisponde alla colonna Conto o Sottoconto della tabella del Bilancio, clicca su o e unisci la colonna chiave a entrambe le colonne della tabella.
Nota: Nell'editor SQL , la relazione appare come JOIN ON (AccountMap.account = TB.account) OR (AccountMap.account = TB.subaccount)
Nota: Se l'unione composta include gli operatori E e O, corrisponde ai record che soddisfano tutti i criteri separati da E, più quelli che soddisfano i criteri separati da O.
Passo 4. Seleziona come unire i record delle fonti
Nel join, seleziona come combinare i record delle fonti nei risultati della query:
Dopo aver definito la relazione tra tutte le fonti della query, clicca su Salva .
Nota: Quando viene salvata, la query rimuove automaticamente tutte le fonti che non hanno una relazione definita.
<!--Performing a UNION
When you add a relationship between two sources, you create a
JOIN clause in the query's SQL, which combines the data
into new columns. To instead combine your data into new rows,
you can use a UNION operator in the SQL Editor.
However, a union may create more records or rows
than Spreadsheets or another consumer of the results can support.
As an alternative,
create a table
and append the sources' data as datasets, which you can then slice-and-dice
and analyze in a query.