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.
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é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. Note Informations
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. |
$(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. |
$(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. |
$(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. |
$(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 |
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 :
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 :
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 :
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 :
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. Toutes les liaisons dans les commentaires apparaîtront également dans la liste de champs du lien de génération de l'application On-demand, alors que ce n'est peut-être pas souhaitable.
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.
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. |
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 :
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 :
Les valeurs par défaut des guillemets et délimiteurs sont supportées 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è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. Note InformationsquoteReplace n'est pas supporté 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. Note Informations 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.
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. Note Informations
Dans cet exemple, il faut deux \, car \ est le caractère d'échappement du format json. |
AV\AL1A,AV\AL2A |
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é.