JOIN, MATCH and MORE– Making the Connections Walter F. Blood Technical Director, FOCUS Division May, 2011 Copyright 2007, Information Builders. Slide 1 JOIN, MATCH and MORE Basic Choices When your report requires data from many different sources… Employee Data Job Data Support Data Department Data Customer Data Purchase Orders Product Data Invoices Inventory Data …you need JOIN, MATCH or MORE to make the connections! Copyright 2007, Information Builders. Slide 2 JOIN, MATCH and MORE Basic Choices Each connction involves many choices: ? Equal fields or Conditions ? Real Fields or Virtual Fields ? One-to-One or One-to-Many ? Inclusive or exclusive ? FOCUS Managed or Interface Managed ? Same or different file types Copyright 2007, Information Builders. Slide 3 JOIN, MATCH and MORE JOIN – the Nested Loop Nested Loop A B C Copyright 2007, Information Builders. Slide 4 JOIN, MATCH and MORE JOIN - Basic Characteristics JOIN treats multiple structures as one Employee Data Connects Department Data Product Data data sources based on fields or conditions Creates a vertical concatenation Excludes only comma, tab and token delimited filesInvoices Job Data Maximum 1022 active JOINS Customer Data JOINed structure maximum 1024 segments Inventory Data JOINed record maximum 32K Support Data Purchase Orders Copyright 2007, Information Builders. Slide 5 JOIN , MATCH and MORE Equal JOIN Syntax Departm entData Employee Data Customer Data Job Data LONG FORM Support Data JOIN field1 [ AND field2 …] [TAG tagname] IN file1 TO [ALL] fielda [AND fieldb…] IN file2 [TAG tagname] AS joinname END Purchase Orders Product Data Invoices Inventory Data SHORT FORM JOIN field1 IN file1 TO [ALL] field2 IN file2 AS name JOIN EMPID IN EMPLOYEE TO EMPID IN DEPARTMENT AS JEMP Copyright 2007, Information Builders. Slide 6 JOIN, MATCH and MORE Equal JOIN Syntax - DEFINE Employee Data Job Data LONG FORM JOIN field1 WITH fieldname [TAG tagname] IN file1 TO [ALL] fielda IN file2 [TAG tagname] AS joinname END Support Data Departm entData Product Data Customer Data Purchase Orders Invoices Inventory Data SHORT FORM JOIN field1 WITH field IN file1 TO [ALL] field2 IN file2 JOIN INVID WITH PRDID IN PRODUCT TO INVID IN INVOICES AS INV DEFINE FILE PRODUCT INVID/A25=EDIT(&YMD) | PRDID; … Copyright 2007, Information Builders. Slide 7 JOIN, MATCH and MORE JOINS – Direct INNER/LEFT OUTER Join Equal JOIN JOIN {LEFT_OUTER/INNER} field {AND field …} IN hostfile {TAG tagname} TO {UNIQUE/MULTIPLE} crfield {AND crfield … } IN crfile {TAG tagname} AS joinname END Equal JOIN – DEFINE based JOIN {LEFT_OUTER/INNER} deffield WITH field IN hostfile {TAG tagname} TO {UNIQUE/MULTIPLE} crfield IN crfile {TAG tagname} AS joinname END Copyright 2007, Information Builders. Slide 8 JOIN, MATCH and MORE Equal JOIN Rules All rules are determined by the SUFFIX of the TO file TO sqltable Multiple target fields may be specified Indexes are not required, but preferred Many-to-many supported TO FOCUS/XFOCUS file Only single target field may be specified Target field must be indexed Many-to-many NOT supported Copyright 2007, Information Builders. Slide 9 JOIN – Making the Connection Equal JOIN Rules All rules are determined by the SUFFIX of the TO file TO Indexed Files Target field -- primary key/alternate index Multiple target fields may be specified High-order elements of key or alternate index Many-to-many supported TO FIX/sequential files Multiple target fields NOT supported Many-to-many NOT supported Both files must be sorted in ascending order on the JOIN keys Copyright 2007, Information Builders. Slide 10 JOIN, MATCH and MORE Equal JOIN Syntax Multiple Fields - Field1 AND field2 … Up to four fields may be specified TAG tagname Tagname becomes a prefix for fully qualifying fields in specified file joinname (default is blank) Identifies JOIN for the session Another JOIN with the same name will overlay Specified JOIN can be CLEARed Copyright 2007, Information Builders. Slide 11 JOIN, MATCH and MORE DEFINE-Based JOIN JOIN fieldname WITH field IN file1 … Multiple field JOIN not supported WITH field must be a “real” field in the host file DEFINE field ONLY on the host file – must be real field on the cross-reference file SET KEEPDEFINES = ON to use a dynamic DEFINE specified before the JOIN SET KEEPDEFINES = ON DEFINE FILE CAR CONT/A10 = … END JOIN CONT WITH COUNTRY IN CAR TO CONTINENT IN WORLD AS AJ Copyright 2007, Information Builders. Slide 12 JOIN, MATCH and MORE Conditional JOINs Syntax Departm entData Employee Data Customer Data Job Data JOIN FILE from_file AT from_field [TAG from_tag ] TO {ALL|ONE} FILE to_file AT to_field [TAG to_tag] [AS as_name] [WHERE expression1 ; WHERE expression2 ; ... ; ] END Purchase Orders Support Data Product Data Invoices Inventory Data JOIN FILE EMPLOYEE AT EMPID TO ALL FILE CAR AT SEATS AS J1 WHERE RETAIL_COST LE SALARY * 3; END Copyright 2007, Information Builders. Slide 13 JOIN, MATCH and MORE JOINS –Direct INNER/LEFT OUTER Join Conditional JOIN JOIN {LEFT_OUTER/INNER} hostfile AT hfld1 {TAG tagname} TO {UNIQUE/MULTIPLE} crfile AT crfld {TAG tagname} AS joinname {WHERE expression1; {WHERE expression2:} END Copyright 2007, Information Builders. Slide 14 JOIN, MATCH and MORE Conditional JOINs Rules and Caveats The conditional JOIN is supported for FOCUS VSAM ADABAS IMS All relational data sources Optimization of the conditional JOIN syntax depends on Specific data sources involved in the JOIN Complexity of the WHERE criteria Where possible, use EQ-JOIN Index/Key always used No TABLE Scan Copyright 2007, Information Builders. Slide 15 JOIN, MATCH and MORE Conditional JOINs - Insurance Rates Greater than Minimum Age JOIN FILE EMPDATA1 AT BIRTHDATE TO ALL FILE RATES AT AGE AS J1 WHERE EMPDATA1.BAGE GE RATES.AGE; WHERE EMPDATA1.BAGE LE RATES.EAGE; END TABLE FILE EMPDATA1 Less than HEADING Maximum Age "To: <FIRSTNAME <LASTNAME " "</1 Thank you for choosing our company for your <0X insurance needs." "Thank you for choosing our company for your insurance needs.” "Since your birth date is <BIRTHDTATE ,your current rate is<0X <RATE_PER_THOUSAND per" "unit of coverage. This is your rate through age <EAGE . “ ON TABLE SET PAGE OFF BY PIN NOPRINT PAGE-BREAK END Copyright 2007, Information Builders. Slide 16 JOIN, MATCH and MORE Conditional JOINs - Insurance Rates and Letters To: DANIEL VALINO Thank you for choosing our company for your insurance needs. Since your birth date is 07/20/1959, your current rate is $11 per unit of coverage. This is your rate through age 42. To: MICHAEL BELLA Thank you for choosing our company for your insurance needs. Since your birth date is 07/27/1952, your current rate is $24 per unit of coverage. This is your rate through age 53. Copyright 2007, Information Builders. Slide 17 JOIN, MATCH and MORE FOCUS or Interface Managed? Interface Managed Both HOST and Cross-Reference are same SUFFIX OPTIMIZATION is ON See Trace for optimization FOCUS Managed Different file types OPTIMIZATION is turned OFF FOCUS turns off optimization (explained in TRACEs) Copyright 2007, Information Builders. Slide 18 JOIN, MATCH and MORE JOINS – One to Many Relationships JOIN PIN IN EMPDATA TO Employee Data Job Data Departm entData Customer Data Product Data ALL PIN IN KIDS AS JOIN1 Invoices END Support Data Purchase Orders Inventory Data OUTER EMPDATA PIN LASTNAME FIRSTNAME MIDINITIAL INNER KIDS EMP_ID LASTNAME CHILDNAME MIDINITIAL Copyright 2007, Information Builders. Slide 19 JOIN, MATCH and MORE JOINS – One to Many - Inner JOIN using SET ALL SET ALL = OFF PIN --000000010 000000020 000000030 000000040 000000050 000000060 000000070 000000080 000000090 000000100 EMP_ID -----000000010 000000010 000000010 000000010 000000030 000000040 000000060 000000070 Retrieves only matching pairs Copyright 2007, Information Builders. Slide 20 JOIN, MATCH and MORE JOINS – One to Many - Left-Outer with SET ALL SET ALL = ON PIN --000000010 000000020 000000030 000000040 000000050 000000060 000000070 000000080 000000090 000000100 EMP_ID -----000000010 000000010 000000010 000000010 000000030 000000040 000000060 000000070 Retrieves all records in Host showing the short paths Copyright 2007, Information Builders. Slide 21 JOINS – One to Many Left Outer JOIN using SET ALL PIN --000000010 LASTNAME -------VALINO FIRSTNAME --------DANIEL 000000020 000000030 000000040 000000050 000000060 000000070 000000080 000000090 000000100 BELLA CASSANOVA ADAMS ADDAMS PATEL SANCHEZ SO PULASKI ANDERSON MICHAEL LOIS RUTH PETER DORINA EVELYN PAMELA MARIANNE TIM CHILDNAME --------ASTRIC ARTHUR ANNE ANTHONY . JOHN MARY . SAM SAMANTHA . . . Short Paths Copyright 2007, Information Builders. Slide 22 JOIN, MATCH and MORE JOIN - Unique Relationship JOIN PIN IN EMPDATA TO Employee Data Job Data Departm entData Customer Data Product Data PIN IN SPICE AS JOIN1 Invoices END Support Data Purchase Orders Inventory Data EMPDATA SPICE PIN LASTNAME FIRSTNAME MIDINITIAL PIN LASTNAME SPOUSENAME SSN Copyright 2007, Information Builders. Slide 23 JOIN, MATCH and MORE Unique Relationship and SET ALL SET ALL = OFF or SET ALL = ON PIN --000000010 000000020 000000030 000000040 000000050 000000060 000000070 000000080 000000090 000000100 PIN EMP_ID -------000000010 000000030 000000010 000000040 000000010 000000060 000000010 000000070 000000030 000000090 000000040 000000060 000000070 Copyright 2007, Information Builders. Slide 24 JOINs – One to One Left Outer JOIN using SET ALL PIN LASTNAME FIRSTNAME --- -------- --------- 000000010 VALINO ARTHUR 000000020 BELLA 000000030 CASSANOVA JOHN 000000040 ADAMS MARY 000000050 ADDAMS 000000060 PATEL SAM 000000070 SANCHEZ SAMANTHA 000000080 SO 000000090 PULASKI 000000100 ANDERSON Blanks Copyright 2007, Information Builders. Slide 25 JOIN, MATCH and MORE MATCH – Sort Merge Sort Merge B A C Copyright 2007, Information Builders. Slide 26 JOIN, MATCH and MORE MATCH - Basic Characteristics MATCH merges files sequentially one at a time Department Data Product Data Employee Merges data sources based on common fields Data Creates a vertical concatenation Connection based upon BY fields Invoices Data Maximum 16 files connected in one MATCH request Job Customer Data Produces only HOLD output Output controlled with AFTER MATCH <mergephrase> Inventory Data Offers Right-Outer and Full-Outer capabilities Support Data Purchase Orders Copyright 2007, Information Builders. Slide 27 JOIN, MATCH and MORE MATCH - Syntax MATCH FILE file1 . BY FLD RUN FILE file2 . BY FLD1 AS FLD [AFTER MATCH merge_phrase1] RUN FILE file3 . BY FLD2 AS FLD [AFTER MATCH merge_phrase2] END BY fields connect files Merge phrase selects Copyright 2007, Information Builders. Slide 28 JOIN, MATCH and MORE MATCH – Mergetype and Output mergetype Specifies which of the retrieved records from the files are to be selected OLD-OR-NEW – all records from first and second files. This is the default if the AFTER MATCH line is omitted. (The UNION of the sets.) OLD-AND-NEW – only records common to both files. (The INTERSECTION of the sets.) OLD-NOT-NEW – records from the first file with no match in the second file. Copyright 2007, Information Builders. Slide 29 JOIN, MATCH and MORE MATCH – Mergetype and Output NEW-NOT-OLD - records from second file with no match in the first file. OLD-NOR-NEW - non-matching records from both files records from the first file with no match in the second file, and records from the second file with no match in the first file. OLD – records from the first file with matching records in the second file. NEW – records from the second file with matching records in the first file. Copyright 2007, Information Builders. Slide 30 JOIN, MATCH and MORE MATCH – Fine-Tuning Fine tune control using the display verbs SUM – summarizes data to one record PRINT – prints each individual record Four combinations SUM / SUM 1st (summarized) 2nd (summarized) SUM / PRINT 1st (summarized) 2nd (detail) PRINT / SUM 1st (detail) 2nd (summarized) PRINT / PRINT 1st (detail) 2nd (detail) Copyright 2007, Information Builders. Slide 31 JOIN, MATCH and MORE MATCH – Fine-Tuning 2 N Country DCost 1 England 1000 1 England 2000 2 Japan 3000 2 Japan 4000 MATCH FILE F1 <verb> COUNTRY DCOST BY N RUN FILE F2 <VERB> CAR RCOST BY N AFTER MATCH HOLD OLD-OR-NEW N Car RCost 1 Jaguar 5000 1 Jensen 6000 2 Datsun 4000 2 Toyota 7000 SUM SUM PRINT SUM 1 England 3000 Jensen 11000 1 England 2000 Jensen 11000 2 Japan 2 Japan 7000 Toyota 11000 SUM PRINT 4000 Toyota 11000 PRINT PRINT 1 England 3000 Jaguar 5000 1 England 1000 Jaguar 5000 1 England 3000 Jensen 6000 1 England 2000 Jensen 6000 2 Japan 7000 Datsun 4000 2 Japan 3000 Datsun 4000 2 Japan 7000 Toyota 7000 2 Japan 4000 Toyota 7000 Copyright 2007, Information Builders. Slide 32 JOIN, MATCH and MORE MORE - Basic Characteristics MORE concatenates files sequentially one at a time Employee Data Requires Department Data Product Data data sources with common fields with the same formats Invoices Creates a horizontal concatenation Job Data Concatenate records of different file types Customer Data Can be used with TABLE, GRAPH, and MATCH Inventory Data Similar to UNION functionality Support Data Purchase Orders Copyright 2007, Information Builders. Slide 33 JOIN, MATCH and MORE MORE - Basic Characteristics Retrieval of data from unlike data sources Concatenate different file types: FOCUS DB2/SQL IMS VSAM Fix files Based on corresponding fields with: Same name Same FORMAT Data appears as if from a single source Currently supported in: TABLE GRAPH MATCH FILE Copyright 2007, Information Builders. Slide 34 JOIN, MATCH and MORE MORE Processing Order of Processing Main request Identifies data fields Identifies sorting criteria Identifies output format of data Subrequests Identify file(s) Identify data fields to be concatenated to data in main request Copyright 2007, Information Builders. Slide 35 JOIN, MATCH and MORE MORE Processing Order of processing: 1 FOCUS DATA 2 VSAM DATA SORT OUTPUT DATA 3 FIX Copyright 2007, Information Builders. Slide 36 JOIN, MATCH and MORE MORE Processing FOCUS VSAM FIX FIX Data Retrieval (DEFINE/IF) Data Retrieval (DEFINE/IF) Data Retrieval (DEFINE/IF) MORE EOF N Y MORE EOF Y N EOF Y N FOCSORT COMPUTE/IF TOTAL OUTPUT Copyright 2007, Information Builders. Slide 37 JOIN, MATCH and MORE MORE Processing FOCUS VSAM FIX File 1 Main Request Supported TABLE, GRAPH, MATCH FILE syntax e.g. BY WHERE, IF, COMPUTE File 2 Subrequest ONLY WHERE/IF syntax File 3 Subrequest ONLY WHERE/IF syntax Copyright 2007, Information Builders. Slide 38 JOIN, MATCH and MORE MORE Syntax TABLE, GRAPH, MATCH FILE (Files) BY, WHERE, etc. MORE FILE (File 2) Subrequest (ONLY IF/WHERE) MORE FILE (File 3) Subrequest (ONLY IF/WHERE) END (after the last subrequest) Copyright 2007, Information Builders. Slide 39 JOIN, MATCH and MORE MORE Usage Notes Based on fields in main request Corresponding to fields In: Subrequest, based on Fieldname Format All fields in main request must be available to: Files in the subrequest Real fields Defined fields Copyright 2007, Information Builders. Slide 40 JOIN, MATCH and MORE MORE Supported Datatypes Alpha Type and length must be equal INTEGER, floating point, DECIMAL Type must be the same PACKED Type and scale must be equal DATE (SMART) Always correspond DATE (Legacy) Edit options must be the same TEXT Fields are NOT supported Copyright 2007, Information Builders. Slide 41 JOIN, MATCH and MORE Which one? Which One Do We Use and Why Use JOIN EQ JOIN COND Indexed Field Yes No N/A N/A Like field Use DEFINE No Yes Use DEFINE No common fields No Yes Yes Use DEFINE With MATCH MORE Copyright 2007, Information Builders. Slide 42 JOIN, MATCH and MORE Making the Connections Employee Data Job Data Support Data Department Data Customer Data Purchase Orders Product Data Invoices Inventory Data Copyright 2007, Information Builders. Slide 43 JOIN, MATCH and MORE Making the Connections - Appendix Copyright 2007, Information Builders. Slide 44 JOIN, MATCH and MORE EMPDATA - Master FILENAME=EMPDATA, SUFFIX=FOC SEGNAME=EMPDATA, SEGTYPE=S1 FIELDNAME=PIN, ALIAS=ID, FORMAT=A9, INDEX=I,$ FIELDNAME=LASTNAME, ALIAS=LN, FORMAT=A15, FIELDNAME=FIRSTNAME, ALIAS=FN, FORMAT=A10, $ FIELDNAME=MIDINITIAL, ALIAS=MI, FORMAT=A1, $ FIELDNAME=DIV, ALIAS=CDIV, FORMAT=A4, $ FIELDNAME=DEPT, ALIAS=CDEPT, FORMAT=A20, $ FIELDNAME=JOBCLASS, ALIAS=CJCLAS, FORMAT=A8, $ FIELDNAME=TITLE, ALIAS=CFUNC, FORMAT=A20, $ FIELDNAME=SALARY, ALIAS=CSAL, FORMAT=D12.2M, $ FIELDNAME=HIREDATE, ALIAS=HDAT, FORMAT=YMD, $ $ Copyright 2007, Information Builders. Slide 45 JOIN, MATCH and MORE EMPDATA - Data PIN --000000010 000000020 000000030 000000040 000000050 000000060 000000070 000000080 000000090 000000100 LASTNAME -------VALINO BELLA CASSANOVA ADAMS ADDAMS PATEL SANCHEZ SO PULASKI ANDERSON FIRSTNAME --------DANIEL MICHAEL LOIS RUTH PETER DORINA EVELYN PAMELA MARIANNE TIM Copyright 2007, Information Builders. Slide 46 JOIN, MATCH and MORE Kids - Master FILENAME=KIDS , SUFFIX=FOC SEGNAME=CHILDSEG, SEGTYPE=S1 FIELDNAME=EMP_ID, ALIAS=PIN, FIELDNAME=LASTNAME, ALIAS=SLN, FORMAT=A15 ,$ FIELDNAME=CHILDNAME, ALIAS=SFN, FORMAT=A10 ,$ FIELDNAME=DATE_OF_BIRTH, ALIAS=DOB, FORMAT=A9, INDEX =I ,$ FORMAT=MDYY ,$ Copyright 2007, Information Builders. Slide 47 JOIN, MATCH and MORE Kids - Data EMP_ID LASTNAME CHILDNAME DATE_OF_BIRTH ------ -------- --------- ------------- 000000010 VALINO ANTHONY 12/31/1980 000000010 VALINO ANNE 11/09/1979 000000010 VALINO ARTHUR 06/01/1982 000000010 VALINO ASTRIC 05/03/1991 000000030 CASSANOVA JOHN 05/07/1993 000000040 ADAMS MARY 08/01/2000 000000060 PATEL SAM 07/05/1998 000000070 SANCHEZ SAMANTHA 08/04/1997 Copyright 2007, Information Builders. Slide 48 JOIN, MATCH and MORE Spice - Master FILENAME=SPICE , SUFFIX=FOC SEGNAME=SPOUSEI, SEGTYPE=S1 FIELDNAME=PIN, ALIAS=ID, FORMAT=A9, INDEX=I,$ FIELDNAME=LASTNAME, ALIAS=SLN, FORMAT=A15,$ FIELDNAME=SPOUSENAME, ALIAS=SFN, FORMAT=A10,$ FIELDNAME=SPOUSESSN , ALIAS=SSN, FORMAT=A9 ,$ Copyright 2007, Information Builders. Slide 49 JOIN, MATCH and MORE Spice - Data PIN LASTNAME SPOUSENAME SPOUSESSN --- -------- --------- ---------- 000000010 VALINO ABIGAIL 000000011 000000030 CASSANOVA EDWARD 000000032 000000040 ADAMS BRIAN 000000043 000000060 PATEL KEITH 000000064 000000070 SANCHEZ EDWARD 000000075 000000090 PULASKI DAVID 000000096 Copyright 2007, Information Builders. Slide 50 JOIN, MATCH and MORE Insurance Rates File TABLE FILE RATES PRINT * AGE EAGE RATE_PER_THOUSAND --- ---- ----------------- 20 26 $8 27 35 $9 36 42 $11 43 48 $14 49 53 $24 54 60 $30 61 65 $36 66 999 $42 Copyright 2007, Information Builders. Slide 51