Erstellen einer On-Demand-Vorlage-App

Bei einer On-Demand-Vorlage-App handelt es sich um eine gewöhnliche Qlik Sense-App mit einem wesentlichen Unterschied: Ihr Ladeskript enthält Datenbindungsformeln, die verwendet werden, um die Anfragen bei den Datenquellen zu formulieren. Diese Datenbindungsformeln werden bei der Generierung von On-Demand-Apps verwendet, um Werte vom Auswahlstatus der Auswahl-App zu lesen und sie an das Skript der Vorlage-App zu binden, sodass die generierte App mit einer benutzerdefinierten Teilmenge von Daten geladen wird.

Die Vorlage-App stellt in der Regel eine Verbindung zur gleichen Datenquelle wie die Auswahl-App her. Das Ladeskript einer Auswahl-App lädt normalerweise aggregierte Daten, um das Datenvolumen zu reduzieren und nach wie vor interaktive Visualisierungen von wichtigen Dimensionen und Kennzahlen bieten zu können. Das Ladeskript einer Vorlagen-App verwendet Abfragen, die eine definierte Teilmenge detaillierter Daten laden.

Hinweis: Eine On-Demand-Vorlage-App lädt Daten nicht direkt. Der Versuch, Daten über die Vorlage-App zu laden, hat eine Fehlermeldung zur Folge. Die Verbindung der Vorlage-App muss gültig sein, aber um zu testen, ob die Verbindung ordnungsgemäß funktioniert, müssen Sie eine On-Demand-App erstellen. Beim Erstellen einer On-Demand-App wird das Ladeskript durch den On-Demand-App-Dienst geändert, um den Auswahlstatus der On-Demand-Auswahl-App zu laden. Wenn die On-Demand-App fehlerfrei erstellt wird, wissen Sie, dass die Verbindung in der Vorlage-App ordnungsgemäß funktioniert.
Hinweis: Behalten Sie bei der Entwicklung von On-Demand-Vorlage-Apps in Kubernetes die Größe Ihrer Apps im Hinterkopf. Je nach Ihrer Bereitstellung können Speichergrenzwerte vorliegen. Ebenso kann ein großes Speichervolumen bewirken, dass Ihre Cloud-Bereitstellung skaliert wird. Wenden Sie sich für weitere Informationen an Ihren Systemadministrator.

Struktur einer Vorlagen-App

Eine Vorlage-App ist mit einer Auswahl-App über einen Navigationslink für On-Demand-Apps verknüpft. Der App-Navigationslink umfasst Eigenschaften, die die Anzahl der abgefragten Datensätze steuern, wenn die On-Demand-App mit Daten geladen wird. Das Datenladeskript der Vorlagen-App enthält Datenbindungsformeln, die angeben, welche Felddaten aus der Auswahl-App zur Formulierung der Abfragen verwendet werden, die beim Laden von Daten in die On-Demand-App ausgegeben werden.

Hinweis: In der Qlik Sense Enterprise on Windows-Installation unter ProgramData\Qlik\Examples\OnDemandApp\sample finden Sie ein Beispiel für eine On-Demand-Vorlage-App. Diese Funktion ist in Kubernetes nicht verfügbar.

Die Datenbindungsformeln haben folgende Form:

$(od_FIELDNAME)

Das Präfix od_ wird verwendet, um den Auswahlstatus der Auswahl-App an das Ladeskript der On-Demand-App zu binden, die durch Kopieren der Vorlage-App erstellt wird. Der Teil des Datenbindungsausdrucks nach dem Präfix od_ muss ein Name sein, der einem Feld in der Auswahl-App entspricht. Wenn die On-Demand-App erstellt wird, wird der aktuelle Auswahlstatus der Auswahl-App verwendet, um die gewünschten Werte zum Binden der einzelnen Felder zu erhalten. Jede Instanz eines $(od_FIELDNAME)-Ausdrucks im Datenladeskript einer neu erstellten On-Demand-App wird durch eine Liste von Werten ersetzt, die für das entsprechende Feld im Auswahlstatus der Auswahl-App ausgewählt wurden.

Weitere Informationen zum Binden von Werten mithilfe von INLINE-load-Anweisungen finden Sie unter Bindungsformeln in On-Demand-Vorlage-Apps.

Für eine gültige SQL-Syntax muss die SELECT-Anweisung der Vorlage-App für das Filtern nach mehreren Werten eine IN-Bedingung verwenden. Es wird empfohlen, eine Subroutine zu schreiben, um die richtige WHERE-Bedingung zu erstellen:

SUB ExtendWhere(Name, ValVarName) LET T = Name & '_COLNAME'; LET ColName = $(T); LET Values = $(ValVarName); IF len(Values) > 0 THEN IF len(WHERE_PART) > 0 THEN LET WHERE_PART = '$(WHERE_PART) AND $(ColName) IN ( $(Values) )'; ELSE LET WHERE_PART = ' WHERE $(ColName) IN ( $(Values) )'; ENDIF ENDIF END SUB;

