LERNPFADE & KURSE

Flag-basierte Modellierung für Performance

Autor

Qlik Doktor

Oktober 13, 2025 · 5 Min. Lesezeit

📚 Qlik Sense Kurs – Artikel 18 von 28

        ← Vorheriger Artikel: Expression-Optimierung – Set Analysis vs IF()
Nächster Artikel: Data Quality Gates

Was ist Flag-basierte Modellierung? Berechnungen vom Frontend ins Script verlagern und als binäre Felder (0/1) speichern – für 5-10x bessere Performance! Dies ist die schnellste Methode zur Performance-Optimierung in Qlik Sense.

Was kannst Du über Flag-basierte Modellierung für Performance lernen?

Nach diesem Guide kannst Du:

  1. Flags im Script erstellen für maximale Performance.
  2. Flag-Kombinationen für komplexe AND-Logik durch Multiplikation nutzen.
  3. Die richtige Balance zwischen Flags und der Flexibilität von Set Analysis finden.
  4. Performance-Vorteile von Flags im Kontext der Qlik Cloud Architektur verstehen.

Zeitinvestment: 20 Min Lesen + 3 Std Hands-on
Quick Win: In 15 Minuten hast Du erste Performance-Verbesserungen

Wie funktioniert das Prinzip: Berechnen statt Filtern in Flag-basierter Modellierung?

Das Problem (Laufzeitauswertung): Die IF()-Funktion, z.B. Sum(If(Year = 2023, Amount)), evaluiert die Bedingung für jeden Record zur Laufzeit. Bei einer Million Datensätzen resultiert dies in **einer Million IF-Evaluierungen** und führt zu schlechter Performance.

Die Lösung (Vorberechnung): Der Flag wird **einmal** zentral im Script berechnet und als Feld gespeichert. Im Frontend erfolgt nur noch eine einfache Multiplikation!

// Im Script (EINMAL berechnet und in den Speicher geladen)
Facts_Sales:
LOAD
    *,
    If(Year(OrderDate) = 2023, 1, 0) as IsYear2023
FROM Sales;

// Im Frontend (einfache Arithmetik, keine IF-Evaluierung)
Sum(Amount * IsYear2023)

Erklärung:

  • Script: IsYear2023 wird EINMAL beim Laden für jeden Record berechnet und im speicheroptimierten Spaltenformat von Qlik gespeichert.
  • Frontend: Die Engine führt die schnellste Operation aus: Multiplikation. Amount × 0 (wenn nicht 2023) oder Amount × 1 (wenn 2023).
  • Vorteil: Die Berechnung profitiert von Caching und der optimierten internen Speicherstruktur.

Wie vergleicht sich die Performance bei Flag-basierter Modellierung?

Methode Code Ablauf Faktor (ca.)
IF() Sum(If(Year=2023, Amount)) Wird für jede Zeile neu berechnet. 8x langsamer
Set Analysis Sum({<Year={2023}>} Amount) Wird pro Visualisierung einmal berechnet, kann gecached werden.[1] 2.7x langsamer
Flag Sum(Amount * IsYear2023) Pure Multiplikation, bereits im Speicher fixiert. BEST!

Wichtig für Qlik Cloud: Wenn Sie die Komplexität Ihrer App durch Flags reduzieren, fällt sie in eine bessere Kategorie («Simple Apps» statt «Complex Apps»). Dies reduziert den Ressourcenbedarf und verbessert die Skalierbarkeit und Stabilität Ihrer Anwendung, da weniger komplexe Berechnungen im Frontend ausgeführt werden müssen.[2, 3]

Wie funktionieren Basis-Flags: Zeit-Perioden und Master Calendar?

Die häufigste und wichtigste Anwendung von Flags ist die Berechnung von Zeitperioden wie YTD (Year-to-Date) oder Vorjahr, da diese Filter oft von allen Nutzern verwendet werden.

Facts_Sales:
LOAD
    OrderID,
    Amount,
    //... weitere Felder

    // Current Period Flags
    If(Year(OrderDate) = Year(Today()), 1, 0) as IsCurrentYear,
    If(Year(OrderDate) = Year(Today()) - 1, 1, 0) as IsLastYear,

    // Period-to-Date Flags (YTD & MTD)
    If(OrderDate >= YearStart(Today()) AND
       OrderDate <= Today(), 1, 0) as IsYTD,
    If(OrderDate >= MonthStart(Today()) AND
       OrderDate <= Today(), 1, 0) as IsMTD,

    // Rolling Periods
    If(OrderDate >= AddMonths(Today(), -12) AND
       OrderDate <= Today(), 1, 0) as IsRolling12M

FROM
(ooxml, embedded labels);

Zentrale Verwaltung: Um die Erstellung dieser komplexen Zeit-Flags zu vereinfachen und zu standardisieren, empfehlen wir dringend die Arbeit mit einem Master Calendar, der diese binären Flags automatisch für Sie generiert.

Verwendung im Frontend:

// YTD Sales
Sum(Amount * IsYTD)

