Accéder au contenu principal

Expressions de liaison dans les applications modèles On-demand

Les liaisons de données figurant dans une application modèle indiquent quelles données d'une application de sélection correspondante sont utilisées pour formuler les requêtes émises au moment du chargement des données dans l'application On-demand.

Le format de base des expressions de liaison--$(odag_FIELDNAME)--n'est pas la seule méthode disponible pour lier des expressions. Il est possible d'utiliser d'autres préfixes pour affiner les sélections et s'assurer que l'application modèle charge correctement les données.

Avertissement: Il convient de modifier les applications modèles initialement créées à l'aide de l'extension Qlik Sense pour On-demand App Generation de façon qu'elles adoptent l'approche illustrée ci-dessous pour lier un grand nombre de sélections à partir d'un champ.

Préfixes de liaison disponibles

Le format de préfixe général est odag[s|o][n][cnt], où :

  • s - inclut uniquement les valeurs sélectionnées
  • o - inclut uniquement les valeurs facultatives
  • n - sélectionne la version numérique, par défaut non encadrée de guillemets
  • cnt - insère le nombre de valeurs au lieu des valeurs réelles

Le tableau suivant fournit une liste de toutes les versions de préfixes de liaison disponibles. Les exemples supposent un champ nommé MyField avec 1,2,3 comme valeurs sélectionnées (valeurs vertes) et 4 comme valeur sélectionnée facultative (valeur blanche).

Préfixes de liaison
Préfixe Description Exemple Remplacé par
odag_ Remplacé par les valeurs sélectionnées (vertes) et facultatives (blanches). Sélectionne la version texte des valeurs. Il s'agit du préfixe standard pour les valeurs de chaîne. $(odag_MyField) '1','2','3','4'
odagcnt_ Remplacé par le nombre de valeurs de la liaison odag_ correspondante. Ce préfixe est utilisé pour l'optimisation des requêtes. $(odagcnt_MyField) 4
odagn_

Remplacé par les valeurs sélectionnées (vertes) et facultatives (blanches). Sélectionne la version numérique des valeurs. Il s'agit du préfixe standard pour les valeurs numériques.

Remarque:

Si le modèle de données est tel qu'il ne peut y avoir aucune valeur sélectionnée ou facultative du champ, noValue doit être indiqué dans l'expression. Par exemple : $(odagn_MyField){"noValue":"-99999"}.

Pour plus d'informations, voir Modification des guillemets et délimiteurs de valeurs.

$(odagn_MyField) 1,2,3,4
odagncnt_ Remplacé par le nombre de valeurs de la liaison odagn_ correspondante. Cela permet l'optimisation des requêtes. $(odagncnt_MyField) 4
odago_

Remplacé par les valeurs facultatives (blanches). Sélectionne la version texte des valeurs. Cela permet l'optimisation des requêtes.

Optimisation d'une base de données volumineuse.

$(odago_MyField) '4'
odagocnt_ Remplacé par le nombre de valeurs de la liaison odago_ correspondante. Cela permet l'optimisation des requêtes. $(odagocnt_MyField) 1
odagon_

Remplacé par les valeurs facultatives (blanches). Sélectionne la version numérique des valeurs. Cela permet l'optimisation des requêtes.

Optimisation d'une base de données volumineuse.

$(odagon_MyField) 4
odagoncnt_ Remplacé par le nombre de valeurs de la liaison odagon_ correspondante. Cela permet l'optimisation des requêtes. $(odagoncnt_MyField) 1
odags_

Remplacé par les valeurs sélectionnées (vertes). Sélectionne la version texte des valeurs. Cela permet l'optimisation des requêtes.

Optimisation d'une base de données volumineuse.

$(odags_MyField) '1','2','3'
odagscnt_ Remplacé par le nombre de valeurs de la liaison odags_ correspondante. Cela permet l'optimisation des requêtes. $(odagscnt_MyField) 3
odagsn_

