Date post: | 17-Dec-2015 |
Category: |
Documents |
Upload: | rodger-wilkerson |
View: | 220 times |
Download: | 1 times |
Walter F. Blood
Information Builders
Nashville User Forum
February 23, 2012
THINKing in WEBFOCUS
Thinking in WebFocus
Retrieve
DEFINE
Screening
FOCUS or External Sort
Aggregation
COUNT/MIN/MAX
TOTAL Screens
COMPUTE
Format
Extracts
Analysis Report
Generator
Matrix
Output
Generator
Thinking in WebFOCUSAnalysis
Verify DBA access to file(s)
Determine I/O access modules required
Process DEFINE field expressions for pertinent files
Read and parse the request
Check DBA and set up access restrictions at SEGMENT and FIELD levels
Open and parse Master File Descriptions
Thinking in WebFOCUS Analysis
Activate fields (real and DEFINEd) Read USE list and/or check Access Files and
FILEDEF/ALLOCATES Open and Verify files
Activate segments: referenced subtree(s) Smallest subtree which contains “root” and every
segment referenced directly or indirectly (HEADING PARENT AND GRAND CHILD)
Thinking in WebFOCUSRetrieval
Unique segments are promoted into path of parent and are never missing
IF/WHERE tests on database fields are evaluated upon retrieval
DEFINE fields are evaluated if needed IF/WHERE tests are evaluated on DEFINE fields on
segment by segment basis, AFTER all other selection tests are passed
Each Path is processed independently, and fields are merged on common sort fields
Retrieval is “Top Down, Left Right” within the referencedsub-tree
Thinking in WebFOCUSRetrieval - SQL
WebFOCUS converted to SQL Levels of optimization
JoinSelectionAggregationDEFINEd fields
Unoptimized – done in WebFOCUS Returns data at the Internal Matrix level or before
SQL interface retrieval optimized
Thinking in WebFOCUS Structures
SH2KU
KEMP_ID
SPOUSE
JOIN EMP_ID IN EMPLOYEE TO EMP_ID IN SPICE AS AJ
EMP_ID
FIRST_NAME
LAST_NAME
COVER_DT
TYPE_COVER
FAMILY
JOIN EMP_ID IN EMPLOYEE TO ALL EMP_ID IN KIDS AS BJ
EMP_ID
CHILD_DOB
CHILD_NAME
K
KM
SEG1 01 S1 ************** *EMP_ID ** *FIRST_NAME ** *LAST_NAME ** * ** * ** *************** ************** I +-----------------+-----------------+ I I I I SEGS I SEGK I INSSEG 02 I KU 03 I KM 04 I SH2 .............. .............. ************** :EMP_ID :K :EMP_ID ::K *COVER_DT **:SPOUSE : :CHILD_DOB :: *TYPE_COVER **: : :CHILD_NAME :: *FAMILY **: : : :: * **: : : :: * **:............: :............:: *************** JOINED SPICE .............: ************** JOINED KIDS
Thinking in WebFOCUSStructures
JOIN EMP_ID IN EMPLOYEE TO EMP_ID IN SPICE AS J1
SEG1 01 S1 ************** *EMP_ID ** *FIRST_NAME ** *LAST_NAME ** * ** * ** *************** ************** I +-----------------+ I I I SEGS I INSSEG 02 I KU 03 I SH2 .............. ************** :EMP_ID :K *COVER_DT **:SPOUSE : *TYPE_COVER **: : *FAMILY **: : * **: : * **:............: *************** JOINED SPICE **************
JOIN EMP_ID IN EMPLOYEE TO ALL EMP_ID IN KIDS AS J2
Limit 1024 segments in structureLimit 1023 Joins
Thinking in WebFOCUSDEFINE
Segment is determined by WITH field Fields used in expression
Constant expressions are evaluated when file is opened (segment 0)
DEFINEs are evaluated ONLY if required by requestDEFINEs are evaluated at detail level only
Each DEFINE field is associated with a specific segment
Thinking in WebFOCUS Order of Retrieval – FOCUS Files
Root segment instances are obtained in physical order
Lower level instances obtained in SEGTYPE order within parent segment
TABLEF Root and child segment instances are obtained in
SEGTYPE order No sorting
TABLE/GRAPH/MATCH
Thinking in WebFOCUS Order of Retrieval – FOCUS Files
Fieldname is not indexed
Segment containing “fieldname” becomes ROOT of the view, and is retrieved physically
Fieldname is indexed
Segment containing “fieldname” is accessed via the equality test on INDEX
Other segments become children of the new root segment
TABLE FILE filename.fieldname
Thinking in WebFOCUS Order of Retrieval – FOCUS Files
Alternate Physical View is created through the referenced segment highest in the hierarchy
SET AUTOINDEX=ON
Alternate Indexed View is created if there is an Equality test specified for an indexed field on the referenced segment highest in the hierarchy
SET AUTOSTRATEGY=ON
Equality IF/WHERE test on primary key field in logically retrieved segment will terminate “chain chasing” as soon as possible
SET AUTOPATH = ON
Thinking in WebFOCUS Autostrategy – FOCUS Files
IL MI
00010002 9912 9911 9910 9911 9910 9909
WHERE DATE EQ ‘9912’
1 STATE=IL, DATE=0002 Continue Search2 STATE=IL, DATE=0001 Continue Search3 STATE=IL, DATE=9912 Continue Search4 STATE=IL, DATE=9911 Next Parent5 STATE=MI, DATE=9911 Next Parent
STATE
DATE
Thinking in WebFOCUS FIXRETRIEVE – SUFFIX=FIX
SET FIXRETRIEVE=ON Equality IF/WHERE test on primary specified sort field in single
segment FIX file will terminate retrieval as soon as possible
FILE=TESTFI,SUFFIX=FIX
SEGNAME=TESTSEG,SEGTYPE=S1
FIELD=COUNTRY,E01,A10,A10,$
FIELD=CAR ,E02,A16,A16,$
ENGLAND JAGUAR
ENGLAND JENSEN
ENGLAND TRIUMPH
FRANCE PEUGEOT
ITALY AUDI
WHERE COUNTRY EQ ‘FRANCE’
Retrieval stops if:
Set FIXRETRIEVAL = ON
Thinking in WebFOCUS Multiple Paths
Unique segments are always in the path of their parent Unique segments are SEGTYPE = U, KU, DKU, KLU JOIN TO creates DKU segments JOIN TO ALL creates DKM segments
TABLE/MATCH/GRAPH Instances from each path will be merged in the sort process by
the common parent(s)
TABLEF does not merge data from multiple pathsAlternate file views can be used to create single pathsSET MULTIPATH controls multiple path retrieval
Retrieval is performed for each path separately
Thinking in WebFOCUSMultiple Paths
ARRIVE_TIME
ARR_FLIGHT
ARR_FROM
DEPART_TIME
DEP_FLIGHT
DEPART_TO
Airport
Thinking in WebFOCUSMultiple Paths
DEFINE FILE AIRPORTS.ARRIVE_TIME
DELAY=DEPART_TIME – ARRIVE_TIME;
END
TABLE FILE AIRPORTS.ARRIVE_TIME
PRINT DEP_FLIGHT DEPART_TIME
WHERE AIRPORT EQ ‘O’’HARE’
WHERE DELAY GT 60
WHERE DEPART_TO EQ ‘LAX’
WHERE ARR_FROM EQ ‘TOR’
END
ARRIVE_TIME
ARR_FLIGHT
ARR_FROM
DEPART_TIME
DEP_FLIGHT
DEPART_TO
Airport
Thinking in WebFOCUSMultiple Paths
FAMILY
INVESTMENT
FAMILY
COLLEGE
FAMILY
Thinking in WebFOCUS Multiple Paths Instances
1
A I
B M
2
B M
C
3
C I
D
FAMILY
FAMILYCOLLEGE
FAMILYINVESTMENT
Thinking in WebFOCUSMultiple Paths
TABLE FILE SAMPLEPRINT COLLEGE INVESTBY FAMILYWHERE COLLEGE EQ ‘B’
WHERE INVEST EQ ‘I’END
FAMILY COLLEGE INVEST
------ ------- ------
1 B I
2 B .
3 . I
FAMILY COLLEGE INVEST
------ ------- ------
1 B I
SET MULTIPATH=SIMPLE SET MULTIPATH=COMPOUND
Thinking in WebFOCUS Retrieval - Short Paths
High level segments with missing referenced descendents rejected (short path)
SET ALL=ON -- JOIN LEFT_OUTER High level segments with missing referenced
descendents accepted (missing fails IF/WHERE tests)SET ALL=PASS
High level segments with qualified or missing referenced descendents accepted (missing passes IF/WHERE tests)
SET ALL=OFF -- JOIN INNER
Thinking in WebFOCUS Retrieval - Short Paths
Referenced, not present, Unique Segments are defaulted to blanks for alpha fields, zeros for numerics
Unique segments do not create short paths. Therefore, ALL settings are irrelevant for Unique segments.
Note: Missing referenced descendents of missing unique segments revert to ALL=OFF logic
Unique segments (U, KU, DKU, and KLU) are never considered missing
Thinking in WebFOCUSInternal Matrix Generation
One row for each distinct combination of sort keys One column for each verb object Computed columns, row and column totals, subtotals,
and summaries are not yet done All data is in internal form
The output of the SORT/MERGE phase is conceptually a matrix
Thinking in WebFOCUSInternal Matrix - Contents
Fields following a verbFields used in COMPUTEs not previously
mentionedFields used in HEADINGs or FOOTINGsFields used in SUBHEADs or SUBFOOTs, not
previously mentionedMISSING fields are not counted
Sort FieldsBY fieldsACROSS fields (used as low order BY at sort
phase)FOCLIST (verb is PRINT or LIST)
Verb Objects (both SUM and COUNT are calculated)
Thinking in WebFOCUSMultiple Verb Sets - limits
Up to 16 verbs with associated BY fields can be specified
Up to 128 sort fields may be specified Up to 1024 verb objects may be specified
Thinking in WebFOCUSMultiple Verb Sets
EAST 210
NORTH 150
SOUTH 30
WEST 10
SUM SALES BY DIVISION
1 40
2 60
3 110
1 60
2 90
1 10
2 20
1 10
99 100
00 110
99 60
00 90
99 30
99 10
DIV SALES
SUM SALES BY DIVISION BY YEAR
YEAR SALES
LIST SALES BY DIVISION BY YEAR
FOCLIST SALES
Thinking in WebFOCUSInternal Matrix - Sorting
Aggregation is performed as record is sorted, with FOCUS sort
Aggregation is performed by external sort if SET EXTAGGR = ON
Numeric Fields are added. Alpha fields being SUMmed, return the LAST value within the BY field, the FST value with external sorts (SET SUMPREFIX=LST if required)
All verb objects are also COUNTed
Thinking in WebFOCUSMerge – FOCUS Sort
SORT MERGE
FOCSORT
BINs
FOCSORTBINs
SORT MERGE
BINsFOCSORT
Thinking in WebFOCUSEXTSORT = ON, AUTOTABLEF = OFF
FOCSORT
BINs ~ First 5000
Records
EXTSORT
BINsSubsequent
Records
S001WK09
S001WK08
S001WK07
S001WK06
S001WK05
S001WK04
S001WK03
S001WK02
S001WK01
FOCSORTSORT
MERGE FOCSORT
Thinking in WebFOCUSEXTSORT = ON, AUTOTABLEF = ON
S001WK09
S001WK08
S001WK07
S001WK06
S001WK05
S001WK04
S001WK03
S001WK02
S001WK01
EXTSORTSubsequent
Records
OFFLINE
Extract
Hotscreen
Or…
Or…
BINs ~ First 5000
Records
Thinking in WebFOCUSOutput Stage
SORT Internal Matrix
FOCSML
Report Extract
Formatting/Stylsheets HOLD/PCHOLD/SAVEFML/EMRProcessor
Secondary Sort
Post Matrix Processing
COMPUTE’sIF/WHERE TOTAL
BY TOTAL
Totals…
Thinking in WebFOCUSBY TOTAL
PAGE 1 PIN AVE DEPT SALARY COUNT SALARY ---- ------ ----- ------ ACCOUNTING $283,300.00 5 $56,660.00 SALES $395,200.00 7 $56,457.14 MARKETING $570,700.00 11 $51,881.82 CUSTOMER SUPPORT $198,400.00 4 $49,600.00 PROGRAMMING & DVLPMT $182,300.00 4 $45,575.00 PERSONNEL $216,800.00 5 $43,360.00 CONSULTING $126,300.00 3 $42,100.00 ADMIN SERVICES $56,200.00 2 $28,100.00
TABLE FILE EMPDATA SUM SALARY CNT.PIN COMPUTE AVGSAL=SALARY/CNT.PIN; AS 'AVE,SALARY' BY HIGHEST TOTAL AVGSAL NOPRINT BY DEPT END
Thinking in WebFOCUSOutput Stage
SORT Internal Matrix
FOCSML
Report Extract
Formatting/Stylesheets HOLD/PCHOLD/SAVEFML/EMRProcessor
Secondary Sort
Post Matrix Processing
COMPUTE’sIF/WHERE TOTAL
BY TOTAL
Totals…
Thinking in WebFOCUSON Sortfield Options
Subtotaling – BY and ACROSS SUBTOTAL and SUB-TOTAL RECOMPUTE and SUMMARIZE
MULTILINE suppresses operation if only single detail line
RECAP (COMPUTE) SUBFOOT/SUBHEAD
Thinking in WebFOCUSTotaling
BY specified onlyand TABLE *
BY specified plusHigher BysTABLE *
ADD’s all numeric columns
SUBTOTALCOLUMN-TOTAL
SUB-TOTAL
RecalculatesCOMPUTE’sADD’s up other numeric columns
RECOMPUTE SUMMARIZE
* NOTOTAL Suppresses Grand Totals
Thinking in WebFOCUSON Sortfield Options - Format
PAGE-BREAK [REPAGE] NOSPLIT
**FOLD-LINE **SKIP-LINE UNDERLINE
** May be specified on verb-objects
Thinking in WebFOCUSON TABLE Options
Totaling – ON TABLE… COLUMN-TOTAL ROW-TOTAL SUMMARIZE NOTOTAL RECAP [PAGE-BREAK AND ] SUBFOOT/SUBHEAD
Thinking in WebFOCUSHEADings and FOOTings
References to fields in SUBHEAD and SUBFOOT become verb objects only if not previously mentioned
Fields used in HEADINGs and SUBHEADs are taken from the first line within the group (BY phrase or page)
References to fields in HEADING and FOOTING become verb objects with the first verb
Thinking in WebFOCUSON TABLE Extract Options
Extracts ON TABLE HOLD [FORMAT …] ON TABLE PCHOLD [FORMAT…] ON TABLE SAVE [FORMAT…]
SET commands specific to format Interface SET WebFOCUS SET
Thinking in WebFOCUS
QUESTIONS?