Kombinieren von Tabellen mit Join und Keep
Bei der Verknüpfung werden zwei Tabellen zu einer Tabelle kombiniert. Dabei bilden jeweils zwei Datensätze aus den Ursprungstabellen, meist zwei Datensätze, die einen Wert in einem Feld gemeinsam haben, einen neuen Datensatz in der entstehenden Tabelle. In Qlik Sense können Verknüpfungen im Skript definiert werden. Dabei werden programminterne Tabellen erzeugt.
Durch den join-Zusatz im Skript ist es möglich, Tabellen beim Einlesen durch Joins zusammenzuschließen. In diesem Fall speichert Qlik Sense nur eine einzelne interne Tabelle als Ergebnis des Joins. Dies ist in einigen Situationen erforderlich, jedoch bestehen auch Nachteile.
- Die internen Tabellen werden fast immer größer und Qlik Sense arbeitet entsprechend langsamer.
- Einige Informationen gehen möglicherweise verloren, z. B. die Häufigkeit (Anzahl der Datensätze) in der zugrunde liegenden Tabelle.
Der
Joins innerhalb eines SQL SELECT -Befehls
Bei einigen
Die meisten
Joins direkt in SELECT-Befehlen zu erstellen, ist ungleich schwieriger, als die Verknüpfungen in Qlik Sense zu nutzen.
Example:
SELECT DISTINCTROW
[Order Details].ProductID, [Order Details].
UnitPrice, Orders.OrderID, Orders.OrderDate, Orders.CustomerID
FROM Orders
RIGHT JOIN [Order Details] ON Orders.OrderID = [Order Details].OrderID;
Dieser SELECT-Befehl schließt eine Tabelle mit Aufträgen und eine Tabelle mit Auftragsdaten durch einen Join zusammen. Es handelt sich um einen rechten Join, d. h. alle Datensätze aus der Tabelle OrderDetails sind enthalten, auch diejenigen mit einer OrderID, die in der Tabelle Orders nicht vorkommt. Datensätze, die in der Tabelle Orders, nicht aber in der Tabelle OrderDetails vorkommen, sind nicht enthalten.
Join
Am einfachsten erstellen Sie Joins durch einen Join-Zusatz im Skript, mit dem die interne Tabelle mit einer anderen benannten Tabelle oder mit der zuletzt erstellten Tabelle zusammengefügt wird. Dieser kombiniert die Tabelle mit einer bereits erstellten Tabelle durch einen Outer Join, d. h. in der entstehenden Tabelle sind alle möglichen Kombinationen von Datensätzen enthalten.
Example:
LOAD a, b, c from table1.csv;
join LOAD a, d from table2.csv;
Die entstehende Tabelle enthält die Felder
Weitere Informationen finden Sie unter Join.
Keep
Der ausdrückliche Zusatz Join im Datenladeskript bewirkt eine vollständige Zusammenfügung der beiden Tabellen, d. h. die beiden Tabellen werden zu einer zusammengeschlossen. Dies führt oft zu sehr umfangreichen Tabellen. Einer der großen Vorteile von Qlik Sense besteht aber gerade darin, dass automatisch Verknüpfungen zwischen Tabellen hergestellt werden, ohne dass ein Join gemacht wird. Dadurch wird Speicherplatz gespart, die Zugriffszeiten verkürzen sich, und das System behält eine hohe Flexibilität. Durch den Keep-Zusatz reduziert sich die Zahl der Fälle, in denen Joins benötigt werden, nochmals.
Der Zusatz Keep zwischen zwei LOAD- oder SELECT-Befehlen bewirkt, dass vor dem Speichern in Qlik Sense die beiden Tabellen verglichen werden und aufgrund dieses Vergleichs in einer oder in beiden Tabellen bestimmte Datensätze wegfallen. Dem Keep-Zusatz muss stets einer der Zusätze Inner, Left oder Right vorangehen. Die Auswahl der Datensätze in den Tabellen erfolgt nach denselben Regeln wie bei dem entsprechenden Join. Die Tabellen werden jedoch nicht zusammengeschlossen, sondern als zwei Tabellen unter verschiedenen Namen in Qlik Sense gespeichert.
Weitere Informationen finden Sie unter Keep.
Inner
Vor Join und Keep kann im Datenladeskript der Zusatz Inner gestellt werden.
Vor Join bewirkt er, dass ein Inner Join hergestellt wird. Die dadurch entstehende Tabelle enthält nur die Datensätze, zu denen in der jeweils anderen Tabelle ein passender Datensatz vorhanden ist.
Vor einem Keep-Zusatz bewirkt „Inner“, dass von beiden Tabellen nur die Datensätze in Qlik Sense gespeichert werden, für die in der jeweils anderen Tabelle ein passender Datensatz vorhanden ist.
Example:
In diesen Beispielen werden die Quelltabellen
A | B |
---|---|
1 | aa |
2 | cc |
3 | ee |
A | C |
---|---|
1 | xx |
4 | yy |
Inner Join
Zunächst wird für die Tabellen ein Inner Join durchgeführt. Daraus ergibt sich
VTable:
SELECT * from Table1;
inner join SELECT * from Table2;
A | B | C |
---|---|---|
1 | aa | xx |
Inner Keep
Wird stattdessen ein Inner Keep durchgeführt, bleiben weiterhin zwei Tabellen bestehen. Die beiden Tabellen sind über das gemeinsame Feld
VTab1:
SELECT * from Table1;
VTab2:
inner keep SELECT * from Table2;
A | B |
---|---|
1 | aa |
A | C |
---|---|
1 | xx |
Weitere Informationen finden Sie unter Inner.
Left
Vor Join und Keep kann im Datenladeskript der Zusatz left gestellt werden.
Vor einem Join-Zusatz bewirkt "left", dass ein Left Join hergestellt wird. Die dadurch entstehende Tabelle enthält die Datensätze der ersten Tabelle ergänzt mit den passenden Sätzen der zweiten Tabelle, sofern vorhanden.
Vor einem Keep-Zusatz bewirkt „Left“, dass von der zweiten Tabelle nur die Datensätze in Qlik Sense gespeichert werden, für die ein passender Datensatz in der ersten Tabelle existiert.
Example:
In diesen Beispielen werden die Quelltabellen
A | B |
---|---|
1 | aa |
2 | cc |
3 | ee |
A | C |
---|---|
1 | xx |
4 | yy |
Zunächst wird für die Tabellen ein Left Join durchgeführt, wodurch eine
VTable:
SELECT * from Table1;
left join SELECT * from Table2;
A | B | C |
---|---|---|
1 | aa | xx |
2 | cc | - |
3 | ee | - |
Wird stattdessen ein Left Keep durchgeführt, bleiben weiterhin zwei Tabellen bestehen. Die beiden Tabellen sind über das gemeinsame Feld
VTab1:
SELECT * from Table1;
VTab2:
left keep SELECT * from Table2;
A | B |
---|---|
1 | aa |
2 | cc |
3 | ee |
A | C |
---|---|
1 | xx |
Weitere Informationen finden Sie unter Left.
Right
Vor Join und Keep kann im Datenladeskript der Zusatz right gestellt werden.
Vor einem Join-Zusatz bewirkt "right", dass ein Right Join hergestellt wird. Die dadurch entstehende Tabelle enthält die Datensätze der zweiten Tabelle, ergänzt durch die passenden Sätze der ersten Tabelle, sofern vorhanden.
Vor einem Keep-Zusatz bewirkt „Right“, dass von der ersten Tabelle nur die Datensätze in Qlik Sense gespeichert werden, für die ein passender Datensatz in der zweiten Tabelle existiert.
Example:
In diesen Beispielen werden die Quelltabellen
A | B |
---|---|
1 | aa |
2 | cc |
3 | ee |
A | C |
---|---|
1 | xx |
4 | yy |
Zunächst wird für die Tabellen ein Right Join durchgeführt, wodurch eine
VTable:
SELECT * from Table1;
right join SELECT * from Table2;
A | B | C |
---|---|---|
1 | aa | xx |
4 | - | yy |
Wird stattdessen ein Right Keep durchgeführt, bleiben weiterhin zwei Tabellen bestehen. Die beiden Tabellen sind über das gemeinsame Feld
VTab1:
SELECT * from Table1;
VTab2:
right keep SELECT * from Table2;
A | B |
---|---|
1 | aa |
A | C |
---|---|
1 | xx |
4 | yy |
Weitere Informationen finden Sie unter Right.