Hvis en spørring inkluderer flere kilder, kan du opprette relasjoner i Builder for å definere hvordan postene skal kombineres basert på en felles verdi, for eksempel en enhets-ID, et kontonummer eller en avdeling.
Merk: I SQL Editor, bruker JOIN klausul for å definere relasjoner mellom kildene i en spørring.
Oversikt
La oss si at spørringen din for eksempel inneholder en faktatabell for bestillinger og en dimensjonstabell for kunder som kilder. På fanen Relationships kan du definere hvordan ordrene skal forholde seg til hverandre:
| OrdreID | KundeID | Bestillingsdato |
|---|---|---|
| 111222 | 001 | 01/02/2021 |
| 121212 | 010 | 02/01/2021 |
| 212121 | 100 | 01/12/2021 |
til kundene:
| KundeID | Kundenavn | Region |
|---|---|---|
| 001 | AAA Renseri | Nord |
| 010 | Wayne Technology | Øst |
| 011 | Señor Taqueria | Vest |
Tips: For å identifisere en kolonne med unike verdier - for eksempel CustomerID- i en dimensjonstabell, merker du den som en Key kolonne.
Siden begge tabellene inneholder kunde-ID-er, kan du opprette en relasjon basert på de respektive CustomerID -kolonnene og velge hvordan du vil kombinere - eller joine- postene deres.
En Left join -relasjon returnerer alle -poster fra den første kilden - til venstre - og alle -poster som også matcher i den andre kilden.
Tips: For å unngå duplikater i en Left join, må du sørge for at den andre kildekolonnen - på til høyre i relasjonen - inneholder unike verdier, for eksempel nøkkelkolonnen i en dimensjonstabell.
I relasjonen mellom Orders- og Customers-tabellene våre, for eksempel, returnerer Left join alle bestillinger, med tilleggsinformasjon om de med kunde-ID-er som matches i Customers-tabellen. Bestillinger med kunde-ID som ikke er matchet i tabellen Customers, inkluderer nullverdier for de ekstra kundedataene.
| OrdreID | KundeID | Kundenavn | Bestillingsdato | Region |
|---|---|---|---|---|
| 111222 | 001 | AAA Renseri | 01/02/2021 | Nord |
| 121212 | 010 | Wayne Technology | 02/01/2021 | Øst |
| 212121 | 100 | -------------------- | 01/12/2021 | ------- |
En Right join -relasjon returnerer alle -poster fra den andre kilden - til høyre - og alle -poster som også matcher i den andre kilden.
Tips: For å unngå duplikater i en Right join, må du sørge for at den første kildekolonnen - på til venstre i relasjonen - inneholder unike verdier, for eksempel nøkkelkolonnen i en dimensjonstabell.
Når det gjelder Orders- og Customers-tabellene våre, returnerer Right join alle kunder, med tilleggsopplysninger for de som har ID-er som samsvarer med Orders-tabellen. Kunder med ID som ikke er matchet i tabellen Ordrer, inkluderer nullverdier for tilleggsordredataene.
| OrdreID | KundeID | Kundenavn | Bestillingsdato | Region |
|---|---|---|---|---|
| 111222 | 001 | AAA Renseri | 01/02/2021 | Nord |
| 121212 | 010 | Wayne Technology | 02/01/2021 | Øst |
| -------- | 011 | Señor Taqueria | ------------- | Vest |
En Inner join -relasjon returnerer bare poster som finnes i begge -kildene.
I relasjonen mellom Orders- og Customers-tabellene våre, Inner join returnerer bare bestillinger fra kunder med ID-er som samsvarer i begge kildene.
| OrdreID | KundeID | Kundenavn | Bestillingsdato | Region |
|---|---|---|---|---|
| 111222 | 001 | AAA Renseri | 01/02/2021 | Nord |
| 121212 | 010 | Wayne Technology | 02/01/2021 | Øst |
En Full join -relasjon returnerer alle poster fra eller.
I eksemplet med tabellene Ordrer og Kunder returnerer Full join alle ordrer og kunder. Poster med kunde-ID-er som bare samsvarer med én kilde, inkluderer nullverdier for manglende data.
| OrdreID | KundeID | Kundenavn | Bestillingsdato | Region |
|---|---|---|---|---|
| 111222 | 001 | AAA Renseri | 01/02/2021 | Nord |
| 121212 | 010 | Wayne Technology | 02/01/2021 | Øst |
| -------- | 011 | Señor Taqueria | ------------- | Vest |
| 212121 | 100 | -------------------- | 01/12/2021 | ------- |
På fanen Relationships definerer du hvordan spørringens ulike kilder skal forholde seg til hverandre. For å definere denne relasjonen må du matche data som deles mellom kildene, og velge hvordan postene skal sammenføyes i søkeresultatene.
Merk: Query-relasjoner er kumulative; de bygger på hverandre. Kildene i en sammenføyning bestemmer hvilke kolonner som er tilgjengelige for sammenføyning med andre kilder.
Trinn 1. Angi kildene du vil bli med i
Hvis du vil definere en kildes forhold til andre kilder i spørringen, drar du den fra Kilder til fanen Relasjoner.
- For å definere den første relasjonen mellom kildene i spørringen, drar du to kilder fra Kilder til Join 1.
- Hvis du vil definere forholdet mellom en kilde og kildene i en tidligere sammenføyning, klikker du på Legg til en ny sammenføyning, og drar kilden fra Kilder til den nye sammenføyningen.
Merk: Hvis en spørring har flere sammenføyninger, må du ordne dem i den rekkefølgen de skal forekomme, ettersom hver sammenføyning er avhengig av kildene til den forrige sammenføyningen. Hvis du vil flytte en sammenføyning, velger du Flytt opp eller Flytt ned fra menyen. Hvis du vil slette en sammenføyning, for eksempel hvis spørringen ikke lenger inkluderer kilden, velger du Remove i menyen.
Trinn 2. Spesifiser hvordan kildene forholder seg til hverandre
For å definere forholdet mellom kilder kan du tilordne delte verdier basert på:
- Kolonner med tilsvarende data
- Et beregnet felt, for å justere en kildes verdier etter behov for å matche den andre kilden nøyaktig
Tips: Du kan bare koble sammen kolonner av samme datatype. For å matche data av ulike datatyper, for eksempel hvis konto-ID-er er heltall i én kilde og tekststrenger i en annen, redigerer du kolonnens type fra Field properties panelet.
I sammenføyningen velger du de tilsvarende kolonnene fra hver kilde, og velger hvordan du skal matche poster basert på verdiene deres.
| Operatør | Beskrivelse |
|---|---|
| Lik (=) | Matcher poster med identiske verdier i begge kildene |
| Ikke lik (!=) | Matcher poster med forskjellige verdier i begge kildene, for eksempel for å tilordne konto-ID-er til kontonavn |
| Større enn (>) | Matcher poster når den venstre kildens tall- eller dato-/tidsverdi er større eller senere enn den høyre kildens verdi |
| Større enn eller lik (>=) | Matcher poster når den venstre kildens tall- eller dato-/tidsverdi er identisk med, større enn eller senere enn den høyre kildens verdi |
| Mindre enn (<) | Matcher poster når den venstre kildens tall- eller dato-/tidsverdi er mindre eller tidligere enn den høyre kildens verdi |
| Mindre enn eller lik (<=) | Matcher poster når den venstre kildens tall- eller dato-/tidsverdi er identisk med, mindre enn eller tidligere enn den høyre kildens verdi |
For å tilordne verdier mellom kilder på en nøyaktig måte kan du bruke en beregning på kildekolonnene. Hvis du for eksempel vil tilordne til kontonumre i en dimensjonstabell for kontokart, må du kanskje gjøre følgende:
- Juster verdiene i en enkelt kildekolonne, for eksempel for å trekke ut de seks første sifrene fra kontonumrene i en faktatabell for saldobalanse -
SS_LEFT(tb.account, 6) - Bruk verdier fra flere kilders kolonner, for eksempel ved å kombinere eller konkatenere-kontonumre og ID-er fra henholdsvis den tidligere sammenføyde faktatabellen Trial Balance og dimensjonstabellen Entity Map -
CONCAT(tb.account,entity.id) - Definer et felles mønster i en kolonnes verdier, for eksempel for å isolere kontonummeret fra prefikser eller suffikser i en faktatabell for saldobalanse -
tb.account LIKE __1005%
Merk: For å definere et mønster kan du bruke jokertegn for å representere tegn som skal ignoreres - en understreking (
_) for ett enkelt tegn, eller et prosenttegn (%) for ingen eller flere tegn.
Slik bruker du en beregning på en kildes verdier:
- I sammenføyningen velger du Beregnet felt under kilden med verdiene som skal justeres.
- På Feltegenskaper -panelet drar du kolonnene som skal inkluderes i beregningen, fra Kilder til Inkluderte kolonner.
Merk: For å sikre riktig SQL må du bare inkludere kolonner fra den valgte kilden.
- Under Calculation skriver du inn SQL-operasjonen (Structured Query Language) som skal brukes på kolonnenes verdier.
- For å referere til kolonnen i beregningen, klikk på den eller velg Inkluder i beregning fra menyen under Inkluderte kolonner, eller skriv inn kolonnens nummer i parentes, for eksempel
{1}+{2}. - Du kan raskt legge til en SQL-operator eller funksjon i beregningen ved å velge den fra menyen Calculation .
- For å referere til kolonnen i beregningen, klikk på den eller velg Inkluder i beregning fra menyen under Inkluderte kolonner, eller skriv inn kolonnens nummer i parentes, for eksempel
- I sammenføyningen velger du hvordan du vil matche poster basert på verdiene i de sammenføyde kolonnene:
Operatør Beskrivelse Lik (=) Matcher poster med identiske verdier i begge kildene Ikke lik (!=) Matcher poster med forskjellige verdier i begge kildene, for eksempel for å tilordne konto-ID-er til kontonavn Som Hvis det beregnede feltet definerer et mønster med jokertegn, matches poster med verdier som samsvarer med mønsteret Ikke som Hvis det beregnede feltet definerer et mønster med jokertegn, matches poster med verdier som ikke samsvarer med mønsteret Større enn (>) Matcher poster når den venstre kildens tall- eller dato-/tidsverdi er større eller senere enn den høyre kildens verdi Større enn eller lik (>=) Matcher poster når den venstre kildens tall- eller dato-/tidsverdi er identisk med, større enn eller senere enn den høyre kildens verdi Mindre enn (<) Matcher poster når den venstre kildens tall- eller dato-/tidsverdi er mindre eller tidligere enn den høyre kildens verdi Mindre enn eller lik (<=) Matcher poster når den venstre kildens tall- eller dato-/tidsverdi er identisk med, mindre enn eller tidligere enn den høyre kildens verdi
Trinn 3. Definer eventuelle sammensatte sammenføyninger
En enkelt sammenføyning kan mappe flere verdier mellom kildene. For å tilordne flere verdipar i en sammenføyning:
- Klikk på Legg til felt.
- Angi hvilke tilleggskolonner eller beregnede felt som skal mappes mellom kildene.
- Velg om du vil koble sammen flere mappede verdier (og) eller bare spesifikke verdier basert på dataene (eller).
Hvis flere verdier i en kilde tilsvarer forskjellige verdier i den andre kilden, velger du And for å matche poster basert på flere tilordnede verdier.
Hvis for eksempel en faktatabell for Saldobalanse har kolonner som er knyttet til kombinasjonen av nøkkelkolonnene Kontonummer og Enhet i en dimensjonstabell for Kontokartlegging, klikker du på Og og kobler sammen de tilsvarende kolonnene i tabellene.
Merk: I SQL Editor vises relasjonen som JOIN ON (TB.entity = AccountMap.entity) AND (TB.account = AccountMap.account)
Hvis verdiene i en kilde kan tilsvare flere verdier i den andre kilden, avhengig av dataene, velger du eller for å matche poster basert på de spesifikke tilordnede verdiene.
Hvis for eksempel nøkkelkolonnen Konto i en dimensjonstabell for Kontokartlegging er knyttet til kolonnen Konto eller Underkonto i faktatabellen Saldobalanse, klikker du på eller og kobler nøkkelkolonnen til begge kolonnene i faktatabellen.
Merk: I SQL Editor vises relasjonen som JOIN ON (AccountMap.account = TB.account) OR (AccountMap.account = TB.subaccount)
Merk: Hvis den sammensatte sammenføyningen inneholder både og og eller operatorer, samsvarer den med poster som oppfyller alle kriterier atskilt av og, pluss alle som oppfyller kriterier atskilt av eller.
Trinn 4. Velg hvordan du vil koble kildenes poster
I sammenføyningen velger du hvordan kildenes poster skal kombineres i søkeresultatene:
Når du har definert forholdet mellom alle kildene i spørringen, klikker du på Lagre .
Merk: Når spørringen lagres, fjernes automatisk alle kilder som ikke har noen definert relasjon.
<!--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.