Wir erweitern unser Datenmodell ein wenig um das Problem Synthetische Schlüssel ein wenig näher zu beleuchten:
Mitarbeiter:
MAID | Name | Vorname |
1 | Müller | Anton |
2 | Schmidt | Petra |
… | .. | … |
Vorgänge:
VID | MAID | Status | RID |
1 | 1 | 0 | 1 |
2 | 2 | 1 | 2 |
.. | .. | … |
Referenzen:
RID | Referenz | Status |
1 | EF0001 | open |
2 | TE1203 | closed |
… | .. | … |
Load Script
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
From Referenzen;
Skriptlog Warnung
Das Ergebnis in der Tabellenansicht
Qlik Ansicht | Datenbankansicht |
Da Qlik immer nur eine Verbindung zwischen den Tabellen will, löst Qlik das Problem in dem es aus den beiden Feldern einen sogenannten Synthetischen Schlüssel erstellt und diesen über eine Zuordnungstabelle „$Syn1 Table“ verknüpft (Qlik Ansicht). Die Farbe gelb im Skriptlog zeigt uns an das es sich hierbei um eine Warnung handelt, was bedeutet das ihre Daten an der Oberfläche noch korrekt dargestellt werden. Sie müssen diese Fehler also nicht zwingend beseitigen.
Allerdings sind Synthetische Schlüssel echte Performance Killer, da die Schlüssel und Zuordnungstabellen mit jedem Filterwechsel an der Oberfläche neu erstellt werden.
Synthetische Schlüssel sollten in jedem Fall beseitigt werden. Es sei denn Sie benutzen die Applikation alleine.
Synthetische Schlüssel lösen
Um dieses Problem zu lösen müssen wir die Gleichnamigkeit des Feldes Status ändern, damit die Tabelle Referenzen nur noch über das Feld RID mit unserer Tabelle verknüpft wird. Da in diesem Fall der Status der Vorgänge nichts mit dem Status der Referenz zu tun hat.
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;
Das Ergebnis in der Tabellenansicht
Kommen wir nun zum nächsten Problem welches beim Daten verknüpfen auftreten kann, den Zirkelbezügen.