Expresiones de enlace en aplicaciones de plantilla bajo demanda
Los enlaces de datos en una aplicación de plantilla especifican qué datos de una aplicación de selección correspondiente se utilizan para formular las consultas emitidas al cargar datos en una aplicación bajo demanda.
La forma básica de expresiones de enlace --$(odag_FIELDNAME)-- no es el único método disponible para enlazar expresiones. Se pueden usar otros prefijos para refinar las selecciones y para garantizar que la aplicación de plantilla cargue los datos correctamente.
Prefijos de enlace disponibles
La forma de prefijo general es odag[s|o][n][cnt], donde:
- s - incluye solo valores seleccionados
- o - incluye solo valores opcionales
- n - elige la versión numérica, por defecto sin comillas
- cnt - inserta el número de valores en lugar de los valores reales
La siguiente tabla proporciona una lista de todas las versiones de los prefijos de enlace disponibles. Los ejemplos poseen un campo denominado MyField con 1,2,3 como valores seleccionados (de color verde) y 4 como valor seleccionado opcional (en blanco).
| Prefijo | Descripción | Ejemplo | Reemplazado por |
|---|---|---|---|
| odag_ | Reemplazado por los valores seleccionados (en verde) y opcionales (en blanco). Selecciona la versión textual de los valores. Este es el prefijo estándar para los valores de cadena. | $(odag_MyField) | '1','2','3','4' |
| odagcnt_ | Reemplazado por el número de valores en el correspondiente enlace odag_. Este prefijo se utiliza para la optimización de consultas. | $(odagcnt_MyField) | 4 |
| odagn_ |
Reemplazado por los valores seleccionados (en verde) y opcionales (en blanco). Selecciona la versión numérica de los valores. Este es el prefijo estándar para valores numéricos. Nota informativa
Si el modelo de datos es tal que no puede haber valores seleccionados u opcionales del campo, se debe especificar un noValue en la expresión. Por ejemplo, $(odagn_MyField){"noValue":"-99999"}. Para más información, vea Cambiar los caracteres de entrecomillado de valor y delimitador. |
$(odagn_MyField) | 1,2,3,4 |
| odagncnt_ | Reemplazado por el número de valores en el correspondiente enlace odagn_. Esto sirve para la optimización de las consultas. | $(odagncnt_MyField) | 4 |
| odago_ |
Reemplazado por los valores opcionales (en blanco). Selecciona la versión textual de los valores. Esto sirve para la optimización de las consultas. |
$(odago_MyField) | '4' |
| odagocnt_ | Reemplazado por el número de valores en el correspondiente enlace odago_. Esto sirve para la optimización de las consultas. | $(odagocnt_MyField) | 1 |
| odagon_ |
Reemplazado por los valores opcionales (en blanco). Selecciona la versión numérica de los valores. Esto sirve para la optimización de las consultas. |
$(odagon_MyField) | 4 |
| odagoncnt_ | Reemplazado por el número de valores en el correspondiente enlace odagon_. Esto sirve para la optimización de las consultas. | $(odagoncnt_MyField) | 1 |
| odags_ |
Reemplazado por los valores seleccionados (en verde). Selecciona la versión textual de los valores. Esto sirve para la optimización de las consultas. |
$(odags_MyField) | '1','2','3' |
| odagscnt_ | Reemplazado por el número de valores en el correspondiente enlace odags_. Esto sirve para la optimización de las consultas. | $(odagscnt_MyField) | 3 |
| odagsn_ |
Reemplazado por los valores seleccionados (en verde). Selecciona la versión numérica de los valores. Esto sirve para la optimización de las consultas. |
$(odagsn_MyField) | 1,2,3 |
| odagsncnt_ | Reemplazado por el número de valores en el correspondiente enlace odagsn_. Esto sirve para la optimización de las consultas. | $(odagsncnt_MyField) | 3 |
Los valores vacíos se filtran en las versiones de texto. Los valores no numéricos y NaN se filtran en las versiones numéricas.
Optimizando para grandes bases de datos
Los prefijos odags_ y odagsn_ están destinados a la optimización de consultas. Cuando no hay selecciones en los campos enlazados, odag_ incluye todos los valores, mientras que odags_ no incluye valores. En algunos casos, es más eficiente usar los prefijos odags_ y odagscnt_. Esto le permite probar si el conjunto de valores está vacío. Por ejemplo, lo siguiente es más eficiente cuando no se realizan selecciones en MyField que probar todos los valores en odag_MyField:
odags_ no se puede usar cuando hay un campo alternativo para seleccionar en la aplicación de selección que no sea un campo bajo demanda. Por ejemplo, si el usuario realiza selecciones en CountryName, pero la expresión de enlace está en el campo asociado CountryCode, no se puede utilizar odags_. En estos casos se puede usar odago_ en su lugar. Si no hay valores en un enlace odago_, puede significar que se deben incluir todos los valores o que no se deben incluir valores.
Enlazar valores numéricos
Cuando los datos que se van a enlazar a la aplicación bajo demanda consisten en números en lugar de cadenas de texto, es útil deshabilitar el entrecomillado de los campos numéricos. Por ejemplo, si los registros de ventas incluyen una columna numérica DAY_OF_WEEK y desea que el usuario de la app de selección elija combinaciones arbitrarias de DAY_OF_WEEK, aumentaría la consulta de agregación utilizada para cargar la app de selección para que incluya DAY_OF_WEEK tanto en la lista SELECT como en la lista GROUP BY. Si se colocan comillas en torno a los valores DAY_OF_WEEK cuando están seleccionados, podría producirse un error de consulta en tiempo de ejecución si la base de datos no admite la conversión automática de cadena de texto a numérica.
Para manejar esta situación, puede usar una versión numérica del sufijo de la expresión de enlace. Esto obliga al enlace de campo a usar los valores numéricos de la app de selección en lugar de los valores de cadena. Están disponibles las siguientes versiones numéricas:
- odagn_
- odagon_
- odagsn_
Al usar versiones numéricas, los valores se seleccionan de la parte numérica en los duales que almacenan los valores seleccionados y los valores no están entre comillas de manera predeterminada.
Cuando se requiere un cierto número de selecciones
En algunas situaciones, puede ser necesario que la consulta de la aplicación bajo demanda contenga un número o rango de valores específico para un campo específico. Por ejemplo, si la consulta de la aplicación bajo demanda contiene una cláusula BETWEEN para obtener todas las ventas entre una fecha de inicio y otra de finalización, la expresión de enlace para el campo YEARQUARTER puede tener una sintaxis de sufijo [2] que requerirá que se seleccionen exactamente dos valores para YEARQUARTER, como en:
El punto de navegación de la aplicación bajo demanda en la aplicación de selección permanecerá deshabilitado siempre que no se seleccionen exactamente dos valores de YEARQUARTER. Aparecerá un mensaje para indicar que deben seleccionarse exactamente dos valores de YEARQUARTER.
Las restricciones en cuanto a la cantidad de selección crean un vínculo de requisito previo entre la aplicación de selección y la aplicación bajo demanda. Esto es distinto a las expresiones de enlace que no utilizan restricciones en cuanto a la cantidad. Por ejemplo, cuando el script de la aplicación de plantilla contiene una expresión de enlace sin una restricción de cantidad, como en:
no hay ningún requisito en cuanto a que la aplicación de selección contenga un campo llamado MYFIELD ni que haya ningún valor seleccionado de ese campo, si existe. Si la aplicación de selección no contiene un campo denominado MYFIELD o si el usuario simplemente omite hacer selecciones en la misma, el punto de navegación de la aplicación bajo demanda aún puede activarse cuando se realicen otras selecciones para cumplir la condición de límite de registros.
Si por otro lado, la expresión de enlace es:
ahora hay dos requisitos impuestos a la aplicación de selección:
- La aplicación de selección debe contener un campo llamado MYFIELD.
- El usuario debe seleccionar al menos un valor para MYFIELD.
Este tipo de expresión de enlace debe utilizarse con cuidado porque limita qué aplicaciones de selección pueden utilizarse con la aplicación de plantilla. No debe utilizar esta restricción de cantidad en los enlaces de una aplicación de plantilla a menos que esté seguro de que desea imponer ese requisito de cantidad de selección en todas las aplicaciones de selección que enlazan con esa aplicación de plantilla.
Para realizar el proceso de enlace de datos, el servicio de aplicaciones bajo demanda utiliza un enfoque de sustitución de cadenas que es insensible a los comentarios en el script. Esto significa que no debe utilizar expresiones de enlace en los comentarios a menos que desee que esos comentarios contengan la lista de valores enlazados tras la generación de la aplicación. Cualquier enlace en los comentarios también aparecerá en la lista de campos del enlace de generación de aplicaciones bajo demanda, lo que puede no ser deseable.
También se pueden hacer otras restricciones en cuanto a cantidad. La tabla siguiente resume las diferentes combinaciones que se pueden hacer en cuanto a restricciones en la cantidad de selección.
| Tipo de restricción | Requisito de selección |
|---|---|
| $(odag_YEARQUARTER)[2] | Deben seleccionarse exactamente 2 valores de YEARQUARTER. |
| $(odag_YEARQUARTER)[2-4] | Deben seleccionarse entre 2 y 4 valores de YEARQUARTER. |
| $(odag_YEARQUARTER)[2+] | Deben seleccionarse al menos 2 valores de YEARQUARTER. |
| $(odag_YEARQUARTER)[2-] | Se pueden seleccionar como mucho 2 valores de YEARQUARTER. |
Cambiar los caracteres de entrecomillado de valor y delimitador
Cuando una lista de valores de un campo seleccionado en una aplicación de selección se inserta en el script de una aplicación de plantilla, los valores van entre comillas simples y separados por comas. Estos son los caracteres predeterminados para entrecomillado y delimitadores. Estos valores se pueden cambiar en la sintaxis añadida a la sentencia de enlace para cada campo. Por ejemplo:
Estos nuevos valores se utilizan entonces para formular la lista de valores de enlace tomados de la aplicación de selección. Si, por ejemplo, los valores seleccionados son los tres primeros meses del año, la lista se construiría de la siguiente manera:
Los valores predeterminados para los caracteres de entrecomillado y delimitador funcionan para la mayoría de bases de datos SQL estándar. Pero podrían no funcionar para algunas bases de datos SQL y no funcionan en el caso de numerosas fuentes de datos dinámicas como NoSQL y REST. Para esas fuentes, es necesario agregar esta expresión de enlace a fin de cambiar los caracteres de entrecomillado y delimitador.
La tabla siguiente describe los parámetros de formato para cambiar las comillas y los caracteres delimitadores.
| Parámetro | Valor predeterminado | Definición |
|---|---|---|
| quote |
' (comilla simple) para prefijos de texto vacío para prefijos numéricos |
Se agregará antes y después de cada valor |
| delimiter | , (coma) | Se agregará entre todos los valores |
| quoteReplace | '' (comillas simples dobles) |
Cuando el valor no esté vacío y la cita no esté vacía, todas las instancias de la cita dentro de los valores serán reemplazadas por la cadena especificada. Nota informativaquoteReplace no se admite como parámetro para prefijos numéricos como odagn_. quoteReplace es ignorado por los prefijos numéricos.
|
| noValue | (vacío) |
Cuando no haya valores seleccionados para un campo, este valor se utilizará en su lugar. Este parámetro es útil cuando no pueda haber valores de un campo en particular en la selección. El valor deberá establecerse en un valor que no exista en los datos de origen. Para valores numéricos, por ejemplo, use un valor negativo si todos los valores en la base de datos son positivos. Nota informativa Para valores sin comillas, debe especificarse noValue si los valores seleccionados del campo pueden ser un conjunto vacío.
|
Las siguientes tablas resumen la especificación de formato y los valores generados para odag_ y odagn_. Los valores insertados generados se basan en los valores de datos predeterminados de VAL1, VAL2.
| Especificación de formato | Descripción | Valores insertados generados |
|---|---|---|
| no especificado |
Lista de valores separados por comas, incluidos entre comillas simples '. |
'VAL1','VAL2' |
| {"quote": "", "delimiter": ""} | Valores concatenados | VAL1VAL2 |
|
{"quote": "X", "delimiter": "Y"} |
Valores citados por X y delimitados por Y. | XVAL1XYXVAL2X |
| {"quote": "XX", "delimiter": "YY"} | Valores citados por XX y delimitados por YY. | XXVAL1XXYYXXVAL2XX |
| {"quote": "X"} | Valores citados por X y delimitados por , (predeterminado). | XVAL1X,XVAL2X |
| {"delimiter": "YY"} | Valores citados por ' (predeterminado) y delimitados por YY. | 'VAL1'YY'VAL2' |
| {"quote": ""} | Valores sin comillas delimitados por ,. | VAL1,VAL2 |
| {"quote": "A", "quoteReplace": "\\A"} |
Valores citados por A y delimitados por coma (predeterminado). Los valores A dentro del campo serán reemplazados por \A. Nota informativa
En este ejemplo, debe haber un doble \ ya que \ es el carácter de escape en formato json. |
AV\AL1A,AV\AL2A |
| Especificación de formato | Descripción | Valores insertados generados |
|---|---|---|
| no especificado |
Lista de valores separados por comas sin comillas. Tenga en cuenta que se utilizarán los valores numéricos. |
VAL1,VAL2 |
| {"delimiter": "YY"} | Valores sin comillas delimitados por YY | VAL1YYVAL2 |
| {"quote": "A", "quoteReplace": "\\A"} | En comparación con el prefijo odag_ se ignorará el parámetro quoteReplace. | AVAL1A,AVAL2A |
Procesar valores individuales
Cuando se requiera el procesamiento individual de los valores de campo, puede usar un método inline para generar valores en la variable Values y realizar un procesamiento arbitrario con Replace u otra función. En el ejemplo a continuación, Replace se usa con valores de marcador de posición.