Zu Hauptinhalt springen

Bindungsformeln in On-Demand-Vorlage-Apps

Datenbindungen in einer Vorlagen-App geben an, welche Daten aus einer entsprechenden Auswahl-App zur Formulierung der Abfragen verwendet werden, die beim Laden von Daten in eine On-Demand-App ausgegeben werden.

Die Grundform von Bindungsformeln ($(odag_FIELDNAME)) ist nicht die einzige verfügbare Methode zum Binden von Formeln. Es können auch andere Zusätze verwendet werden, um die Auswahl zu verfeinern und sicherzustellen, dass die Vorlage-App die Daten korrekt lädt.

Warnung: Vorlagen-Apps, die ursprünglich mithilfe der Qlik Sense-Erweiterung für die On-demand App Generation erstellt wurden, sollten geändert werden, damit der nachfolgend dargestellte Ansatz für die Bindung einer großen Anzahl ausgewählter Werte eines Felds genutzt werden kann.

Verfügbare Bindungszusätze

Die allgemeine Zusatzform lautet odag[s|o][n][cnt], wobei gilt:

  • s - nur ausgewählte Werte einschließen
  • o - nur optionale Werte einschließen
  • n - die numerische Version auswählen, standardmäßig ohne Anführungszeichen
  • cnt - die Anzahl der Werte anstelle von tatsächlichen Werten einfügen

Die folgende Tabelle enthält eine Liste aller Versionen der verfügbaren Bindungszusätze. Die Beispiele gehen von einem Feld mit dem Namen MyField mit 1,2,3 als ausgewählten Werten (grüne Werte) und 4 als optional ausgewähltem Wert (weißer Wert) aus.

Bindungszusätze
Zusatz Beschreibung Beispiel Ersetzt durch
odag_ Ersetzt durch die ausgewählten (grünen) und optionalen (weißen) Werte. Wählt die Textversion der Werte. Dies ist der Standardzusatz für Stringwerte. $(odag_MyField) '1','2','3','4'
odagcnt_ Ersetzt durch die Anzahl der Werte in der entsprechenden odag_-Bindung. Dieser Zusatz wird für die Abfrageoptimierung verwendet. $(odagcnt_MyField) 4
odagn_

Ersetzt durch die ausgewählten (grünen) und optionalen (weißen) Werte. Wählt die numerische Version der Werte. Dies ist der Standardzusatz für numerische Werte.

Hinweis:

Wenn für das Datenmodell keine ausgewählten oder optionalen Werte des Felds vorhanden sein können, muss ein „noValue“ in der Formel angegeben sein. Hier ein Beispiel: $(odagn_MyField){"noValue":"-99999"}.

Weitere Informationen finden Sie unter Ändern der Anführungszeichen und der Trennzeichen für Werte.

$(odagn_MyField) 1,2,3,4
odagncnt_ Ersetzt durch die Anzahl der Werte in der entsprechenden odagn_-Bindung. Dieser Zusatz wird für die Abfrageoptimierung verwendet. $(odagncnt_MyField) 4
odago_

Ersetzt durch die optionalen (weißen) Werte. Wählt die Textversion der Werte.  Dieser Zusatz wird für die Abfrageoptimierung verwendet.

Optimierung für große Datenbanken.

$(odago_MyField) '4'
odagocnt_ Ersetzt durch die Anzahl der Werte in der entsprechenden odago_-Bindung. Dieser Zusatz wird für die Abfrageoptimierung verwendet. $(odagocnt_MyField) 1
odagon_

Ersetzt durch die optionalen (weißen) Werte. Wählt die numerische Version der Werte. Dieser Zusatz wird für die Abfrageoptimierung verwendet.

Optimierung für große Datenbanken.

$(odagon_MyField) 4
odagoncnt_ Ersetzt durch die Anzahl der Werte in der entsprechenden odagon_-Bindung. Dieser Zusatz wird für die Abfrageoptimierung verwendet. $(odagoncnt_MyField) 1
odags_

Ersetzt durch die ausgewählten (grünen) Werte. Wählt die Textversion der Werte.  Dieser Zusatz wird für die Abfrageoptimierung verwendet.

Optimierung für große Datenbanken.

$(odags_MyField) '1','2','3'
odagscnt_ Ersetzt durch die Anzahl der Werte in der entsprechenden odags_-Bindung. Dieser Zusatz wird für die Abfrageoptimierung verwendet. $(odagscnt_MyField) 3
odagsn_

Ersetzt durch die ausgewählten (grünen) Werte. Wählt die numerische Version der Werte. Dieser Zusatz wird für die Abfrageoptimierung verwendet.