// Year over Year Growth
Sum(Amount * IsCurrentYear) / Sum(Amount * IsLastYear) - 1

Wie funktionieren Kategorie-Flags und Business-Logik bei der Flag-basierten Modellierung?

Flags sind auch ideal, um Geschäftslogik oder Schwellwerte zu kategorisieren, die im Frontend nur schwer dynamisch zu filtern sind.

Facts_Sales:
LOAD
    *,

    // Value Categories
    If(Amount >= 1000, 1, 0) as IsHighValue,

    // Margin Flags
    If((Amount - Cost) / Amount >= 0.3, 1, 0) as IsHighMargin,
    If((Amount - Cost) < 0, 1, 0) as IsNegativeMargin,

    // Order Flags
    If(ShipDate - OrderDate > 5, 1, 0) as IsDelayedShipment,
    If(ReturnDate > 0, 1, 0) as IsReturned

FROM
(ooxml, embedded labels);

Vorteile:

  • Konsistenz: Die Definition eines «High Value» Auftrags (Amount >= 1000) ist nun in der gesamten App konsistent.
  • Wartung: Ändert sich die Definition (z.B. von 1000 auf 1500), muss die Änderung nur einmal im Ladeskript vorgenommen werden.

Wie funktionieren Flag-Kombinationen mit Logik durch Multiplikation (AND)?

Der größte Performance-Gewinn entsteht, wenn Sie mehrere Bedingungen kombinieren, da hier Flags die komplizierte Set Analysis oder die sehr langsame IF()-Logik ersetzen.

// Im Script: Individuelle Flags sind bereits geladen
// IsYear2023, IsNorth, IsHighValue

// Im Frontend: Kombination
Sum(Amount * IsYear2023 * IsNorth * IsHighValue)

Erklärung der Multiplikation:

  • Wenn **ALLE** Bedingungen erfüllt sind (1 × 1 × 1), ist das Ergebnis 1, und der Amount wird summiert.
  • Wenn **EINE** Bedingung nicht erfüllt ist (z.B. 1 × 1 × 0), ist das Ergebnis 0, und der Amount wird ignoriert.

Vergleich: Diese Multiplikation ist in der Qlik Engine um ein Vielfaches schneller als die äquivalente Set Analysis Expression Sum({<Year={2023}, Region={'North'}, Amount={">1000"}>} Amount) oder die mehrfach verschachtelte IF()-Funktion.

Wann sollte man NICHT Flags verwenden?

Flags bieten maximale Performance, aber auf Kosten der Flexibilität.

Flags sind NICHT geeignet für:

  • Sehr dynamische Filter: Wenn der Filterwert vom Nutzer Ad-hoc in einem Schieberegler geändert wird (z.B. Top N Kunden). Hier ist Set Analysis die bessere Wahl.
  • User-spezifische Bedingungen: Wenn die Logik von der aktuellen Auswahl des Nutzers abhängt (z.B. «Umsatz außerhalb der aktuell ausgewählten Region»). Hierfür wird Set Analysis mit Identifiern wie {1} oder {$} verwendet.
  • Zu viele Flags: Wenn Sie mehr als 20 Flags pro Faktentabelle erstellen, kann die Tabelle unnötig aufgebläht und unübersichtlich werden.

Die Balance: Nutzen Sie Flags für **häufige, statische** Business-Regeln und Set Analysis für **flexible, ad-hoc** Analysen.

Was sind die Best Practices für Flag-basierte Modellierung zur Performance?

Verwenden Sie diese Checkliste, um Ihre Flag-basierte Modellierung zu optimieren:

✓ Performance:

  • [ ] Häufig verwendete Filter als Flags definieren.
  • [ ] Alle Zeit-Perioden (YTD, MTD, Rolling) als Flags aus dem Master Calendar generieren.
  • [ ] Komplexe Business-Logik und Schwellwerte vorberechnen.

✓ Naming:

  • [ ] Konsistente Präfixe verwenden (z.B. IsCurrentYear, HasDiscount).
  • [ ] Sprechende Namen für alle Teammitglieder gewährleisten.

✓ Wartung:

  • [ ] Die Business-Logik jedes Flags im Script kommentieren.
  • [ ] Nicht benötigte Flags beim nächsten Reload entfernen.

Was sind die nächsten Schritte für Flag-basierte Modellierung für Performance?

Du kannst jetzt Performance-optimierte Flags erstellen! Als nächstes vertiefen wir verwandte Themen:

1. Master Calendar: Die Erstellung von Time-Flags ist am einfachsten in Kombination mit einem Master Calendar. Lerne, wie Du diesen Kernbestandteil Deines Datenmodells aufbaust.

2. Data Quality: Selbst die schnellsten Flags sind nutzlos, wenn die Quelldaten Fehler enthalten. Der nächste Artikel, Data Quality Gates, zeigt, wie Du die Datenqualität absicherst.

Welche verwandten Themen gibt es im Kurs zur Flag-basierten Modellierung für Performance?