Conférence mondiale QlikWorld 2020. Rejoignez-nous et découvrez comment tirer le meilleur parti de vos données. Faites vite. Enregistrez-vous maintenant et faites des économies.

Création d'une application modèle On-demand

Une application modèle On-demand est une application Qlik Sense standard à une grande différence près : son script de chargement comprend des expressions de liaison de données utilisées pour formuler les requêtes portant sur les sources de données. Ces expressions de liaison de données sont utilisées au moment de la génération de l'application On-demand. Elles permettent de lire les valeurs à partir de l'état de sélection de l'application et de lier celles-ci au script de l'application modèle afin que l'application générée soit chargée avec un sous-ensemble des données contrôlé par l'utilisateur.

En général, l'application modèle se connecte à la même source de données que l'application de sélection. Le script de chargement d'une application de sélection charge habituellement des données agrégées afin de réduire les volumes de données tout en offrant cependant des visualisations interactives de dimensions et de mesures importantes. Le script de chargement d'une application modèle utilise des requêtes qui chargent un sous-ensemble contrôlé de données plus granulaires.

Remarque: Une application modèle On-demand ne charge pas directement les données. Toute tentative de chargement de données à partir de l'application modèle entraînera une erreur. La connexion de l'application modèle doit être valide, mais il est nécessaire de générer une application On-demand pour tester son bon fonctionnement. Lorsqu'une application On-demand est générée, le script de chargement est modifié par le service On-demand app de façon à charger l'état de sélection de l'application de sélection On-demand. Si la génération de l'application On-demand se déroule sans erreur, cela signifie que les connexions des applications de sélection et modèle fonctionnent correctement.

Structure d'une application modèle

Une application modèle est associée à une application de sélection par un lien de navigation d'application On-demand. Ce lien de navigation inclut des propriétés permettant de contrôler le nombre d'enregistrements interrogés lorsque l'application On-demand est chargée avec des données. Le script de chargement de l'application modèle comprend des expressions de liaison de données qui indiquent quelles données de champ de l'application de sélection sont utilisées pour formuler les requêtes émises au moment du chargement des données dans l'application On-demand.

Remarque: Un exemple d'application modèle On-demand est disponible dans l'installation de Qlik Sense, sous ProgramData\Qlik\Examples\OnDemandApp\sample.

Les expressions de liaison de données suivent la forme ci-dessous :

$(od_FIELDNAME)

Le préfixe od_ est utilisé pour lier l'état de sélection de l'application de sélection au script de chargement de l'application On-demand, qui est créé via la copie de l'application modèle. Dans l'expression de liaison de données, le préfixe od_ doit être suivi par un nom correspondant à un champ figurant dans l'application de sélection. Lorsque l'application On-demand est générée, l'état de sélection actif de l'application de sélection est utilisé pour définir les valeurs souhaitées à lier pour chaque champ. Chaque occurrence d'une expression $(od_FIELDNAME) figurant dans le script de chargement de l'application On-demand qui vient d'être créée est remplacée par la liste des valeurs choisies pour le champ correspondant dans l'état de sélection de l'application de sélection.

Pour en savoir plus sur la liaison de valeurs à l'aide des instructions de chargement INLINE, voir Expressions de liaison dans les applications modèles On-demand.

Pour respecter la syntaxe SQL, l'instruction SELECT relative au filtrage de plusieurs valeurs de l'application modèle doit utiliser une clause IN. Il est recommandé de rédiger une sous-routine pour créer la clause WHERE correcte :

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;

Avant d'appeler la sous-routine ExtendWhere, vous devez définir la variable WHERE_PART.

SET WHERE_PART = '';

Si vous souhaitez que l'instruction SQL comprenne une clause WHERE invariable en plus des clauses qui seront insérées par l'application de sélection, ajoutez 'WHERE <condition>' dans l'instruction SET. Sinon, utilisez l'instruction SET toute simple.

L'exemple suivant illustre la façon dont la sous-routine ExtendedWhere est utilisée :

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

La liste des noms de champ devrait correspondre aux noms des champs utilisés dans chacune des liaisons de champ que vous créez.

Une fois que vous avez élaboré la liste de valeurs pour chaque champ, vous pouvez rédiger une instruction SELECT. Par exemple :

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);

La partie $(WHERE_PART) de l'instruction SELECT sera étendue de façon à inclure la clause WHERE générée par l'exécution de la boucle FOR-NEXT illustrée ci-dessus. Il convient de modifier la liste des expressions de colonne qui suivent le mot-clé SELECT pour qu'elle corresponde exactement aux colonnes de la table de votre base de données.

Avertissement: Évitez d'utiliser les noms des champs figurant dans l'application modèle lorsque vous définissez les variables de liaison de l'application On-demand. Les variables définies dans le script deviennent disponibles dans l'application modèle référencée au moment de la création des visualisations de données. En choisissant des variables de liaison d'application On-demand qui ne se superposent pas aux champs du modèle, vous éviterez de créer une confusion involontaire entre les champs de l'application modèle et ces variables de liaison dans le script de chargement de données. Il est recommandé de définir un préfixe pour les variables de liaison des applications On-demand. Utilisez par exemple X_ORIGIN au lieu d'ORIGIN.

Authentification unique (SSO)

Les applications On-demand peuvent utiliser single sign-on (SSO) avec des sources de données qui prennent en charge SSO. Il convient de configurer le moteur et la source de données de façon à autoriser SSO.

Pour plus d'informations, voir les rubriques Configuring SAP HANA for SAML Single Sign-On with Qlik Sense et Configuring Cloudera Impala for Single Sign-On.

Une fois le moteur et la source de données configurés pour SSO, activez la fonction SSO dans l'application modèle en ajoutant la syntaxe suivante dans le script de l'application modèle :

///!ODAG_SSO

Le service On-Demand App Service analyse le script lorsqu'une application On-demand est générée et chaque fois qu'elle est rechargée.

Lorsqu'une application On-demand est chargée avec SSO, l'identité de l'utilisateur final est envoyée à la source de données. L'utilisateur final doit avoir accès aux sources utilisées dans les connexions de données de l'application modèle. Seules les données auxquelles l'utilisateur a accès sont chargées dans ces sources, même si un ensemble de données plus vaste est sélectionné.

Avertissement: Il est impossible de publier les applications On-demand générées à partir des applications modèles utilisant single sign-on (SSO).

Rechargement de nœuds pour les applications modèles

Les administrateurs peuvent contrôler l'emplacement de rechargement des applications On-demand dans un environnement à plusieurs nœuds en définissant des règles d'équilibrage de charge pour les applications modèles. Lorsqu'une règle d'équilibrage de charge est définie, toutes les applications générées à partir des liens vers l'application modèle sont chargées en fonction de la règle régissant l'application modèle. Pour plus d'informations, voir Managing on-demand apps.