Beispiele: Alternative Status in Diagrammformeln

Diese Beispiele dienen dazu, die besten Praktiken zur Verwendung alternativer Status durch QlikView Developer bzw. starke QlikView Power User aufzuzeigen. Diese Beispiele finden Sie in der Datei: Alternate States Functionality.qvw.

Auswahlen zwischen Status synchronisieren

Die folgenden Formeln können in einem einzigen Diagramm verwendet werden:

count({$} DISTINCT [Rechnungsnummer)

count({State1} DISTINCT [Rechnungsnummer])

count({State2} DISTINCT [Rechnungsnummer])

Bei dieser Methode gibt es ein Problem; der QlikView Developer muss die Auswahlen duplizieren (Listboxen und Multiboxen), und zwar für alle drei Status, so dass der Endanwender die entsprechenden Auswahlen für die verschiedenen Status treffen kann. Häufig wird es so sein, dass der QlikView Developer eine „gemeinsame“ Auswahl für alle Status schaffen möchte. Damit kann der Endanwender den Inhalt für die verschiedenen Diagramme festlegen und dann die spezifischen Auswahlen nutzen, um die Unterschiede zwischen den Status aufzuzeigen. Die Aggregierung mit Auswahlformeln kann bei Status dazu genutzt werden, bestimmte Auswahlen zwischen den Status konsistent zu halten.

count({Status1<Jahr = $::Jahr, Monat = $::Monat>} DISTINCT [Rechnungsnummer])

count({Status2<Jahr = $::Jahr, Monat = $::Monat>} DISTINCT [Rechnungsnummer])

Der QlikView Developer hält die Auswahlen für Jahr und Monat in Status1 und Status2 synchron mit den Auswahlen für Jahr und Monat im Standardstatus. Der QlikView Developer kann Elemente zu den eingestellten Modifikatoren nach Bedarf hinzufügen, um sogar noch weitere Felder unter den Status konsistent zu halten.

Operatoren für Auswahlformeln

Es ist möglich, Operatoren (+, *, -, /) für Auswahlformeln für Status zu nutzen. Die folgenden Formeln sind gültig und zählen die distinkten Rechnungsnummern, die entweder im Standardstatus oder in Status1 sind.

Beispiele:  

count({$ + Status1} DISTINCT [Rechnungsnummer])
zählt die distinkten Rechnungsnummern in der Gesamtheit von <Standard>-Status und Status1.

count({1 - Status1} DISTINCT [Rechnungsnummer])
zählt die distinkten Rechnungsnummern, die nicht in Status1 sind.

count({Status1 * Status2} DISTINCT [Rechnungsnummer])
zählt die distinkten Rechnungsnummern, die sowohl im <Standard>-Status wie in Status1 sind.

Hinweis: Die Verwendung von Operatoren für Auswahlformeln auf diese Weise sollte mit Vorsicht erfolgen. Manchmal kann es unerwartete Ergebnisse geben. Der Grund dafür ist, dass die Auswahlen in einem bestimmten Status einen Datensatz erzeugen, der möglicherweise nicht vollständig kompatibel mit dem Datensatz/den Datensätzen ist, mit dem/denen er kombiniert wird. Dies trifft insbesondere auf komplexere Datenmodelle zu.

Implizite Feldwert-Definitionen

Eine andere Möglichkeit der Verwendung von Operatoren für Auswahlformeln steht mit den Elementfunktionen P() und E() zur Verfügung. Diese Funktionen sind nur innerhalb von Auswahlformeln verfügbar.

Beispiele:  

count({$<[Rechnungsnummer] = p({Status1} [Rechnungsnummer])>} DISTINCT [Rechnungsnummer])
Diese Formel zählt die distinkten Rechnungsnummern im <Standard>-Status auf Basis der möglichen Rechnungsnummern, die in Status1 verfügbar sind.

Sie ist fast, aber nicht ganz, identisch mit der folgenden Formel:

count({$<[Rechnungsnummer] = Status::[Rechnungsnummer>} DISTINCT [Rechnungsnummer])

Der Unterschied zwischen den Formeln ist, dass bei der ersten die wählbaren Werte für die Rechnungsnummer von Status1 an den Standard-Status weitergegeben werden. Bei der zweiten Formel werden die ausgewählten Werte von Status1 an den Standard-Status weitergegeben. Wenn der Benutzer in Status1 keine Rechnungsnummern ausgewählt hat, werden keine Rechnungsnummer-Werte an den Standard-Status weitergegeben.

Operatoren für Auswahlformeln werden am besten innerhalb von Modifikatoren verwendet. Die folgende Formel findet den Schnittpunkt der möglichen Rechnungsnummern von Status1 und Status2 und gibt diese Werte an die Rechnungsnummern im Standard-Status weiter.

Beispiele:  

count({$<[Rechnungsnummer] = p({Status1} [Rechnungsnummer]) * p({Status2} [Rechnungsnummer])>} DISTINCT [Rechnungsnummer])
Die Formel zum Finden des Schnittpunktes der Rechnungsnummern zwischen <Standard>-Status und Status1 ist:

count({$<[Rechnungsnummer] = p({$} [Rechnungsnummer]) * p({Status1} [Rechnungsnummer])>} DISTINCT [Rechnungsnummer])

Diese Formel mag verwirrend erscheinen, weil sie sowohl in der Elementfunktion wie auch in einem festgelegten Identifikator einen Status verwendet (in diesem Fall <Standard>). Denken Sie daran, dass die Elementfunktion p($) die wählbaren Werte an den Standard-Status liefert. Der festgelegte/Status-Identifikator {$} wird vom Ergebnis der Elementfunktionen geändert. Alle aktuell im Standard-Status vorhandenen Rechnungsauswahlen werden von den Werten aus dem Schnittpunkt der Elementfunktionen überschrieben.

Es ist zu beachten, dass obige Formel immer noch nicht ganz korrekt ist, da sie nicht synchron mit den allgemeinen Auswahlen zwischen dem Standard-Status und Status1 ist. Unten finden Sie eine Formel, die dies leistet:

Beispiele:  

count({$<[Rechnungsnummer] = p({$} [Rechnungsnummer]) * p({Status1<Jahr = $::Jahr, Monat = $::Monat>} [Rechnungsnummer])>} DISTINCT [Rechnungsnummer])

Wie schon zuvor kann der QlikView Developer Felder zum Modifikator hinzufügen, um die Auswahlen zwischen den verschiedenen Status konsistent zu halten.