Joining From a Multi-Fact Synonym
Multi-parent synonyms are now supported as the source for a join to a single segment in a target synonym.
A join from a multi-parent synonym is subject to the following conditions:
- Conditional joins are not supported (JOIN WHERE).
- The join must be unique. That is, the TO ALL or TO MULTIPLE phrase is not supported.
- The target of the join cannot be a multi-parent synonym.
- The target of the JOIN must be a single segment, either in a single segment synonym or one segment in a single parent, multi-segment synonym.
- All fields in the JOIN must be FROM/TO a single segment. Any single segment in the source synonym can be used in the join.
Joining From a Multi-Fact Synonym
The following Master File describes a multi-parent structure based on the WebFOCUS Retail tutorial. The two fact tables wf_retail_sales and wf_retail_shipments are parents of the dimension table wf_retail_product.
FILENAME=WF_RETAIL_MULTI_PARENT, $
SEGMENT=WF_RETAIL_SHIPMENTS, CRFILE=WFRETAIL/FACTS/WF_RETAIL_SHIPMENTS, CRINCLUDE=ALL,
DESCRIPTION='Shipments Fact', $
SEGMENT=WF_RETAIL_SALES, PARENT=., CRFILE=WFRETAIL/FACTS/WF_RETAIL_SALES, CRINCLUDE=ALL,
DESCRIPTION='Sales Fact', $
SEGMENT=WF_RETAIL_PRODUCT, CRFILE=WFRETAIL/DIMENSIONS/WF_RETAIL_PRODUCT, CRINCLUDE=ALL,
DESCRIPTION='Product Dimension', $
PARENT=WF_RETAIL_SHIPMENTS, SEGTYPE=KU,
JOIN_WHERE=WF_RETAIL_SHIPMENTS.ID_PRODUCT EQ WF_RETAIL_PRODUCT.ID_PRODUCT;, $
PARENT=WF_RETAIL_SALES, SEGTYPE=KU,
JOIN_WHERE=WF_RETAIL_SALES.ID_PRODUCT EQ WF_RETAIL_PRODUCT.ID_PRODUCT;, $
The following image shows the joins between these tables in the Synonym Editor of the Data Management Console (DMC).
The following request joins the product segment to the dimension table wf_retail_vendor based on the vendor ID and issues a request against the joined structure:
JOIN ID_VENDOR IN WF_RETAIL_MULTI_PARENT TO ID_VENDOR IN WF_RETAIL_VENDOR AS J1 TABLE FILE WF_RETAIL_MULTI_PARENT SUM COGS_US DAYSDELAYED BY PRODUCT_CATEGORY BY VENDOR_NAME WHERE PRODUCT_CATEGORY LT 'S' ON TABLE SET PAGE NOPAGE END
The output is: