Om en fråga innehåller flera källor skapar du relationer i Builder för att definiera hur posterna ska kombineras baserat på ett aktie, t.ex. ett enhets-ID, kontonummer eller en avdelning.
Obs: I SQL Editor, används en JOIN klausul för att definiera relationer mellan en frågas källor.
Översikt
Låt oss säga att din fråga innehåller en faktatabell Orders och en dimensionstabell Customers som källor. På fliken Relationships kan du definiera hur ordrarna ska relateras till varandra:
| OrderID | KundID | OrderDatum |
|---|---|---|
| 111 222 | 001 | 01/02/2021 |
| 121 212 | 010 | 02/01/2021 |
| 212 121 | 100 | 01/12/2021 |
till kunder:
| KundID | Kundnamn | Region |
|---|---|---|
| 001 | AAA Kemtvätt | Norra |
| 010 | Wayne Teknik | Öst |
| 011 | Señor Taqueria | Väst |
Tips: Om du vill identifiera en kolumn med unika värden - t.ex. CustomerID- i en dimensionstabell, markerar du den som en Key kolumn.
Eftersom båda tabellerna innehåller kund-ID kan du skapa en relation baserad på deras respektive CustomerID kolumner och välja hur du vill kombinera - eller join- deras poster.
En Left join relation returnerar alla poster från den första källan - till vänster - och alla som också matchade i den andra.
Tips: För att undvika dubbletter i en Left join ska du se till att den andra källkolumnen - på till höger i relationen - innehåller unika värden, t.ex. en dimensionstabells nyckelkolumn.
I relationen mellan våra tabeller Orders och Customers returnerar t.ex. Left join alla order, med ytterligare information om de order vars kund-ID matchas i tabellen Customers. Beställningar med kund-ID som inte matchas i tabellen Customers innehåller nollvärden för de ytterligare kunduppgifterna.
| OrderID | KundID | Kundnamn | OrderDatum | Region |
|---|---|---|---|---|
| 111 222 | 001 | AAA Kemtvätt | 01/02/2021 | Norra |
| 121 212 | 010 | Wayne Teknik | 02/01/2021 | Öst |
| 212 121 | 100 | -------------------- | 01/12/2021 | ------- |
En Right join relation returnerar alla poster från den andra källan - till höger - och alla som också matchade i den andra.
Tips: För att undvika dubbletter i en Right join ska du se till att den första källkolumnen - på till vänster i relationen - innehåller unika värden, t.ex. en dimensionstabells nyckelkolumn.
När det gäller våra tabeller Orders och Customers returnerar Right join alla kunder, med ytterligare information för dem med ID som matchas i tabellen Orders. Kunder med ID som inte matchas i tabellen Orders innehåller nollvärden för ytterligare orderdata.
| OrderID | KundID | Kundnamn | OrderDatum | Region |
|---|---|---|---|---|
| 111 222 | 001 | AAA Kemtvätt | 01/02/2021 | Norra |
| 121 212 | 010 | Wayne Teknik | 02/01/2021 | Öst |
| -------- | 011 | Señor Taqueria | ------------- | Väst |
En Inner join relation returnerar endast poster som förekommer i båda källorna.
I vår relation mellan tabellerna Orders och Customers, Inner join returnerar endast order från kunder med ID som matchas i båda källorna.
| OrderID | KundID | Kundnamn | OrderDatum | Region |
|---|---|---|---|---|
| 111 222 | 001 | AAA Kemtvätt | 01/02/2021 | Norra |
| 121 212 | 010 | Wayne Teknik | 02/01/2021 | Öst |
En Full join relation returnerar alla poster från antingen källa.
I exemplet med våra order- och kundtabeller returnerar Full join alla order och kunder. Poster med kund-ID som matchas i endast en källa innehåller nollvärden för saknade data.
| OrderID | KundID | Kundnamn | OrderDatum | Region |
|---|---|---|---|---|
| 111 222 | 001 | AAA Kemtvätt | 01/02/2021 | Norra |
| 121 212 | 010 | Wayne Teknik | 02/01/2021 | Öst |
| -------- | 011 | Señor Taqueria | ------------- | Väst |
| 212 121 | 100 | -------------------- | 01/12/2021 | ------- |
På fliken Relationships definierar du hur frågans olika källor förhåller sig till varandra. För att definiera denna relation matchar du data som delas mellan källorna och väljer hur deras poster ska sammanfogas i frågeresultaten.
Obs: Query-relationer är kumulativa Källorna i en join avgör vilka kolumner som är tillgängliga för att koppla till andra källor.
Steg 1. Ange vilka källor som ska anslutas
Om du vill definiera en källas relation till andra källor i frågan drar du den från Sources till fliken Relationships.
- För att definiera den första relationen mellan frågans källor drar du två källor från Källor till Join 1.
- Om du vill definiera en källas relation till källorna i en tidigare join klickar du på Lägg till en ny join och drar källan från Källor till den nya jointen.
Obs: Om en fråga har flera joins ska du ordna dem i den ordning de ska inträffa, eftersom varje join är beroende av källorna i föregående join. Om du vill flytta en join väljer du Flytta upp eller Flytta ner från dess meny. Om du vill ta bort en join, t.ex. om frågan inte längre innehåller källan, väljer du Ta bort i menyn.
Steg 2. Ange hur källorna förhåller sig till
För att definiera förhållandet mellan källor kan du kartlägga aktier baserat på:
- Kolumner med motsvarande data
- Ett beräknat fält för att justera en källas värden efter behov för att exakt matcha den andra källan
Tips: Du kan bara länka kolumner av samma datatyp. Om du vill matcha data av olika datatyper, t.ex. om konto-ID:n är heltal i en källa och textsträngar i den andra, redigerar du en kolumns typ i panelen Fältegenskaper.
I sammankopplingen väljer du motsvarande kolumner från varje källa och väljer hur du ska matcha poster baserat på deras värden.
| Operatör | Beskrivning |
|---|---|
| Lika med (=) | Matchar poster med identiska värden i båda källorna |
| Inte lika med (!=) | Matchar poster med olika värden i båda källorna, t.ex. för att mappa konto-ID:n till kontonamn |
| Större än (>) | Matchar poster när den vänstra källans numeriska värde eller datum-/tidsvärde är större eller senare än den högra källans värde |
| Större än eller lika med (>=) | Matchar poster när den vänstra källans numeriska värde eller datum-/tidsvärde är identiskt med, större än eller senare än den högra källans värde |
| Mindre än (<) | Matchar poster när den vänstra källans numeriska värde eller datum-/tidsvärde är mindre eller tidigare än den högra källans värde |
| Mindre än eller lika med (<=) | Matchar poster när den vänstra källans numeriska värde eller datum-/tidsvärde är identiskt med, mindre än eller tidigare än den högra källans värde |
Om du vill mappa värden mellan källor på ett korrekt sätt kan du tillämpa en beräkning på källkolumnerna. Om du t.ex. vill mappa till kontonummer i en dimensionstabell för Account Map kan du behöva göra följande:
- Justera värdena i en enda källkolumn, t.ex. för att extrahera de sex första siffrorna från kontonummer i en faktatabell för Trial Balance
SS_LEFT(tb.account, 6) - Använd värden från kolumner i flera källor, till exempel kombinera eller konkatenera-kontonummer och ID från den tidigare sammanfogade faktatabellen Trial Balance respektive dimensionstabellen Entity Map
CONCAT(tb.account,entity.id) - Definiera ett gemensamt mönster i en kolumns värden, t.ex. för att isolera kontonumret från prefix eller suffix i en faktatabell för Trial Balance
tb.account LIKE __1005%
Obs: För att definiera ett mönster kan du använda jokertecken för att representera tecken som ska ignoreras - ett understreck (
_) för ett enda tecken eller ett procenttecken (%) för inget eller flera tecken.
För att tillämpa en beräkning på en källas värden:
- I sammankopplingen väljer du Beräknat fält under källan med de värden som ska justeras.
- På panelen Fältegenskaper drar du kolumnerna som ska ingå i beräkningen från Källor till Inkluderade kolumner.
Obs: För att säkerställa korrekt SQL, inkludera endast kolumner från den valda källan.
- Under Calculation skriver du den SQL-operation (Structured Query Language) som ska tillämpas på kolumnernas värden.
- Om du vill hänvisa till en kolumn i beräkningen klickar du på den eller väljer Inkludera i beräkning från menyn under Inkluderade kolumner, eller anger dess nummer inom parentes, t.ex.
{1} {2}. - Om du snabbt vill lägga till en SQL-operator eller funktion i beräkningen väljer du den i menyn Calculation .
- Om du vill hänvisa till en kolumn i beräkningen klickar du på den eller väljer Inkludera i beräkning från menyn under Inkluderade kolumner, eller anger dess nummer inom parentes, t.ex.
- Välj hur du vill matcha poster baserat på de sammanfogade kolumnernas värden i sammanfogningen:
Operatör Beskrivning Lika med (=) Matchar poster med identiska värden i båda källorna Inte lika med (!=) Matchar poster med olika värden i båda källorna, t.ex. för att mappa konto-ID:n till kontonamn Liksom Om det beräknade fältet definierar ett mönster med jokertecken, matchas poster med värden som matchar mönstret Inte som Om det beräknade fältet definierar ett mönster med jokertecken, matchas poster med värden som inte matchar mönstret Större än (>) Matchar poster när den vänstra källans numeriska värde eller datum-/tidsvärde är större eller senare än den högra källans värde Större än eller lika med (>=) Matchar poster när den vänstra källans numeriska värde eller datum-/tidsvärde är identiskt med, större än eller senare än den högra källans värde Mindre än (<) Matchar poster när den vänstra källans numeriska värde eller datum-/tidsvärde är mindre eller tidigare än den högra källans värde Mindre än eller lika med (<=) Matchar poster när den vänstra källans numeriska värde eller datum-/tidsvärde är identiskt med, mindre än eller tidigare än den högra källans värde
Steg 3. Definiera alla sammansatta led
En enda join kan mappa flera värden mellan sina källor. För att mappa ytterligare par av värden inom en join:
- Klicka på Lägg till fält.
- Ange vilka ytterligare kolumner eller beräknade fält som ska mappas mellan källorna.
- Välj om du vill lägga till flera mappade värden (och) eller bara specifika värden baserade på data (eller).
Om flera värden i en källa motsvarar olika värden i den andra källan väljer du och för att matcha poster baserat på flera mappade värden.
Om t.ex. faktatabellen Trial Balance har kolumner som mappar till kombinationen av nyckelkolumnerna Kontonummer och Enhet i dimensionstabellen Account Mapping klickar du på och och sammanfogar tabellernas motsvarande kolumner.
Obs: I SQL Editor visas relationen som JOIN ON (TB.entity = AccountMap.entity) AND (TB.account = AccountMap.account)
Om en källas värden kan motsvara flera värden i den andra källan beroende på data väljer du eller för att matcha poster baserat på de specifika mappade värdena.
Om till exempel nyckelkolumnen Konto i en dimensionstabell för Kontomappning mappar till antingen kolumnen Konto eller Underkonto i faktatabellen Trial Balance, klickar du på eller och kopplar nyckelkolumnen till båda faktatabellernas kolumner.
Obs: I SQL Editor visas relationen som JOIN ON (AccountMap.account = TB.account) OR (AccountMap.account = TB.subaccount)
Obs: Om din sammansatta länk innehåller både och och eller operatorer, matchar den poster som uppfyller alla kriterier som är åtskilda av en och, plus alla som uppfyller kriterier som är åtskilda av en eller.
Steg 4. Välj hur källornas poster ska sammanfogas
I sammanfogningen väljer du hur källornas poster ska kombineras i sökresultatet:
När du har definierat förhållandet mellan alla frågans källor klickar du på Spara .
Obs: När frågan sparas tas alla källor som inte har någon definierad relation bort automatiskt.
<!--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.