Vor dem Aufruf der ExtendWhere-Subroutine müssen Sie die WHERE_PART-Variable festlegen.

SET WHERE_PART = '';

Wenn die SQL-Anweisung zusätzlich zu den Bedingungen, die durch die Auswahl-App eingefügt werden, über eine unveränderte WHERE-Bedingung verfügen soll, fügen Sie eine 'WHERE <condition>' in die SET-Anweisung ein. Verwenden Sie andernfalls die einfache SET-Anweisung.

Im folgenden Beispiel wird gezeigt, wie die ExtendedWhere-Subroutine verwendet wird:

FOR EACH fldname IN 'ORIGIN', 'DEST', 'YEAR', 'QUARTER', 'ORIGIN_STATE_ABR', 'DEST_STATE_ABR' LET vallist = $(fldname); WHEN (IsNull(vallist)) LET vallist = ''; IF len(vallist) > 0 THEN CALL ExtendWhere('$(fldname)','vallist'); ENDIF NEXT fldname

Die Liste der Feldnamen muss den Namen der Felder entsprechen, die in jeder von Ihnen erstellten Feldbindung verwendet wird.

Sobald die Werteliste für jedes Feld erstellt wurde, kann eine SELECT-Anweisung erstellt werden. Hier ein Beispiel:

SQL SELECT "MKT_ID", "YEAR", "QUARTER", "ORIGIN", "ORIGIN_STATE_ABR", "DEST", "DEST_STATE_ABR", "TICKET_CARRIER", "FARE_CLASS", "PASSENGERS", "DISTANCE", 1 AS "FLIGHT_COUNT" FROM "SAPH7T"."/QT/AIRPORT_FACT" $(WHERE_PART);

Der $(WHERE_PART)-Teil der SELECT-Anweisung wird um die WHERE-Bedingung erweitert, die durch die Ausführung der oben dargestellten FOR-NEXT-Schleife generiert wurde. Die Liste der Spaltenformeln, die auf das SELECT-Schlüsselwort folgen, muss geändert werden, damit sie den Spalten Ihrer spezifischen Datenbanktabelle entspricht.

Warnung: Verwenden Sie möglichst nicht die Namen der Felder aus dem Vorlage-App-Modell, wenn Sie Bindungsvariablen für On-Demand-Apps erstellen. Im Skript definierte Variablen werden in dem Vorlage-App-Modell zur Verfügung gestellt, auf das beim Erstellen von Datenvisualisierungen verwiesen wird. Durch die Auswahl von Bindungsvariablen für On-Demand-Apps, die sich nicht mit Feldern im Modell überschneiden, wird eine unbeabsichtigte Verwechslung zwischen den Feldern im Vorlage-App-Modell und den Bindungsvariablen für On-Demand-Apps im Datenladeskript verhindert. Eine gute Vorgehensweise ist die Einrichtung eines Präfixes für Bindungsvariablen für On-Demand-Apps. Verwenden Sie beispielsweise X_ORIGIN anstelle von ORIGIN.

Single Sign-on (SSO)

On-Demand-Apps können single sign-on (SSO) mit Datenquellen verwenden, die SSO unterstützen. Die Engine und die Datenquelle müssen so konfiguriert werden, dass SSO zulässig ist.

Hinweis: Diese Funktion ist in Kubernetes nicht verfügbar.

Weitere Informationen finden Sie unter Konfigurieren von SAP HANA für SAML Single Sign-On mit Qlik Sense (nur auf Englisch) und Konfigurieren von Cloudera Impala für Single Sign-On (nur auf Englisch).

Nachdem die Engine und die Datenquelle für SSO konfiguriert wurden, muss die Vorlagen-App SSO aktivieren. Dazu wird dem Skript der Vorlagen-App folgende Syntax hinzugefügt:

///!ODAG_SSO

Der On-Demand App Service analysiert das Skript beim Generieren einer On-Demand-App und bei jeder erneuten Ausführung des Skripts.

Wird eine On-Demand-App mit SSO geladen, so wird die Identität des Endbenutzers an die Datenquelle gesendet. Der Endbenutzer muss Zugriff auf die in den Datenverbindungen der Vorlagen-App verwendeten Quellen haben. Es werden nur die Daten geladen, auf die dieser Benutzer zugreifen kann, selbst wenn ein größerer Satz von Daten ausgewählt wird.

Warnung: On-Demand-Apps, die aus Vorlagen-Apps generiert werden, die single sign-on (SSO) verwenden, können nicht veröffentlicht werden.

Neuladen von Knoten für Vorlage-Apps

Administratoren können steuern, wo On-Demand-Apps in einer Umgebung mit mehreren Knoten neu geladen werden, indem Lastenausgleichsregeln für Vorlage-Apps festgelegt werden. Wenn eine Lastenausgleichregel festgelegt wird, werden alle über Links zur Vorlage-App erstellten Apps gemäß der Regel erstellt, die auf die Vorlage-App zutrifft. Weitere Informationen finden Sie unter Verwalten von On-demand-Apps (nur auf Englisch).

Hinweis: Diese Funktion ist in Kubernetes nicht verfügbar.