DB_LOOKUP: cómo recuperar valores de origen de datos

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.


Principio de página

x
Sintaxis: Cómo Recuperar un valor de un origen de datos de búsqueda
DB_LOOKUP(look_mf, srcfld1, lookfld1, srcfld2, lookfld2, ..., returnfld);

donde:

look_mf

Es el archivo máster de búsqueda.

srcfld1, srcfld2 ...

Son campos del archivo de origen usado para localizar un registro coincidente, en el archivo de búsqueda.

lookfld1, lookfld2 ...

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.

returnfld

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.


Principio de página

x
Referencia: Notas de uso de DB_LOOKUP


Ejemplo: Cómo recuperar un valor de archivo secuencial de formato fijo en una solicitud TABLE

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