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.