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.
DB_LOOKUP(look_mf, srcfld1, lookfld1, srcfld2, lookfld2, ..., returnfld);
où :
Est le fichier maître hôte.
sont les champs du fichier source utilisés pour situer un enregistrement correspondant dans le fichier de recherche.
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.
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.
De plus, si une requête DB_LOOKUP est lancée contre un fichier séquentiel dans une commande DEFINE FILE, vous devez effacer la commande DEFINE FILE à la fin de la requête TABLE à laquelle elle fait référence, ou le fichier de recherche restera ouvert. Elle ne sera réutilisable qu'après être fermée et pourra possiblement causer des problèmes lorsque vous quittez WebFOCUS ou FOCUS. D'autres types de fichiers de recherche peuvent être réutilisés sans effacer le DEFINE. Ils seront automatiquement effacés lorsque tous les champs DEFINE seront effacés.
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 |