Als een query meerdere bronnen bevat, maak dan relaties in Builder om te definiëren hoe hun records gecombineerd moeten worden op basis van een gedeelde waarde, zoals een entiteits-ID, rekeningnummer of afdeling.
Opmerking: In SQL Editor, gebruikt u een JOIN clausule om relaties tussen de bronnen van een query te definiëren.
Overzicht
Stel bijvoorbeeld dat uw query een gegevenstabel Orders en een dimensietabel Klanten als bronnen heeft. Op het tabblad Relaties kunt u definiëren hoe de orders aan elkaar gerelateerd moeten worden:
| OrderID | KlantID | OrderDate |
|---|---|---|
| 111222 | 001 | 01/02/2021 |
| 121212 | 010 | 02/01/2021 |
| 212121 | 100 | 01/12/2021 |
aan klanten:
| KlantID | Klantnaam | Regio |
|---|---|---|
| 001 | AAA stomerijen | Noord |
| 010 | Wayne Technologie | Oost |
| 011 | Señor Taqueria | West |
Tip: Om een kolom met unieke waarden te identificeren - zoals CustomerID- in een dimensietabel, markeert u als een Key kolom.
Aangezien beide tabellen klant-ID's bevatten, kunt u een relatie maken op basis van hun respectieve kolommen CustomerID en selecteren hoe u hun records wilt combineren of join.
Een Linkse join relatie retourneert alle records van de eerste bron aan de linkerkant en alle records die overeenkomen met in de andere bron.
Tip: Om duplicaten in een Left join te vermijden, moet u ervoor zorgen dat de tweede bronkolom op de rechts in de relatie unieke waarden bevat, zoals de sleutelkolom van een dimensietabel.
In de relatie tussen onze tabellen Orders en Customers bijvoorbeeld, retourneert Left join alle orders, met extra details over de orders met klant-ID's die overeenkomen in de tabel Customers. Bestellingen met klant-ID's die niet gematcht zijn in de tabel Klanten bevatten nulwaarden voor de extra klantgegevens.
| OrderID | KlantID | Klantnaam | OrderDate | Regio |
|---|---|---|---|---|
| 111222 | 001 | AAA stomerijen | 01/02/2021 | Noord |
| 121212 | 010 | Wayne Technologie | 02/01/2021 | Oost |
| 212121 | 100 | -------------------- | 01/12/2021 | ------- |
Een Right join relatie retourneert alle records van de tweede bron aan de rechterkant en alle records die overeenkomen met in de andere bron.
Tip: Om duplicaten in een Right join te vermijden, moet u ervoor zorgen dat de eerste bronkolom op de links in de relatie unieke waarden bevat, zoals de sleutelkolom van een dimensietabel.
In het geval van onze tabellen Orders en Klanten, retourneert Right join alle klanten, met extra details voor degenen met ID's die overeenkomen in de tabel Orders. Klanten met ID's die niet gematcht zijn in de tabel Orders bevatten nulwaarden voor de extra ordergegevens.
| OrderID | KlantID | Klantnaam | OrderDate | Regio |
|---|---|---|---|---|
| 111222 | 001 | AAA stomerijen | 01/02/2021 | Noord |
| 121212 | 010 | Wayne Technologie | 02/01/2021 | Oost |
| -------- | 011 | Señor Taqueria | ------------- | West |
Een Inner join relatie retourneert alleen records die in beide bronnen voorkomen.
In de relatie tussen onze tabellen Orders en Customers retourneert Inner join alleen orders van klanten met ID's die in beide bronnen overeenkomen.
| OrderID | KlantID | Klantnaam | OrderDate | Regio |
|---|---|---|---|---|
| 111222 | 001 | AAA stomerijen | 01/02/2021 | Noord |
| 121212 | 010 | Wayne Technologie | 02/01/2021 | Oost |
Een Full join relatie retourneert alle records van of bron.
In het voorbeeld van onze tabellen Orders en Klanten, levert Full join alle orders en klanten op. Records met klant-ID's die slechts in één bron overeenkomen, bevatten nulwaarden voor ontbrekende gegevens.
| OrderID | KlantID | Klantnaam | OrderDate | Regio |
|---|---|---|---|---|
| 111222 | 001 | AAA stomerijen | 01/02/2021 | Noord |
| 121212 | 010 | Wayne Technologie | 02/01/2021 | Oost |
| -------- | 011 | Señor Taqueria | ------------- | West |
| 212121 | 100 | -------------------- | 01/12/2021 | ------- |
Op het tabblad Relaties definieert u hoe de meerdere bronnen van de query aan elkaar gerelateerd zijn. Om deze relatie te definiëren, stemt u de gegevens van de bronnen op elkaar af en selecteert u hoe hun records in de queryresultaten moeten worden samengevoegd.
Opmerking: Query-relaties zijn cumulatief; ze bouwen op elkaar voort. De bronnen in een join bepalen welke kolommen beschikbaar zijn om te joinen naar andere bronnen.
Stap 1. Geef aan bij welke bronnen u zich wilt aansluiten
Om de relatie van een bron met andere bronnen in de query te definiëren, sleept u deze van Sources naar het tabblad Relationships.
- Om de eerste relatie tussen de bronnen van de query te definiëren, sleept u twee bronnen van Bronnen naar Join 1.
- Om de relatie van een bron met de bronnen van een vorige join te definiëren, klikt u op Add another join en sleept u de bron van Sources naar de nieuwe join.
Opmerking: Als een query meerdere joins heeft, rangschik ze dan in de volgorde waarin ze moeten voorkomen, aangezien elke join afhankelijk is van de bronnen van de vorige join. Om een join te verplaatsen, selecteert u Verplaats omhoog of Verplaats omlaag in het menu. Om een join te verwijderen, bijvoorbeeld als de query de bron niet langer bevat, selecteert u Remove in het menu.
Stap 2. Geef aan hoe de bronnen zich tot elkaar verhouden
Om de relatie tussen bronnen te definiëren, kunt u gedeelde waarden in kaart brengen op basis van:
- Kolommen met bijbehorende gegevens
- Een berekend veld, om de waarden van een bron zo nodig aan te passen om nauwkeurig overeen te komen met de andere bron
Tip: U kunt alleen kolommen van hetzelfde gegevenstype samenvoegen. Om gegevens van verschillende gegevenstypen te matchen, bijvoorbeeld als rekening-ID's in de ene bron gehele getallen zijn en in de andere bron tekststrings, bewerkt u het type van een kolom in het paneel Veldeigenschappen.
Selecteer in de join de overeenkomstige kolommen van elke bron en selecteer hoe u records wilt matchen op basis van hun waarden.
| Exploitant | Beschrijving |
|---|---|
| Gelijk aan (=) | Matcht records met identieke waarden in beide bronnen |
| Niet gelijk aan (!=) | Matcht records met verschillende waarden in beide bronnen, bijvoorbeeld om rekening-ID's aan rekeningnamen te koppelen |
| Groter dan (>) | Matcht records als de numerieke waarde of datum/tijdwaarde van de linker bron groter of later is dan de waarde van de rechter bron |
| Groter dan of gelijk aan (>=) | Matcht records wanneer de numerieke of datum/tijdwaarde van de linker bron identiek is aan, groter is dan of later is dan de waarde van de rechter bron |
| Minder dan (<) | Matcht records als de numerieke of datum/tijdwaarde van de linker bron kleiner of eerder is dan de waarde van de rechter bron |
| Minder dan of gelijk aan (<=) | Matcht records als de numerieke of datum/tijdwaarde van de linker bron identiek is aan, kleiner is dan of eerder is dan de waarde van de rechter bron |
Om waarden tussen bronnen nauwkeurig in kaart te brengen, kunt u een berekening toepassen op bronkolommen. Om bijvoorbeeld rekeningnummers in een dimensietabel Account Map toe te wijzen, moet u mogelijk het volgende doen:
- Pas de waarden binnen een enkele bronkolom aan, bijvoorbeeld om de eerste zes cijfers te extraheren uit rekeningnummers in een feitentabel Proefbalans-
SS_LEFT(tb.account, 6) - Gebruik waarden uit kolommen van meerdere bronnen, zoals combineren of concatenate-rekeningnummers en ID's van respectievelijk de eerder samengevoegde feitentabel Trial Balance en de dimensietabel Entity Map-
CONCAT(tb.account,entity.id) - Definieer een gemeenschappelijk patroon binnen de waarden van een kolom, bijvoorbeeld om het rekeningnummer te isoleren van voor- of achtervoegsels in een feitentabel Proefbalans-
tb.account LIKE __1005%
Opmerking: Om een patroon te definiëren, kunt u jokertekens gebruiken om tekens weer te geven die u wilt negeren - een underscore (
_) voor een enkel teken, of een procentteken (%) voor geen of meerdere tekens.
Om een berekening toe te passen op de waarden van een bron:
- Selecteer in de join Berekend veld onder de bron met de waarden die u wilt aanpassen.
- Sleep in het paneel Veldeigenschappen de kolommen die u in de berekening wilt opnemen van Bronnen naar Inclusief kolommen.
Opmerking: Neem alleen kolommen van de geselecteerde bron op om een correcte SQL te garanderen.
- Stel onder Berekening de bewerking in Structured Query Language (SQL) samen die u wilt toepassen op de waarden van de kolommen.
- Om naar een kolom in de berekening te verwijzen, klikt u erop of selecteert u Include in calculation in het menu onder Included columns, of voert u het nummer tussen haakjes in, zoals
{1}+{2}. - Om snel een SQL operator of functie aan de berekening toe te voegen, selecteert u deze in het menu Berekening .
- Om naar een kolom in de berekening te verwijzen, klikt u erop of selecteert u Include in calculation in het menu onder Included columns, of voert u het nummer tussen haakjes in, zoals
- Selecteer in de join hoe u records wilt matchen op basis van de waarden van de samengevoegde kolommen:
Exploitant Beschrijving Gelijk aan (=) Matcht records met identieke waarden in beide bronnen Niet gelijk aan (!=) Matcht records met verschillende waarden in beide bronnen, bijvoorbeeld om rekening-ID's aan rekeningnamen te koppelen Vind ik leuk Als het berekende veld een patroon met jokertekens definieert, worden records met waarden die overeenkomen met het patroon gematcht Niet zoals Als het berekende veld een patroon met jokertekens definieert, komt het overeen met records met waarden die niet met het patroon overeenkomen Groter dan (>) Matcht records als de numerieke waarde of datum/tijdwaarde van de linker bron groter of later is dan de waarde van de rechter bron Groter dan of gelijk aan (>=) Matcht records wanneer de numerieke of datum/tijdwaarde van de linker bron identiek is aan, groter is dan of later is dan de waarde van de rechter bron Minder dan (<) Matcht records als de numerieke of datum/tijdwaarde van de linker bron kleiner of eerder is dan de waarde van de rechter bron Minder dan of gelijk aan (<=) Matcht records als de numerieke of datum/tijdwaarde van de linker bron identiek is aan, kleiner is dan of eerder is dan de waarde van de rechter bron
Stap 3. Definieer samengestelde verbindingen
Een enkele join kan meerdere waarden mappen tussen zijn bronnen. Om extra paren waarden binnen een join in kaart te brengen:
- Klik op Veld toevoegen.
- Geef de extra kolommen of berekende velden op om tussen de bronnen te mappen.
- Selecteer of u meerdere gemapte waarden wilt koppelen (En) of alleen specifieke waarden op basis van de gegevens (Of).
Als meerdere waarden in een bron elk overeenkomen met verschillende waarden in de andere bron, selecteert u En om records te matchen op basis van meerdere gemapte waarden.
Als een feitentabel Proefbalans bijvoorbeeld kolommen heeft die overeenkomen met de combinatie van de Rekeningnummer en Entiteit sleutelkolommen in een dimensietabel Rekeningtoewijzing, klikt u op en en voegt u de overeenkomstige kolommen van de tabellen samen.
Opmerking: In SQL Editor wordt de relatie weergegeven als JOIN ON (TB.entity = AccountMap.entity) AND (TB.account = AccountMap.account)
Als de waarden van een bron overeen kunnen komen met meerdere waarden in de andere bron, afhankelijk van de gegevens, selecteer dan Of om records te matchen op basis van de specifieke gemapte waarden.
Als bijvoorbeeld de sleutelkolom Rekening in een dimensietabel Account Mapping een koppeling maakt met de kolom Rekening of Subrekening in de feitentabel Trial Balance, klikt u op of en koppelt u de sleutelkolom aan beide kolommen in de feitentabel.
Opmerking: In SQL Editor wordt de relatie weergegeven als JOIN ON (AccountMap.account = TB.account) OR (AccountMap.account = TB.subaccount)
Opmerking: Als uw samengestelde join zowel de operatoren en als of bevat, worden records die voldoen aan alle criteria, gescheiden door een en, gematcht, plus alle records die voldoen aan criteria, gescheiden door een of.
Stap 4. Selecteer hoe u de records van de bronnen wilt samenvoegen
Selecteer in de join hoe u de records van de bronnen in de queryresultaten wilt combineren:
Nadat u de relatie tussen alle bronnen van de query hebt gedefinieerd, klikt u op Opslaan .
Opmerking: Bij het opslaan verwijdert de query automatisch alle bronnen zonder gedefinieerde relatie.
<!--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.