Remplacé par les valeurs sélectionnées (vertes). Sélectionne la version numérique des valeurs. Cela permet l'optimisation des requêtes.

Optimisation d'une base de données volumineuse.

$(odagsn_MyField) 1,2,3
odagsncnt_ Remplacé par le nombre de valeurs de la liaison odagsn_ correspondante. Cela permet l'optimisation des requêtes. $(odagsncnt_MyField) 3
Remarque:

Les valeurs vides sont filtrées des versions texte. Les valeurs non numériques et NaN sont filtrées des versions numériques.

Optimisation d'une base de données volumineuse

Les préfixes odags_ et odagsn_ sont prévus à des fins d'optimisation des requêtes. Quand les champs de liaison ne contiennent aucune sélection, odag_ inclut toutes les valeurs, tandis que odags_ n'inclut aucune valeur. Dans certains cas, il est plus efficace d'utiliser les préfixes odags_ et odagscnt_. Cela vous permet de tester si le jeu de valeurs est vide. Par exemple, l'exemple suivant est plus efficace en l'absence de sélections dans MyField que de tester toutes les valeurs dans odag_MyField :

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

odags_ ne peut pas être utilisé quand il existe un champ alternatif, qui n'est pas un champ On-demand, à partir duquel effectuer une sélection dans l'application de sélection. Par exemple, si l'utilisateur effectue des sélections dans CountryName, mais que l'expression de liaison se trouve dans le champ associé CountryCode, odags_ ne peut pas être utilisé. Dans ces cas, odago_ peut être utilisé à sa place. En l'absence de valeurs dans une liaison odago_, cela peut signifier soit que toutes les valeurs doivent être incluses, soit qu'aucune valeur ne doit être incluse.

Liaison de valeurs numériques

Lorsque les données à lier à l'application On-demand se composent de nombres plutôt que de chaînes, il est préconisé de désactiver le comportement de mise entre guillemets pour les champs numériques. Par exemple, si les enregistrements de ventes incluent une colonne DAY_OF_WEEK numérique et que vous souhaitez que l'utilisateur de l'application de sélection puisse choisir des combinaisons arbitraires de DAY_OF_WEEK, vous devez préciser dans la requête d'agrégation utilisée pour le chargement de l'application de sélection qu'elle doit inclure DAY_OF_WEEK à la fois dans la liste SELECT et la liste GROUP BY. Si des guillemets entourent les valeurs DAY_OF_WEEK lorsqu'elles sont sélectionnées, cela pourrait entraîner une erreur de requête d'exécution si la base de données ne prend pas en charge la conversion automatique du type chaîne en type numérique.

Pour gérer cette situation, vous pouvez utiliser une version numérique du suffixe de l'expression de liaison. Cela oblige la liaison de champ à utiliser les valeurs numériques de l'application de sélection plutôt que les valeurs de chaîne. Les versions numériques suivantes sont disponibles :

  • odagn_
  • odagon_
  • odagsn_

Si des versions numériques sont utilisées, les valeurs sont sélectionnées à partir de la partie numérique des valeurs doubles qui stockent les valeurs sélectionnées et les valeurs sont par défaut non encadrées de guillemets.

Obligation d'utiliser un certain nombre de sélections

Dans certains cas, il peut s'avérer nécessaire d'exiger que la requête d'application On-demand comprenne un nombre ou une plage de valeurs spécifique pour un champ donné. Par exemple, supposons que la requête de l'application On-demand contienne une clause BETWEEN afin d'obtenir toutes les ventes comprises entre une date de début et une date de fin. L'expression de liaison du champ YEARQUARTER peut comporter le suffixe syntaxique [2] qui exigera la sélection exacte de deux valeurs pour YEARQUARTER, comme dans l'exemple ci-dessous :

$(odag_YEARQUARTER)[2]

Le point de navigation d'application On-demand défini sur l'application de sélection restera désactivé tant qu'il n'y aura pas exactement deux valeurs de YEARQUARTER sélectionnées. Un message s'affiche pour indiquer qu'exactement deux valeurs de YEARQUARTER doivent être sélectionnées.

