Cómo: Referencia: |
Lenguajes disponibles: informes, MODIFY
Al ejecutar una solicitud en base a otro origen de datos, puede usar la función DB_LOOKUP para recuperar un valor de un origen de datos, sin tener que unir o combinar los dos orígenes de datos.
DB_LOOKUP compara las parejas de campos del origen y de los orígenes de datos de búsqueda, para localizar registros coincidentes y recuperar el valor que se va a devolver a la solicitud. Puede especificar todas las parejas que sean necesarias para obtener el registro de búsqueda, que tiene el valor que desea recuperar. Si el campo lista parejas que no llevan a un registro de búsqueda único, se emplea el primer registro de búsqueda coincidente, que se haya recuperado.
A DB_LOOKUP se le puede llamar en un comando DEFINE, TABLE, COMPUTE, MODIFY COMPUTE, o en un flujo DataMigrator.
No hay restricciones en el archivo de origen. El archivo de búsqueda puede ser cualquier origen de datos, que no sea de FOCUS, y que esté soportado como archivo de referencia cruzada, en un join en clúster. Los campos de búsqueda usados para localizar el registro coincidente, están sujetos a las reglas relativas a los campos joins de referencia cruzada del origen de datos de búsqueda. El archivo de búsqueda puede tratarse de un archivo secuencial de formato fijo, cuando está clasificado en el mismo orden que el archivo de origen.
DB_LOOKUP(look_mf, srcfld1, lookfld1, srcfld2, lookfld2, ..., returnfld);
donde:
Es el archivo máster de búsqueda.
Son campos del archivo de origen usado para localizar un registro coincidente, en el archivo de búsqueda.
Son columnas del archivo de búsqueda que comparten valores con los campos de origen. Sólo se pueden usar columnas de la tabla o del archivo; no se pueden usar columnas creadas con DEFINE. Sólo se pueden usar columnas en el segmento superior para los sinónimos multisegmento.
Es el nombre de una columna del archivo de búsqueda, cuyo valor se ha devuelto desde el registro de búsqueda coincidente. Sólo se pueden usar columnas de la tabla o del archivo; no se pueden usar columnas creadas con DEFINE.
Además, si se emite una solicitud de DB_LOOKUP basada en un archivo secuencial, en un comando DEFINE FILE, debe eliminar el comando DEFINE FILE situado al final de la solicitud de TABLE, que hace referencia a él, o de lo contrario, el archivo de búsqueda permanecerá abierto. No se puede reutilizar hasta que esté cerrado y puede causar problemas al salir de. Hay otros tipos de archivos de búsqueda que pueden volver a usarse sin eliminar el DEFINE. Estos quedan eliminados automáticamente al borrarse todos los campos DEFINE.
El procedimiento siguiente crea un archivo secuencial de formato fijo, llamado GSALE, del origen de datos GGSALES. Los campos de este archivo son PRODUCT (descripción de producto), CATEGORY (categoría de producto) y PCD (código de producto). El archivo está clasificado en el campo PCD:
SET ASNAMES = ON TABLE FILE GGSALES SUM PRODUCT CATEGORY BY PCD ON TABLE HOLD AS GSALE FORMAT ALPHA END
El siguiente archivo máster se genera como resultado del comando HOLD:
FILENAME=GSALE, SUFFIX=FIX , $ SEGMENT=GSALE, SEGTYPE=S1, $ FIELDNAME=PCD, ALIAS=E01, USAGE=A04, ACTUAL=A04, $ FIELDNAME=PRODUCT, ALIAS=E02, USAGE=A16, ACTUAL=A16, $ FIELDNAME=CATEGORY, ALIAS=E03, USAGE=A11, ACTUAL=A11, $
La siguiente solicitud TABLE, emitida frente al origen de datos GGPRODS, clasifica el informe en el campo que coincide con el campo clave del archivo de búsqueda. El valor del campo CATEGORY del archivo de búsqueda se recupera comparando los campos de código de producto y descripción de producto. Tenga en cuenta que el comando DEFINE FILE se elimina cuando termina la solicitud:
DEFINE FILE GGPRODS PCAT/A11 MISSING ON = DB_LOOKUP(GSALE, PRODUCT_ID, PCD, PRODUCT_DESCRIPTION, PRODUCT, CATEGORY); END TABLE FILE GGPRODS PRINT PRODUCT_DESCRIPTION PCAT BY PRODUCT_ID END DEFINE FILE GGPRODS CLEAR END
Puesto que el archivo máster GSALE no define el campo CATEGORY, con el atributo MISSING=ON, la columna PCAT muestra un espacio en blanco, en las filas sin registro coincidente en el archivo de búsqueda:
Product Code | Product | PCAT |
------- | ------- | ---- |
B141 | Hazelnut | |
B142 | French Roast | |
B144 | Kona | |
F101 | Scone | Food |
F102 | Biscotti | Food |
F103 | Croissant | Food |
G100 | Mug | Gifts |
G104 | Thermos | Gifts |
G110 | Coffee Grinder | Gifts |
G121 | Coffee Pot | Gifts |
Si añade el atributo MISSING=ON al campo CATEGORY, en el archivo máster GSALE, la columna PCAT muestra un símbolo de datos no disponibles, en las filas sin un registro coincidente en el archivo de búsqueda:
Product Code Product PCAT ------- ------- ---- B141 Hazelnut . B142 French Roast . B144 Kona . F101 Scone Food F102 Biscotti Food F103 Croissant Food G100 Mug Gifts G104 Thermos Gifts G110 Coffee Grinder Gifts G121 Coffee Pot Gifts
WebFOCUS |