Optimierung für große Datenbanken.

$(odagsn_MyField) 1,2,3
odagsncnt_ Ersetzt durch die Anzahl der Werte in der entsprechenden odagsn_-Bindung. Dieser Zusatz wird für die Abfrageoptimierung verwendet. $(odagsncnt_MyField) 3
Hinweis:

Leere Werte werden in den Textversionen herausgefiltert. Nicht numerische und NaN-Werte werden in den numerischen Versionen herausgefiltert.

Optimierung für große Datenbanken

Die Zusätze odags_ und odagsn_ sind für die Abfrageoptimierung vorgesehen. Wenn in den gebundenen Feldern keine Auswahlen vorhanden sind, schließt odag_ alle Werte ein, während odags_ keine Werte einschließt. In einigen Fällen ist es effizienter, die Zusätze odags_ und odagscnt_ zu verwenden. Damit können Sie testen, ob der Wertesatz leer ist. Beispielsweise ist Folgendes effizienter, wenn in MyField keine Auswahlen getroffen wurden, anstatt alle Werte in odag_MyField zu testen:

WHERE ($(odagscnt_MyField)=0 OR MyColumn IN ($(odags_MyField)))

odags_ kann nicht verwendet werden, wenn in der Auswahl-App ein alternatives Feld vorhanden ist, aus dem ausgewählt werden kann und das kein On-Demand-Feld ist. Wenn der Benutzer zum Beispiel Auswahlen in CountryName trifft, aber die Bindungsformel im zugeordneten Feld CountryCode vorhanden ist, kann odags_ nicht verwendet werden. In diesen Fällen kann stattdessen odago_ verwendet werden. Wenn keine Werte in einer odago_-Bindung vorhanden sind, kann dies entweder bedeuten, dass alle Werte oder dass keine Werte eingeschlossen werden sollen.

Bindung numerischer Werte

Wenn die an die On-Demand-App gebundenen Daten aus Nummern anstatt Strings bestehen, ist es hilfreich, die Anführungszeichensetzung für numerische Werte zu deaktivieren. Beispiel: Wenn die Verkaufsdatensätze eine numerische DAY_OF_WEEK-Spalte enthalten und Sie möchten, dass der Benutzer der Auswahl-App beliebige Kombinationen von DAY_OF_WEEK auswählen kann, erweitern Sie die Aggregierungsabfrage, die für das Laden der Auswahl-App verwendet wird, sodass DAY_OF_WEEK sowohl in der Liste SELECT als auch in der Liste GROUP BY enthalten ist. Wenn DAY_OF_WEEK-Werte bei der Auswahl in Anführungszeichen gesetzt werden, könnte ein Laufzeitfehler auftreten, falls die Datenbank keine automatische Umwandlung von Stringwerten in numerische Werte unterstützt.

Um dieses Problem zu lösen, können Sie eine numerische Version des Suffixes für die Bindungsformel verwenden. Dadurch wird erzwungen, dass die Feldbindung die numerischen Werte aus der Auswahl-App statt der Stringwerte verwendet. Folgende numerische Versionen sind vorhanden:

  • odagn_
  • odagon_
  • odagsn_

Wenn Sie numerische Versionen verwenden, werden die Werte aus dem numerischen Teil der dualen Werte übernommen, in denen ausgewählte Werte gespeichert sind, und die Werte umfassen standardmäßig keine Anführungszeichen.

Anforderung für eine bestimmte Anzahl von Auswahlen

In manchen Situationen kann die Anforderung notwendig sein, dass die On-Demand-App-Abfrage eine bestimmte Anzahl oder einen bestimmten Bereich von Werten für ein bestimmtes Feld enthält. Beispiel: Wenn die Abfrage der On-Demand-App eine BETWEEN-Bedingung enthält, mit der alle Verkäufe zwischen einem Start- und Enddatum abgerufen werden, kann die Bindungsformel für das Feld YEARQUARTER eine Suffix-Syntax von [2] haben, die erfordert, dass genau zwei Werte für YEARQUARTER ausgewählt werden, also:

$(odag_YEARQUARTER)[2]

Der Navigationspunkt für On-Demand-Apps in der Auswahl-App bleibt solange deaktiviert, bis genau zwei Werte von YEARQUARTER ausgewählt sind. Eine Nachricht wird angezeigt, die darauf hinweist, dass genau zwei Werte von YEARQUARTER ausgewählt werden müssen.

Durch die Beschränkungen der Auswahlmenge wird eine vorausgesetzte Bindung zwischen der Auswahl-App und der On-Demand-App erstellt. Das ist anders als bei Bindungsformeln, die keine Mengenbeschränkungen verwenden. Beispiel: Wenn das Skript der Vorlage-App eine Bindungsformel ohne eine Mengenbeschränkung enthält, wie in:

