DB_LOOKUP : Récupérer les valeurs d'une source de données

Comment :

Référence :

Langages disponibles : reporting, MODIFY

Vous pouvez utiliser la fonction DB_LOOKUP pour récupérer la valeur d'une source de données lorsque vous exécutez une requête contre une autre source de données, sans joindre ni fusionner les deux sources de données.

DB_LOOKUP compare des paires de champs de la source et recherche des sources de données pour situer des enregistrements qui correspondent et récupérer la valeur à renvoyer à la requête. Au besoin, vous pouvez spécifier de nombreuses paires pour arriver à l'enregistrement de recherche qui contient la valeur que vous souhaitez récupérer. Si vos paires de liste de champ ne mènent pas à un enregistrement de recherche unique, le premier enregistrement de recherche récupéré qui correspond est utilisé.

DB_LOOKUP peut être appelé dans une commande DEFINE, TABLE COMPUTE, MODIFY COMPUTE, ou un flux DataMigrator.

Il n'existe aucune restriction sur le fichier source. Le fichier de recherche peut s'agir de toute source de données non-FOCUS prise en charge comme fichier de référence croisée dans une jointure cluster. Les champs de recherche utilisés pour trouver l'enregistrement qui correspond sont sujets aux règles concernant les champs de jointure de référence croisée pour la source de données de recherche. Un fichier séquentiel au format fixe peut s'agir du fichier de recherche s'il est trié dans le même ordre que le fichier source.


Haut de page

x
Syntaxe : Récupérer une valeur dans une source de données de recherche
DB_LOOKUP(look_mf, srcfld1, lookfld1, srcfld2, lookfld2, ..., returnfld);

où :

look_mf

Est le fichier maître hôte.

srcfld1, srcfld2 ...

sont les champs du fichier source utilisés pour situer un enregistrement correspondant dans le fichier de recherche.

lookfld1, lookfld2 ...

sont des colonnes du fichier de recherche qui ont des valeurs communes avec les champs source. Seules les colonnes du tableau ou du fichier sont utilisables ; celles créées par DEFINE ne le sont pas. Pour les synonymes multi-segments, seules les colonnes dans le segment supérieur peuvent être utilisées.

returnfld

est le nom d'une colonne dans le fichier de recherche dont la valeur est retournée à partir de l'enregistrement de recherche correspondant. Seules les colonnes du tableau ou du fichier sont utilisables ; celles créées par DEFINE ne le sont pas.


Haut de page

x
Référence : Notes d'utilisation pour DB_LOOKUP


Exemple : Récupérer une valeur d'un fichier séquentiel à format fixe dans une requête TABLE

La procédure suivante crée un fichier séquentiel à format fixe nommé GSALE de la source de données GGSALES. Les champs dans ce fichier sont PRODUCT (description du produit), CATEGORY (catégorie du produit), et PCD (code du produit). Le fichier est trié sur le champ PCD :

SET ASNAMES = ON
TABLE FILE GGSALES
SUM PRODUCT CATEGORY
BY PCD
ON TABLE HOLD AS GSALE FORMAT ALPHA
END

Le fichier maître suivant est généré comme résultat de la commande 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 requête TABLE suivante contre la source de données GGPRODS trie le rapport sur le champ qui correspond au champ clé dans le fichier de recherche. Elle récupère la valeur du champ CATEGORY du fichier de recherche GSALE en faisant correspondre le code et les champs de description du produit. Notez que le commande DEFINE FILE est effacée à la fin de la requête.

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

Parce que le fichier maître GSALE ne définit pas le champ CATEGORY avec l'attribut MISSING=ON, la colonne PCAT affiche un espace dans ces lignes qui ne contiennent aucun enregistrement correspondant dans le fichier de recherche :

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 vous ajoutez l'attribut MISSING=ON au champ CATEGORY dans le fichier maître GSALE, la colonne PCAT affiche un symbole de données manquantes dans les lignes qui ne contiennent pas d'enregistrement correspondant dans le fichier de recherche :

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

Information Builders