Als een query meerdere bronnen bevat, maak dan relaties in Builder om te definiëren hoe hun records moeten worden gecombineerd op basis van een gedeelde waarde, zoals een entiteits-ID, rekeningnummer of afdeling.
Opmerking: In SQL Editor, gebruik je 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 bevat. Op het tabblad Relaties kun je 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, markeer je als een Key kolom.
Aangezien beide tabellen klant-ID's bevatten, kun je een relatie maken op basis van hun respectievelijke kolommen CustomerID en selecteren hoe je hun records combineert 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 te vermijden in een Left join, moet je 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 zijn gematcht op in de tabel Klanten bevatten nulwaarden voor de aanvullende 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 te vermijden in een Right join, moet je 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 op zijn gematcht in de tabel Orders bevatten nulwaarden voor de aanvullende 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 voorkomen in beide bronnen.
In de relatie tussen onze tabellen Orders en Customers retourneert Inner join alleen orders van klanten met ID's die overeenkomen in beide bronnen.
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, Full join retourneert alle orders en klanten. Records met klant-ID's die in slechts éé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 zich tot elkaar verhouden. Om deze relatie te definiëren, vergelijkt u gegevens die worden gedeeld tussen de bronnen en selecteert u hoe hun records moeten worden samengevoegd in de queryresultaten.
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, sleep je twee bronnen van Bronnen naar Join 1.
- Om de relatie van een bron met de bronnen van een vorige join te definiëren, klik je op Add another join en sleep je de bron van Sources naar de nieuwe join.
Opmerking: Als een query meerdere joins heeft, rangschik je ze in de volgorde waarin ze moeten voorkomen, omdat 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 niet langer de bron bevat, selecteer je Remove in het menu.
Stap 2. Geef aan hoe de bronnen zich verhouden
Om de relatie tussen bronnen te definiëren, kun je 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: Je 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 records op basis van hun waarden moeten worden gematcht.
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 te koppelen aan rekeningnamen |
Groter dan (>) | Matcht records wanneer 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 waarde 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 waarde 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 wanneer 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, kun je een berekening toepassen op bronkolommen. Om bijvoorbeeld naar rekeningnummers te verwijzen in een dimensietabel Account Map, 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 Proefbalans en de dimensietabel Entiteitskaart-
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 moeten worden genegeerd - een underscore (
_
) voor een enkel teken, of een procentteken (%
) voor geen of meerdere tekens.
Een berekening toepassen op de waarden van een bron:
- Selecteer in de join Berekend veld onder de bron met de aan te passen waarden.
- Sleep in het paneel Field properties de kolommen die u wilt opnemen in de berekening van Sources naar Included columns.
Opmerking: Neem alleen kolommen van de geselecteerde bron op om de juiste SQL te garanderen.
- Stel onder Berekening de bewerking in Structured Query Language (SQL) samen die moet worden toegepast 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, selecteer je 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 je 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 te koppelen aan rekeningnamen Zoals 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, worden records met waarden die niet met het patroon overeenkomen, gematcht Groter dan (>) Matcht records wanneer 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 waarde 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 waarde 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 wanneer 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 die moeten worden toegewezen tussen de bronnen.
- 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, selecteer dan 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 kolommen Rekeningnummer en Entiteit in een dimensietabel Rekening in kaart brengen, 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 kunnen overeenkomen 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 Rekening in kaart brengen een koppeling maakt met de kolom Rekening of Subrekening in de feitentabel Proefbalans, klik dan op of en koppel 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 je samengestelde join zowel de operatoren en als of bevat, worden records gevonden die voldoen aan alle criteria gescheiden door een en, 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 de records van de bronnen moeten worden gecombineerd in de queryresultaten:
Nadat u de relatie tussen alle bronnen van de query hebt gedefinieerd, klikt u op Opslaan .