Wir erweitern erneut unser Datenmodell ein wenig um diesmal das Problem Zirkelbezüge ein wenig näher zu beleuchten:
Mitarbeiter:
MAID | Name | Vorname |
1 | Müller | Anton |
2 | Schmidt | Petra |
… | .. | … |
Vorgänge:
VID | MAID | Status | RID | KID |
1 | 1 | 0 | 1 | 1 |
2 | 2 | 1 | 2 | 2 |
.. | .. | … | .. | … |
Referenzen:
RID | Referenz | Status |
1 | EF0001 | open |
2 | TE1203 | closed |
… | .. | … |
Kunden:
KID | Name | Vorname |
1 | Rabe | Erhard |
2 | Muster | Lena |
… | .. | … |
LoadScript
Mitarbeiter:
SQL Select
MAID
,Name
,Vorname
From Mitarbeiter;
Vorgänge:
SQL Select
VID
,MAID
,Status
,RID
From Vorgänge;
Referenzen:
SQL Select
RID
,Referenz
,Status As ReferenzStatus
From Referenzen;
Kunden:
SQL Select
KID
,Name
,Vorname
From Mitarbeiter;
Skriptlog Warnung und Fehler
Hier ist das Problem das sowohl der Kunde als auch der Mitarbeiter mit der Tabelle Vorgänge verknüpft ist. Zudem sind in Kunde und Mitarbeiter die Felder Name und Vorname gleich, wodurch Qlik versucht auch diese zu verbinden. Es entsteht hier allerdings nicht nur ein Synthetischer Schlüssel, sondern auch ein Zirkelbezug. Dieser führt dazu, das eine der geladenen Tabellen vom Datenmodell abgehangen werden, da ansonsten widersprüchliche Ergebnisse in der Analyse entstehen können.
Das Ergebnis in der Tabellenansicht
Qlik Ansicht | Datenbankansicht |
Was sind Zirkelbezüge?
Die gestrichelten roten Linien zeigen die abgehangene Tabelle Mitarbeiter wenn Sie allen Linen folgen bildet sich ein Kreis. Solche Kreise nennt man Zirkelbezüge, sie führen dazu das es an der Oberfläche zu widersprüchlichen Ergebnissen kommt. Das ist auch der Grund warum die Tabelle Mitarbeiter abgehangen wurde. somit können zumindest manche Fragen eindeutig beantworten werden.
Zirkelbezug lösen
In diesem Fall können wir das Problem wieder schnell lösen weil der Name, Vorname des Kunden nichts mit dem des Mitarbeiters zu tun hat. Es gibt allerdings auch Fälle wo Sie wiederum einen anderen Weg beschreiten müssen um das Problem zu lösen. Hier erst mal die erforderlichen Änderungen zu diesem Fall.
Änderungen im Load Skript:
Mitarbeiter:
SQL Select
MAID
,Name
,Vorname
From Mitarbeiter;
Vorgänge:
SQL Select
VID
,MAID
,Status
,RID
From Vorgänge;
Referenzen:
SQL Select
RID
,Referenz
,Status As ReferenzStatus
From Referenzen;
Kunden:
SQL Select
KID
,Name As KundenName
,Vorname As KundenVorname
From Mitarbeiter;
Das Ergebnis in der Tabellenansicht
In der nächsten Lektion lernen Sie den letzten Fall kennen der beim Daten verknüpfen auftreten kann. Synthetische Schlüssel, welche Sie selber nachbauen müssen in Form von zusammengesetzten Schlüsseln.