Les contraintes de quantité de sélections établissent une liaison préalable entre l'application de sélection et l'application On-demand. Ce cas diffère des expressions de liaison, qui n'utilisent pas de contraintes de quantité. Par exemple, lorsque le script de l'application modèle inclut une expression de liaison sans contrainte de quantité, comme dans :

$(odag_MYFIELD)

il n'est nullement obligatoire pour l'application de sélection de contenir un champ intitulé MYFIELD ni que des valeurs soient sélectionnées si ce champ existe. Si l'application de sélection ne comporte pas de champ intitulé MYFIELD ou si l'utilisateur oublie simplement d'y effectuer des sélections, il est tout de même possible d'activer le point de navigation d'application On-demand lorsque d'autres sélections sont effectuées pour remplir la condition de valeur de limite d'enregistrements.

D'un autre côté, si l'expression de liaison est définie comme suit :

$(odag_MYFIELD)[1+]

l'application de sélection est alors soumise à deux obligations :

  • L'application de sélection doit contenir un champ intitulé MYFIELD.
  • L'utilisateur doit sélectionner une ou plusieurs valeurs pour MYFIELD.

Il convient d'employer ce type d'expression de liaison avec prudence, car il limite les applications de sélection qu'il est possible d'utiliser avec l'application modèle. Il est déconseillé d'appliquer cette contrainte de quantité aux liaisons d'une application modèle, à moins d'être certain de vouloir imposer cette restriction à toutes les applications de sélection liées à cette application modèle.

Pour exécuter le processus de liaison de données, le service On-demand app utilise une approche de substitution de chaîne qui ne tient pas compte des commentaires figurant dans le script. Autrement dit, il convient de ne pas utiliser d'expressions de liaison dans les commentaires, à moins de souhaiter inclure dans ces derniers la liste des valeurs liées faisant suite à la génération de l'application.

Il est possible de définir d'autres contraintes de quantité. Le tableau suivant résume les différentes combinaisons de contraintes de quantité de sélections possibles.

Différentes combinaisons de contraintes de quantité de sélections possibles
Modèle de contrainte Sélections requises
$(odag_YEARQUARTER)[2] L'utilisateur doit sélectionner exactement 2 valeurs de YEARQUARTER.
$(odag_YEARQUARTER)[2-4] L'utilisateur doit sélectionner entre 2 et 4 valeurs de YEARQUARTER.
$(odag_YEARQUARTER)[2+] L'utilisateur doit sélectionner au moins 2 valeurs de YEARQUARTER.
$(odag_YEARQUARTER)[2-] L'utilisateur doit sélectionner au plus 2 valeurs de YEARQUARTER.
Remarque: La vérification du respect de toutes les contraintes de quantité dans l'application modèle est effectuée au cours de la génération de l'application. Si une contrainte de quantité n'est pas respectée, la demande de génération de l'application est refusée et un message d'erreur s'affiche.

Modification des guillemets et délimiteurs de valeurs

Lorsqu'une liste de valeurs d'un champ sélectionné dans une application de sélection est insérée dans le script d'une application modèle, les valeurs sont encadrées de guillemets simples et séparées par des virgules. Ce sont les caractères par défaut utilisés comme guillemets et délimiteurs. Il est possible de modifier ces valeurs dans la syntaxe ajoutée à l'instruction de liaison relative à chaque champ. Par exemple :

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

Ces nouvelles valeurs sont ensuite appliquées lors de la formulation de la liste des valeurs de liaison récupérée à partir de l'application de sélection. Par exemple, si les valeurs sélectionnées correspondent aux trois premiers mois de l'année, la liste serait élaborée de la façon suivante :

|January|;|February|;|March|