$(odag_MYFIELD)

ist es nicht erforderlich, dass die Auswahl-App ein Feld mit dem Namen MYFIELD enthält oder dass ausgewählte Werte aus diesem Feld enthalten sein müssen, wenn das Feld nicht existiert. Wenn die Auswahl-App kein Feld mit dem Namen MYFIELD enthält oder der Benutzer keine Auswahl in diesem Feld vornimmt, kann es dazu kommen, dass der Navigationspunkt für On-Demand-Apps aktiviert wird, wenn andere Optionen ausgewählt werden, um die Bedingung für Werte mit einem Datensatzgrenzwert zu erfüllen.

Wenn die Bindungsformel andererseits wie folgt lautet:

$(odag_MYFIELD)[1+]

sind jetzt zwei Anforderungen vorhanden, die für die Auswahl-App gelten:

  • Die Auswahl-App muss ein Feld mit dem Namen MYFIELD enthalten.
  • Der Benutzer muss mindestens einen Wert für MYFIELD auswählen.

Diese Art von Bindungsformel muss mit Vorsicht verwendet werden, weil dadurch eingeschränkt wird, welche Auswahl-Apps mit der Vorlage-App verwendet werden können. Sie sollten diese Mengenbeschränkung nicht für Bindungen einer Vorlage-App verwenden, es sei denn, Sie sind sicher, dass Sie diese Auswahlmengenanforderung bei allen Auswahl-Apps anwenden möchten, die mit dieser Vorlage-App verknüpft sind.

Zur Durchführung des Datenbindungsvorgangs nutzt der On-Demand-App-Dienst ein Verfahren zum Ersetzen von Zeichenfolgen, das Kommentare im Skript nicht berücksichtigt. Das bedeutet, Sie sollten keine Bindungsformeln in Kommentaren verwenden, es sei denn, diese Kommentare sollen die Liste der gebundenen Werte enthalten, die auf die App-Generierung folgen.

Andere Mengenbeschränkungen sind möglich. In der folgenden Tabelle werden die verschiedenen Kombinationen von Beschränkungen der Auswahlmenge zusammengefasst.

Verschiedene Kombinationen von Beschränkungen der Auswahlmenge
Beschränkungsmuster Auswahlanforderung
$(odag_YEARQUARTER)[2] Genau 2 Werte von YEARQUARTER müssen ausgewählt werden.
$(odag_YEARQUARTER)[2-4] 2 bis 4 Werte von YEARQUARTER müssen ausgewählt werden.
$(odag_YEARQUARTER)[2+] Mindestens 2 Werte von YEARQUARTER müssen ausgewählt werden.
$(odag_YEARQUARTER)[2-] Höchstens 2 Werte von YEARQUARTER können ausgewählt werden.
Hinweis: Die Überprüfung, mit der ermittelt wird, ob alle Mengenbeschränkungen in der Vorlage-App erfüllt sind, wird während des Vorgangs der App-Generierung durchgeführt. Wird eine Mengenbeschränkung nicht erfüllt, wird die Anfrage zum Generieren der App zurückgewiesen und es wird eine Fehlermeldung angezeigt.

Ändern der Anführungszeichen und der Trennzeichen für Werte

Wenn eine Liste mit Werten, die aus einem Feld in einer Auswahl-App ausgewählt wurden, in ein Skript einer Vorlage-App eingefügt wird, sind die Werte von einfachen Anführungszeichen umgeben und durch Kommas getrennt. Dies sind die standardmäßig verwendeten Anführungs- und Trennzeichen. Diese Werte können in der Syntax, die an die Bindungsanweisung für jedes Feld angehängt ist, geändert werden. Hier ein Beispiel:

$(odag_ORIGIN){"quote": "|", "delimiter": ";"}

Diese neuen Werte werden dann verwendet, wenn die Liste der Bindungswerte, die aus der Auswahl-App entnommen werden, zusammengestellt wird. Wenn es sich beispielsweise bei den ausgewählten Werten um die ersten drei Monate des Jahres handelt, wird die Liste wie folgt erstellt:

|January|;|February|;|March|

Die Standardwerte für Anführungs- und Trennzeichen können für die meisten standardmäßigen SQL-Datenbanken verwendet werden. Für einige SQL-Datenbanken können sie aber möglicherweise nicht genutzt werden, und für viele dynamische Datenquellen wie NoSQL und REST sind sie ebenfalls nicht einsetzbar. Bei derartigen Datenquellen müssen Sie diese Bindungsformel anhängen, um die Anführungs- und Trennzeichen zu ändern.

