📚 Qlik Sense Kurs – Artikel 9 von 28
← Vorheriger Artikel: QVD-Optimierung – 100x schnellere Loads
→ Nächster Artikel: Star Schema in Qlik – Performance & Klarheit
Synthetic Keys & Circular References auflösen
Was kann man in 18 Minuten über Synthetic Keys & Circular References lernen?
Nach diesem Guide können Sie:
- Synthetic Keys erkennen und in 5 Minuten durch bewusste Feldumbenennung auflösen
- Circular References diagnostizieren und durch gezielte Architektur-Änderungen eliminieren
- Präventive Naming Conventions implementieren die 90% aller Modellierungsprobleme verhindern
Zeitinvestition: 18 Min Lesen + 2 Std Hands-on
Voraussetzung: Grundkenntnisse in Table Relationships und einfache Datenmodelle
Quick Win: In 3 Minuten Synthetic Keys identifizieren und verstehen warum sie problematisch sind
Wie kann ich Synthetic Keys schnell identifizieren?
Das Problem: Ihr Datenmodell zeigt mysteriöse $Syn-Tabellen und Performance wird unerklärlich langsam.
Lösung in 3 Schritten:
- Öffnen Sie das Datenmodell-Viewer (Datenmodell-Symbol in der App)
- Suchen Sie nach Tabellen mit Namen «$Syn1», «$Syn2» etc.
- Prüfen Sie welche Felder diese Synthetic Keys verursachen
// Typische Situation die Synthetic Keys erzeugt
Customers:
LOAD
CustomerID,
CustomerName,
Region,
CountryCode
FROM [lib://Data/customers.csv];
Orders:
LOAD
OrderID,
CustomerID,
OrderDate,
Region, // Problem: Gemeinsame Felder CustomerID UND Region
CountryCode // Problem: Drei gemeinsame Felder = Synthetic Key
FROM [lib://Data/orders.csv];
Erklärung:
- Synthetic Key Ursache: Mehr als ein Feld mit gleichem Namen zwischen Tabellen → Qlik erstellt automatisch $Syn-Tabelle
- Performance Impact: Jede Expression muss über Synthetic Table gehen → 2-5x langsamere Berechnungen
- Model Complexity: Statt 2 Tabellen entstehen 3-4 Tabellen → schwer verständlich
Performance: 1M Rows ohne Synthetic: Expressions 2-3s → Mit Synthetic: 8-15s
Checkpoint: Sehen Sie $Syn-Tabellen im Datenmodell? → Problem identifiziert! Keine $Syn-Tabellen? → Alles optimal oder mehrere Circular References. Siehe Troubleshooting.
Für systematische Lösung siehe Synthetic Keys auflösen.
Welche Lösung für Ihr Problem?
Identifizieren Sie zuerst das Problem-Pattern, dann wählen Sie die passende Lösungsstrategie:
Wie löse ich Synthetic Keys & Circular References in Qlik Sense?
Haben Sie $Syn-Tabellen im Datenmodell?
- JA → Problem: Synthetic Keys → Methode 1: Synthetic Keys auflösen
- NEIN → Können Sie von jeder Tabelle zu jeder anderen über mehrere Pfade navigieren?
- JA → Problem: Circular References → Methode 2: Circular References auflösen
- NEIN → Modell ist korrekt → Methode 3: Prävention implementieren
| Problem-Typ | Erkennungsmerkmal | Lösung | Zeitaufwand | Complexity | Häufigkeit |
|---|---|---|---|---|---|
| Synthetic Keys | $Syn-Tabellen sichtbar | Feldumbenennung | 15-30 Min | Niedrig | 80% aller Fälle |
| Circular References | Mehrere Pfade zwischen Tabellen | Architektur-Änderung | 1-3 Std | Hoch | 15% aller Fälle |
| Prävention | Neues Modell aufbauen | Naming Conventions | 30 Min Setup | Niedrig | Best Practice |
Legende:
- Zeitaufwand: Durchschnittlicher Aufwand für typische Business-Datenmodelle (10-20 Tabellen)
- Complexity: Technische Schwierigkeit und erforderliche Architektur-Kenntnisse
- Häufigkeit: Anteil an realen Qlik-Projekten mit diesem Problem-Pattern
Wie kann man Synthetic Keys in Qlik Sense auflösen?
Das Problem
Zwei oder mehr Tabellen teilen sich mehrere Felder mit identischen Namen. Qlik interpretiert dies als Multi-Field-Key und erstellt automatisch Synthetic Keys ($Syn1, $Syn2). Das führt zu Performance-Problemen und unverständlichen Datenmodellen.
Die Lösung
Bewusste Feldumbenennung: Nur echte Verknüpfungsfelder (Keys) behalten identische Namen, alle anderen Felder werden umbenannt um ihre semantische Rolle zu verdeutlichen.
// Problematischer Code (erzeugt Synthetic Keys)
Customers:
LOAD
CustomerID,
CustomerName,
Region, // Problem: Region in beiden Tabellen
CountryCode, // Problem: CountryCode in beiden Tabellen
CreatedDate // Problem: CreatedDate in beiden Tabellen
FROM [lib://Data/customers.csv];
Orders:
LOAD
OrderID,
CustomerID, // OK: Verknüpfungsfeld
OrderDate,
Region, // Problem: Erzeugt Synthetic Key
CountryCode, // Problem: Erzeugt Synthetic Key
CreatedDate // Problem: Erzeugt Synthetic Key
FROM [lib://Data/orders.csv];
// Korrekte Lösung (vermeidet Synthetic Keys)
Customers:
LOAD
CustomerID, // Key: Identisch lassen
CustomerName,
Region as CustomerRegion, // Umbenannt: Semantik verdeutlicht
CountryCode as CustomerCountry,
CreatedDate as CustomerCreatedDate
FROM [lib://Data/customers.csv];
Orders:
LOAD
OrderID,
CustomerID, // Key: Identisch lassen für Association
OrderDate,
Region as OrderRegion, // Umbenannt: Andere semantische Bedeutung
CountryCode as ShipToCountry, // Umbenannt: Präzisere Beschreibung
CreatedDate as OrderCreatedDate
FROM [lib://Data/orders.csv];
Erklärung der Strategie:
- Key-Felder unverändert: CustomerID bleibt CustomerID für automatische Association
- Semantische Umbenennung: Region in Orders kann Lieferregion sein, in Customers Kundenregion
- Präfix-Strategy: Tabellenname als Präfix (Customer*, Order*) für sofortige Zuordnung
Performance-Kontext:
- 2M Orders + 50k Customers mit Synthetic: Chart-Berechnung 12-18s
- Gleiche Daten ohne Synthetic: Chart-Berechnung 3-5s
- Memory-Reduktion: 25-40% weniger RAM durch eliminierte $Syn-Tabellen
⚠️ Die 3 häufigsten Fehler (und Lösungen)
Fehler 1: Alle gleichen Felder umbenennen, auch Keys
- Symptom: Keine Association zwischen Tabellen mehr, Daten isoliert
- Ursache: Auch Verknüpfungsfelder (CustomerID) wurden umbenannt
- Lösung: Keys behalten identische Namen, nur Nicht-Key-Felder umbenennen
- Code: CustomerID in beiden Tabellen identisch, aber Region → CustomerRegion vs OrderRegion
Fehler 2: Composite Keys durch Umbenennung zerstört
- Symptom: Many-to-Many Relationships entstehen wo 1:1 erwartet
- Ursache: Teil eines zusammengesetzten Schlüssels wurde umbenannt
- Lösung: Composite Key-Felder als Set behandeln, alle identisch lassen oder Concatenated Key erstellen
- Code:
CustomerID & '|' & LocationID as CompositeKeystatt separate Felder
Fehler 3: Unspezifische Umbenennungen ohne Semantik
- Symptom: Felder heißen «Region1», «Region2» – unklar welche wofür
- Ursache: Mechanische Umbenennung ohne Business-Kontext
- Lösung: Semantische Namen basierend auf Business-Bedeutung
- Code: Statt «Region1»: «CustomerRegion», «ShippingRegion», «BillingRegion»
Best Practices
- Key-Feld-Identifikation: Dokumentieren Sie bewusst welche Felder Verknüpfungsfelder sind (1:1, 1:N, M:N). Nur diese behalten identische Namen. Business-Rule: Ein Feld ist Key wenn es für JOINs oder Lookup-Zwecke verwendet wird.
- Semantische Präfixe: Nutzen Sie Tabellennamen als Präfix (Customer*, Order*, Product*). Alternative: Funktionale Präfixe (Billing*, Shipping*, Reporting*). Konsistenz wichtiger als spezifische Convention.
- Documentation in Skript: Kommentieren Sie Umbenennungen:
// CustomerRegion: Kunde's Heimatregion vs OrderRegion: Lieferregion. Für Nachfolge-Entwickler essentiell zur Verständlichkeit. - Validation nach Änderung: Prüfen Sie Datenmodell: Keine $Syn-Tabellen mehr? Row-Counts vor/nach identisch? Test-Charts funktionieren wie erwartet? Systematische Validierung verhindert unentdeckte Seiteneffekte.
✓ Checkpoint: Warum sollten nur Key-Felder identische Namen haben, aber nicht alle anderen?
Antwort anzeigen
Identische Namen signalisieren Qlik automatische Verknüpfungen. Bei Key-Feldern ist das gewünscht (CustomerID soll Kunden und Orders verbinden). Bei Nicht-Key-Feldern führt es zu ungewollten Synthetic Keys und falschen Aggregationen. Beispiel: CustomerRegion und OrderRegion haben unterschiedliche Business-Bedeutung und sollen nicht automatisch verknüpft werden.
Für komplexere Modelle mit vielen Verknüpfungen hilft Star Schema Implementierung.
→ Nächster Schritt: Bei sehr komplexen Modellen mit vielen Tabellen reicht Feldumbenennung nicht. Circular References auflösen zeigt Architektur-basierte Lösungen.
Wie löse ich Circular References in Qlik Sense?
Das Problem
Multiple Pfade zwischen Tabellen entstehen durch komplexe Business-Beziehungen. Beispiel: Customer → Orders → Product und Customer → Territory → Product. Qlik kann nicht entscheiden welcher Pfad für Berechnungen verwendet werden soll, was zu falschen Aggregationen führt.
Die Lösung
Architekturelle Ent-kopplung durch bewusste Pfad-Unterbrechung: Entweder Denormalisierung oder Link-Tabellen verwenden, um eindeutige Beziehungen zu schaffen.
// Problematische Struktur (Circular Reference)
Customers:
LOAD CustomerID, CustomerName, TerritoryID FROM customers.csv;
Territory:
LOAD TerritoryID, TerritoryName, RegionID FROM territory.csv;
Orders:
LOAD OrderID, CustomerID, ProductID, TerritoryID FROM orders.csv; // Circular: Customer→Territory UND Orders→Territory
Products:
LOAD ProductID, ProductName, RegionID FROM products.csv; // Circular: Territory→Region UND Products→Region
// Lösung 1: Denormalisierung (einfachste Lösung)
Customers:
LOAD
CustomerID,
CustomerName,
TerritoryID as CustomerTerritoryID, // Umbenennung unterbricht Pfad
ApplyMap('TerritoryMap', TerritoryID, 'Unknown') as CustomerTerritory
FROM customers.csv;
// Territory Map erstellen
TerritoryMap:
MAPPING LOAD TerritoryID, TerritoryName FROM territory.csv;
Orders:
LOAD OrderID, CustomerID, ProductID, TerritoryID as OrderTerritoryID FROM orders.csv;
Products:
LOAD ProductID, ProductName, RegionID as ProductRegionID FROM products.csv;
// Lösung 2: Link-Tabelle für komplexe M:N-Beziehungen
Customer_Territory_Link:
LOAD
CustomerID & '|' & TerritoryID as Customer_Territory_Key,
CustomerID,
TerritoryID,
ValidFrom,
ValidTo
FROM customer_territory_assignments.csv;
Erklärung der Strategie:
- Denormalisierung: Redundante Datenaufnahme verhindert komplexe Joins. Performance-Vorteil durch weniger Tabellen.
- Pfad-Unterbrechung: Bewusste Feldumbenennung zerstört automatische Associations wo nicht gewünscht.
- Link-Tabellen: Für echte M:N-Beziehungen mit zusätzlichen Attributen (Zeit-Gültigkeit, Gewichtung).
Performance-Kontext:
- 5 Tabellen mit Circular Reference: Expressions 15-25s, unpredictable Ergebnisse
- 3 Tabellen nach Denormalisierung: Expressions 4-8s, eindeutige Berechnungen
- Trade-off: Mehr Datenredundanz vs. bessere Performance und Verständlichkeit
⚠️ Die 3 häufigsten Fehler (und Lösungen)
Fehler 1: Zu aggressive Denormalisierung führt zu Daten-Explosion
- Symptom: Tabellen werden riesig, jede Product-Änderung muss in Orders-Tabelle repliziert werden
- Ursache: High-Change-Rate Attribute wurden denormalisiert statt als separate Dimension behalten
- Lösung: Nur stable Attributes denormalisieren (Name, Category), nicht variable (Price, Status)
- Code: Denormalize ProductCategory, nicht ProductPrice
Fehler 2: Link-Tabellen ohne Business-Kontext erzeugen noch mehr Circular References
- Symptom: Link-Tabelle verbindet sich mit zu vielen anderen Tabellen, Problem wird verschärft
- Ursache: Link-Tabelle enthält zu viele Foreign Keys ohne klare Abgrenzung
- Lösung: Link-Tabelle nur für eine spezifische M:N-Beziehung, nicht als «Central Hub»
- Code: Customer_Product_Preferences, nicht Customer_All_Relationships
Fehler 3: Unvollständige Pfad-Unterbrechung lässt Circular Reference bestehen
- Symptom: Nach Umbenennung immer noch unerwartete Verknüpfungen zwischen Tabellen
- Ursache: Übersehen dass ein anderes Feld ebenfalls automatische Verknüpfung erzeugt
- Lösung: Systematisch alle gemeinsamen Feldnamen zwischen problematischen Tabellen prüfen
- Code: Nicht nur TerritoryID umbenennen, auch RegionCode, CountryCode etc.
Best Practices
- Architecture Decision Documentation: Dokumentieren Sie bewusst warum welcher Pfad unterbrochen wurde. Business-Regel: Welche Beziehung ist primär, welche sekundär? Für Nachfolge-Entwickler und zukünftige Erweiterungen essentiell.
- Star Schema als Ziel-Architektur: Denormalisierung führt natürlich zu Star Schema (1 Fact, mehrere Dimensions). Planen Sie bewusst in diese Richtung statt Ad-hoc-Fixes. Langfristig wartbarer und performance-optimaler.
- Staged Refactoring: Lösen Sie Circular References schrittweise, nicht alles auf einmal. Testen Sie nach jedem Schritt dass Berechnungen noch korrekt sind. Rollback-Strategie für jeden Refactoring-Schritt.
- Business Rule Validation: Nach Architektur-Änderung: Validieren Sie mit Business Users dass Aggregationen noch der Erwartung entsprechen. Circular References führen oft zu subtil falschen Zahlen die erst spät entdeckt werden.
✓ Checkpoint: Wann sollten Sie Denormalisierung vs. Link-Tabellen wählen?
Antwort anzeigen
Denormalisierung bei stabilen 1:N-Beziehungen wo die «1»-Seite selten ändert (Customer → Region). Link-Tabellen bei echten M:N-Beziehungen mit zusätzlichen Attributen (Customer → Territory mit Gültigkeitsdauer). Faustregel: Weniger als 20% Datenredundanz → Denormalisierung. Mehr als 20% → separate Tabelle mit bewusster Verknüpfung.
Für systematischen Architektur-Aufbau siehe Star Schema Design Patterns.
→ Nächster Schritt: Statt reaktive Problem-Lösung ist Prävention besser. Naming Conventions implementieren verhindert 90% aller Modellierungsprobleme.
Wie helfen präventive Naming Conventions bei Synthetic Keys & Circular References in Qlik Sense?
Das Problem
Reactive Problem-Lösung ist zeitaufwändig und fehleranfällig. Teams entwickeln unterschiedliche Modellierungs-Ansätze, was zu inkonsistenten und schwer wartbaren Datenmodellen führt.
Die Lösung
Proaktive Naming Conventions und Modellierungs-Standards die automatisch korrekte Assoziationen erzeugen und problematische Patterns verhindern.
// Naming Convention Template
// Format: [TableName]_[FieldType]_[BusinessEntity]
// 1. Key-Felder: Immer mit "ID" suffix, Tabellenbezug im Namen
Customers:
LOAD
CustomerID, // Standard Key Format
CustomerName, // Business Attribute
CustomerRegion, // Prefix = Tabellenzugehörigkeit
CustomerCreatedDate // Prefix + beschreibender Name
FROM customers.csv;
Orders:
LOAD
OrderID, // Eigener Key
CustomerID, // Foreign Key - identisch für Association
OrderDate, // Prefix für Eindeutigkeit
OrderRegion, // Anders als CustomerRegion - keine Synthetic Key
OrderAmount
FROM orders.csv;
// 2. Fact vs Dimension Pattern
Fact_Sales: // Fact Tables mit "Fact_" Prefix
LOAD
SalesID,
CustomerID, // FK zu Dimension
ProductID, // FK zu Dimension
SalesDate,
SalesAmount, // Measure in Fact
SalesQuantity // Measure in Fact
FROM sales.csv;
Dim_Customers: // Dimension Tables mit "Dim_" Prefix
LOAD
CustomerID, // PK
CustomerName, // Attribute
CustomerSegment, // Attribute
CustomerRegion // Attribute
FROM customers.csv;
// 3. Avoid Generic Names
LOAD
ID as CustomerID, // Konkret statt generisch
Name as CustomerName, // Kontext hinzufügen
Type as CustomerType, // Präzise Benennung
Status as CustomerStatus, // Eindeutige Zuordnung
Date as CustomerRegistrationDate // Volle semantische Klarheit
FROM customers.csv;
Erklärung der Strategie:
- Prefix-System: Tabellenname als Präfix verhindert versehentliche Name-Collisions
- Suffix-Standards: ID = Key, Date = Datum, Amount = Geld-Betrag, Count = Anzahl
- Fact/Dim-Trennung: Klare Unterscheidung zwischen transaktionalen und dimensionalen Daten
Performance-Kontext:
- Team-Effizienz: 50-70% weniger Zeit für Datenmodell-Debugging
- Onboarding: Neue Entwickler verstehen Modell in 30 Min statt 3 Std
- Wartung: Strukturänderungen in 15 Min statt 2 Std (keine unerwarteten Seiteneffekte)
⚠️ Die 3 häufigsten Fehler (und Lösungen)
Fehler 1: Zu strenge Conventions blockieren sinnvolle Exceptions
- Symptom: Entwickler umgehen Conventions weil sie in speziellen Cases unpraktisch sind
- Ursache: Regelwerk berücksichtigt keine Edge Cases oder Business-spezifische Anforderungen
- Lösung: Defined Exceptions dokumentieren: Wann sind Abweichungen erlaubt und warum?
- Code: Exception: Bridge-Tables dürfen generische Namen haben (OrderLine_ProductID vs OrderLineProductID)
Fehler 2: Conventions werden nicht durchgesetzt – unterschiedliche Standards parallel
- Symptom: Neue Tabellen folgen alter Convention, bestehende behalten alte Namen
- Ursache: Keine systematische Migration von Legacy-Code und fehlende Code-Review-Prozesse
- Lösung: Graduelle Migration + Template-Apps für neue Projekte + Peer-Review
- Code: Refactoring-Plan: 2 Tabellen pro Sprint auf neue Convention migrieren
Fehler 3: Over-Engineering: Conventions werden zu komplex für praktischen Nutzen
- Symptom: Feldnamen werden unleserlich lang (Customer_Billing_Address_PostalCode_Primary)
- Ursache: Versucht jede mögliche Information in den Feldnamen zu codieren
- Lösung: Balance: Eindeutigkeit vs. Lesbarkeit. Dokumentation ergänzt kurze Namen
- Code: CustomerBillingZip (mit Dokumentation) statt Customer_Billing_Address_PostalCode_Primary
Best Practices
- Template-Driven Development: Erstellen Sie Template-Apps mit korrekten Naming Patterns. Neue Projekte kopieren Template statt from-scratch development. Beinhaltet Standard-Tabellen (Kalender, Lookup-Tables) mit korrekten Namen.
- Code Review Integration: Naming Convention Checklist für alle Pull Requests. Automatisierte Checks wo möglich (Prefix-Validation, Reserved-Words-Check). Cultural Change: Conventions sind nicht optional sondern Quality-Standard.
- Living Documentation: Conventions-Dokument mit Real-Examples aus aktuellen Apps. Regular Updates wenn neue Patterns entstehen. FAQ-Section für häufige Edge-Cases und deren approved Solutions.
- Tooling Support: Include-Files mit Standard-Mappings und Lookup-Tables. Code-Snippets für IDE/Text-Editoren. Validation-Scripts die Modell auf Convention-Compliance prüfen.
✓ Checkpoint: Warum sind Präfixe besser als Suffixe für Tabellenzugehörigkeit?
Antwort anzeigen
Präfixe gruppieren Felder natürlich bei alphabetischer Sortierung (CustomerID, CustomerName, CustomerRegion erscheinen zusammen). Suffixe verstreuen verwandte Felder (CustomerID, OrderID, ProductID wären getrennt). Das erleichtert Navigation in Field-Listen und Expression-Dialogen erheblich.
Für vollständige Architektur-Patterns siehe Enterprise Data Architecture.
→ Nächster Schritt: Mit soliden Naming Conventions können Sie saubere Star Schemas aufbauen. Star Schema Implementation zeigt optimale Datenmodell-Architektur.
Wie vergleiche ich alle Lösungsansätze für Synthetic Keys & Circular References in Qlik Sense?
Diese Bewertung basiert auf typischen Enterprise-Projekten (10-30 Tabellen, 2-5 Entwickler, 2-3 Jahre Projektlaufzeit).
| Ansatz | Problem-Lösung | Implementierung | Maintenance | Team-Skalierung | Performance | Empfehlung |
|---|---|---|---|---|---|---|
| Reactive Fixes | Schnell | 15 Min | Hoch | Schlecht | Mittel | Nur für Prototypen |
| Synthetic Key Auflösung | Zielgerichtet | 30 Min | Mittel | Mittel | Hoch | Standard-Lösung |
| Architektur Refactoring | Nachhaltig | 2-4 Std | Niedrig | Gut | Sehr Hoch | Komplexe Modelle |
| Präventive Conventions | Proaktiv | 4-8 Std | Sehr Niedrig | Sehr Gut | Optimal | Neue Projekte |
Legende:
- Problem-Lösung: Wie effektiv wird das konkrete Problem adressiert
- Implementierung: Erstmaliger Zeitaufwand bis zur funktionsfähigen Lösung
- Maintenance: Langfristiger Aufwand für Wartung und Anpassungen
- Team-Skalierung: Wie gut funktioniert der Ansatz mit mehreren Entwicklern
- Performance: Auswirkung auf Qlik-App-Performance und User Experience
Interpretation: Reactive Fixes sind verlockend wegen der schnellen Implementierung, führen aber zu Technical Debt. Präventive Conventions haben hohe Initial-Investition, zahlen sich aber exponentiell aus bei Team-Arbeit und langfristiger Wartung.
Wie löse ich Synthetic Keys & Circular References in Qlik Sense?
Alphabetischer Index:
- Associations verschwunden nach Fieldumbenennung
- Circular Reference bleibt trotz Umbenennungen
- Performance schlechter nach Synthetic Key Auflösung
- Star Schema wird nicht automatisch erkannt
- Synthetic Keys kommen nach Reload zurück
- Falsche Aggregationen trotz korrektem Modell
Wie löse ich das Problem mit Synthetic Keys nach dem Reload in Qlik Sense?
Symptom: $Syn-Tabellen erscheinen wieder obwohl Felder umbenannt wurden
Häufigste Ursachen:
- Neues Feld in Source-Daten → Lösung: Prüfen Sie neue Spalten in CSV/Database, passen Sie Umbenennungen an
- Andere Tabelle lädt gleichen Feldnamen → Lösung: Systematisch alle LOAD-Statements prüfen, nicht nur die zwei problematischen
- Include-File oder Subroutine überschreibt Umbenennung → Lösung: Prüfen Sie Include-Files auf Feld-Aliase
Debug-Schritte:
- Aktivieren Sie Field-Value-Tracing:
SET TraceValueFields = 1; - Suchen Sie im Load-Script nach allen Vorkommen des problematischen Feldnamens
- Prüfen Sie Recent-Changes in Source-Systemen (neue Spalten, geänderte Namen)
Code-Fix:
// Debug: Alle Felder tracken
TRACE "=== BEFORE LOAD ===";
FOR i = 1 to NoOfTables()
TRACE "Table: $(TableName($(i)-1))";
FOR j = 1 to NoOfFields(TableName($(i)-1))
TRACE " Field: $(FieldName($(j), TableName($(i)-1)))";
NEXT j
NEXT i
Wie löse ich das Problem mit verschwundenen Associations nach Fieldumbenennung?
Symptom: Tabellen sind isoliert, keine automatischen Verknüpfungen mehr sichtbar
Häufigste Ursachen:
- Verknüpfungsfeld wurde versehentlich umbenannt → Lösung: Key-Felder müssen identisch bleiben
- Datentyp-Mismatch nach Umbenennung → Lösung: Prüfen Sie Datentypen der Key-Felder
Debug-Schritte:
- Prüfen Sie Datenmodell: Sind Key-Felder in beiden Tabellen vorhanden?
- Testen Sie mit Beispiel-Daten:
TRACE Distinct(CustomerID);in beiden Tabellen - Checken Sie Datentypen: String vs Number kann Association verhindern
Code-Fix:
// Ensure consistent data types
LOAD
Text(CustomerID) as CustomerID, // Force string type
CustomerName
FROM customers.csv;
LOAD
Text(CustomerID) as CustomerID, // Force same type
OrderDate
FROM orders.csv;
Wie kann ich die Performance nach der Synthetic Key Auflösung verbessern?
Symptom: Charts und Expressions sind langsamer trotz eliminierter $Syn-Tabellen
Häufigste Ursachen:
- Denormalisierung führt zu größeren Tabellen → Lösung: QVD-Optimierung und Memory-Management
- Mehr Felder durch Umbenennung → Lösung: Prüfen Sie ob alle umbenannten Felder tatsächlich benötigt werden
Debug-Schritte:
- Vergleichen Sie Memory-Verbrauch vor/nach mit
DocumentSize() - Profiling: Welche Charts sind am langsamsten geworden?
- Row-Count-Vergleich: Sind Tabellen durch Denormalisierung explodiert?
Code-Fix:
// Reduce redundant fields
LOAD
CustomerID,
CustomerName,
// CustomerRegion, // Drop if not used in expressions
// CustomerCountry // Drop if derivable from other fields
FROM customers.csv;
Siehe auch: QVD-Performance Optimization für Memory-effiziente Lösungen
Was sind die nächsten Schritte zur Lösung von Synthetic Keys & Circular References in Qlik Sense?
Sie können jetzt saubere, performante Datenmodelle ohne Synthetic Keys und Circular References erstellen. Für Production-Ready Apps vertiefen Sie diese Themen:
1. Optimale Modell-Architektur: Naming Conventions sind der erste Schritt zu systematischer Modellierung. Star Schema Design zeigt Ihnen wie Sie Enterprise-taugliche Datenmodelle aufbauen.
2. Performance-Optimierung: Saubere Modelle sind die Basis für schnelle Apps. QVD-Optimierung maximiert Load-Performance und Memory-Effizienz Ihrer Modelle.
3. Enterprise-Standards: Bei größeren Teams brauchen Sie systematische Governance. Data Governance Framework etabliert Standards und Qualitätssicherung für komplexe Projekte.
Was sind die nächsten Schritte im Kurs zu Synthetic Keys & Circular References in Qlik Sense?
Als nächstes: Star Schema in Qlik – Performance & Klarheit
Verwandte Themen: