Come: Riferimento: |
Lingue disponibili: reporting, MODIFY
È possibile usare la funzione DB_LOOKUP per recuperare un valore da una origine dati quando si esegue una richiesta rispetto ad un'altra origine dati, senza l'unione o la combinazione di due origini dati.
DB_LOOKUP paragona coppie di campi dall'origine e dalle origini dati di ricerca per localizzare record corrispondenti e per recuperare il valore da restituire alla richiesta. È possibile specificare quante coppie si desidera per arrivare al record di ricerca che presenta il valore che si desidera recuperare. Se le coppie del proprio elenco campi non porta ad un record lookup univoco, il primo record di ricerca corrispondente recuperato viene usato.
È possibile chiamare DB_LOOKUP in un comando DEFINE, comando TABLE COMPUTE e comando MODIFY COMPUTE, o nel flusso DataMigrator.
Non ci sono restrizioni sul file di origine. Il file di ricerca è in grado di essere qualsiasi origine dati FOCUS supportata come file di riferimento incrociato in una unione cluster. I campi lookup usati per trovare il record corrispondente sono soggetti a regole riguardanti campi unione di riferimento incrociato per l'origine dati di ricerca. Un file sequenziale a formato fisso è in grado di essere il file di ricerca, se ordinato nello stesso ordine del file di origine.
DB_LOOKUP(look_mf, srcfld1, lookfld1, srcfld2, lookfld2, ..., returnfld);
dove:
File principale lookup.
Campi dal file di origine utilizzati per individuare un record corrispondente nel file di ricerca.
Colonne dal file di ricerca che condividono valori con i campi di origine. È possibile utilizzare solo colonne nella tabella o nel file; le colonne create con DEFINE non possono essere utilizzate. Per sinonimi multi-segmento solo le colonne nel segmento superiore possono essere utilizzate.
Nome di una colonna nel file di ricerca il cui valore è restituito dal record di ricerca corrispondente. È possibile utilizzare solo colonne nella tabella o nel file; le colonne create con DEFINE non possono essere utilizzate.
Inoltre, se una richiesta DB_LOOKUP rispetto ad un file sequenziale viene emessa inun comando DEFINE FILE, è necessario cancellare il comando DEFINE FILE alla fine della richiesta TABLE, che ne fa riferimento, o il file di ricerca rimarrà aperto. Tale file non sarà utilizzabile fino alla chiusura e potrebbe causare dei problemi durante l'uscita. È possibile riutilizzare altri tipi di file di ricerca senza la cancellazione di DEFINE. Questi file verranno automaticamente cancellati quando tutti i campi DEFINE sono stati cancellati.
La seguente procedura crea un file sequeziale di formato fisso chiamato GSALE dall'origine dati GGSALES. I campi in questo file sono PRODUCT (descrizione prodotto), CATEGORY (categoria prodotto) e PCD (codice prodotto). Il file viene ordinato sul campo PCD:
SET ASNAMES = ON TABLE FILE GGSALES SUM PRODUCT CATEGORY BY PCD ON TABLE HOLD AS GSALE FORMAT ALPHA END
Il seguente file principale viene generato come risultato 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 seguente richiesta TABLE, rispetto all'origine dati GGPRODS, ordina il prospetto sul campo che corrisponde al campo chiave nel file di ricerca. Recupera il valore del campo CATEGORY dal file di ricerca GSALE, facendo corrispondere i campi di descrizione e codice prodotto. Notare che il comando DEFINE FILE viene cancellato alla fine della richiesta:
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
Poiché il file principale GSALE non definisce il campo CATEGORY con l'attributo MISSING=ON, la colonna PCAT visualizza uno spazio vuoto in quelle righe che non presentano corrispondenze nel file di ricerca:
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 |
Se si aggiunge l'attributo MISSING=ON al campo CATEGORY nel file principale GSALE, la colonna PCAT visualizza un simbolo dati mancanti nelle righe che non presentano corrispondenze con il file di ricerca:
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 |