Die folgende Tabelle enthält Formatparameter zum Ändern von Anführungszeichen und Trennzeichen.

Formatparameter
Parameter Standardwert Definition
quote

' (einfaches Anführungszeichen) für Textzusätze

für numerische Zusätze leer

Wird vor und nach jedem Wert hinzugefügt
delimiter , (Komma) Wird zwischen allen Werten hinzugefügt
quoteReplace '' (doppelte Anführungszeichen)

Wenn der Wert nicht leer ist und das Anführungszeichen nicht leer ist, werden alle Vorkommen des Anführungszeichens innerhalb der Werte durch den angegegbenen String ersetzt.

Hinweis: quoteReplace wird als Parameter für numerische Zusätze wie odagn_ nicht unterstützt. quoteReplace wird von numerischen Zusätzen ignoriert.
noValue (leer)

Wenn keine Werte für ein Feld ausgewählt sind, wird stattdessen dieser Wert verwendet. Dieser Parameter ist nützlich, wenn keine Werte für ein bestimmtes Feld in der Auswahl vorhanden sein können.

Der Wert muss auf einen Wert festgelegt sein, der in den Quelldaten nicht vorhanden ist. Verwenden Sie für numerische Werte beispielsweise einen negativen Wert, wenn alle Werte in der Datenbank positiv sind.

Hinweis: Für Werte ohne Anführungszeichen muss noValue angegeben werden, wenn ausgewählte Werte des Felds ein leerer Datensatz sein können.

Die folgenden Tabellen enthalten die Formatspezifikationen und generierten Werte für odag_ und odagn_. Die generierten eingefügten Werte basieren auf den Standarddatenwerten von VAL1, VAL2.

Beispielformatspezifikationen und generierte Werte für odag_
Formatspezifikation Beschreibung Generierte eingefügte Werte
nicht angegeben

Kommagetrennte Werteliste, ' als Anführungszeichen.

'VAL1','VAL2'
{"quote": "", "delimiter": ""} Zusammengefasste Werte VAL1VAL2

{"quote": "X", "delimiter": "Y"}

Werte mit X als Anführungszeichen, getrennt durch Y.  XVAL1XYXVAL2X
{"quote": "XX", "delimiter": "YY"} Werte mit XX als Anführungszeichen, getrennt durch YY.   XXVAL1XXYYXXVAL2XX
{"quote": "X"} Werte mit X als Anführungszeichen, getrennt durch , (Standard)  XVAL1X,XVAL2X
{"delimiter": "YY"} Werte mit ' als Anführungszeichen (Standard), getrennt durch YY. 'VAL1'YY'VAL2'
{"quote": ""} Werte ohne Anführungszeichen, getrennt durch ,. VAL1,VAL2
{"quote": "A", "quoteReplace": "\\A"}

Werte mit A als Anführungszeichen, getrennt durch Komma (Standard). Ein Wert in diesem Feld wird durch \A ersetzt..

Hinweis:

In diesem Beispiel muss ein doppeltes \ vorhanden sein, da \ das Escape-Zeichen im JSON-Format ist.

AV\AL1A,AV\AL2A
Beispielformatspezifikationen und generierte Werte für odagn_
Formatspezifikation Beschreibung Generierte eingefügte Werte
nicht angegeben

Kommagetrennte Liste von Werten ohne Anführungszeichen. Beachten Sie, dass numerische Werte verwendet werden.

VAL1,VAL2
{"delimiter": "YY"} Werte ohne Anführungszeichen, getrennt durch YY VAL1YYVAL2
{"quote": "A", "quoteReplace": "\\A"} Im Gegensatz zum Zusatz odag_ wird der Parameter quoteReplace ignoriert. AVAL1A,AVAL2A

Verarbeitung einzelner Werte

Wenn die individuelle Verarbeitung von Feldwerten erforderlich ist, können Sie eine Inline-Methode verwenden, um Werte in der Variablen Values zu generieren und zufällige Verarbeitung mit Replace oder einer anderen Funktion durchzuführen. Im Beispiel unten wird Replace mit Platzhalterwerten verwendet.

MyTempBindingData: LOAD * INLINE [VAL $(odag_MyField){"quote": "", "delimiter": "\n"} ]; _TempTable: LOAD Concat(chr(39) & Replace(text, from_str, to_str) & chr(39), ',') as CombinedData Resident MyTempBindingData; LET Values = Peek('CombinedData',0,'_TempTable'); drop table _TempTable; drop table MyTempBindingData;