Les valeurs par défaut des guillemets et délimiteurs sont prises en charge par la plupart des bases de données SQL standard. Toutefois, elles peuvent être incompatibles avec certaines bases de données SQL et ne fonctionnent pas avec de nombreuses sources de données dynamiques telles que NoSQL et REST. Avec ces sources, vous devez ajouter cette expression de liaison afin de modifier les caractères utilisés comme guillemets et délimiteurs.

Le tableau suivant indique les paramètres de format pour modifier les caractères de guillemet et de délimiteur.

Paramètres de format
Paramètre Valeur par défaut Définition
quote

' (guillemet simple) pour les préfixes texte

vide pour les préfixes numériques

Sera ajouté avant et après chaque valeur
delimiter , (virgule) Sera ajouté entre toutes les valeurs
quoteReplace '' (deux guillemets simples)

Quand la valeur n'est pas vide et que le guillemet n'est pas vide, toutes les occurrences du guillemet à l'intérieur des valeurs sont remplacées par la chaîne spécifiée.

Remarque: quoteReplace n'est pas pris en charge en tant que paramètre pour les préfixes numériques tels que odagn_. quoteReplace est ignoré par les préfixes numériques.
noValue (vide)

Lorsqu'aucune valeur n'est sélectionnée pour un champ, cette valeur est utilisée à la place. Ce paramètre est utile quand il ne peut exister aucune valeur d'un champ donné dans la sélection.

La valeur doit être définie sur une valeur qui n'existe pas dans les données source. Pour les valeurs numériques, par exemple, utilisez une valeur négative si toutes les valeurs de la base de données sont positives.

Remarque: Pour les valeurs non encadrées de guillemets, noValue doit être indiqué si les valeurs sélectionnées du champ peuvent être un jeu vide.

Les tableaux suivants indiquent la spécification de format et les valeurs générées pour odag_ et odagn_. Les valeurs insérées générées sont basées sur les valeurs des données par défaut de VAL1, VAL2.

Exemples de spécifications de format et de valeurs générées pour odag_
Spécification de format Description Valeurs insérées générées
non spécifié

Liste de valeurs séparées par des virgules, encadrées de '.

'VAL1','VAL2'
{"quote": "", "delimiter": ""} Valeurs concaténées VAL1VAL2

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

Valeurs encadrées de X et délimitées par Y.  XVAL1XYXVAL2X
{"quote": "XX", "delimiter": "YY"} Valeurs encadrées de XX et délimitées par YY.  XXVAL1XXYYXXVAL2XX
{"quote": "X"} Valeurs encadrées de X et délimitées par , (par défaut).  XVAL1X,XVAL2X
{"delimiter": "YY"} Valeurs encadrées de ' (par défaut) et délimitées par YY. 'VAL1'YY'VAL2'
{"quote": ""} Valeurs non encadrées délimitées par ,. VAL1,VAL2
{"quote": "A", "quoteReplace": "\\A"}

Valeurs encadrées de A et délimitées par une virgule (par défaut). Toute valeur à l'intérieur du champ sera remplacée par \A.

Remarque:

Dans cet exemple, il faut deux \, car \ est le caractère d'échappement du format json.

AV\AL1A,AV\AL2A
Exemples de spécifications de format et de valeurs générées pour odagn_
Spécification de format Description Valeurs insérées générées
non spécifié

Liste de valeurs non encadrées séparées par des virgules. Notez que les valeurs numériques seront utilisées.

VAL1,VAL2
{"delimiter": "YY"} Valeurs non encadrées délimitées par YY. VAL1YYVAL2
{"quote": "A", "quoteReplace": "\\A"} Contrairement au préfixe odag_, le paramètre quoteReplace sera ignoré. AVAL1A,AVAL2A

Traitement des valeurs individuelles

Quand le traitement individuel des valeurs de champ est requis, vous pouvez utiliser une méthode intégrée pour générer des valeurs dans la variable Values et effectuer un traitement arbitraire avec Replace ou une autre fonction. Dans l'exemple ci-dessous, Replace est utilisé avec les valeurs d'espace réservé.

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;