Focal Point Banner
Community Center Education Summit Technical Support User Groups
Let's Get Social!

Facebook Twitter LinkedIn YouTube
Focal Point    Focal Point Forums  Hop To Forum Categories  WebFOCUS/FOCUS Forum on Focal Point     How to generate a Cartesian Product
Go
New
Search
Notify
Tools
Reply
  
How to generate a Cartesian Product
 Login/Join
 
<Stahl>
posted
Hi, everybody

my question is:
is it possible to create a cartesian product out of two files each of them having one field. The fields don't have something in common.

E.g:
File1, Field1: A , B , C
File2, Field2: 99, 55

The resulting HOLD-file should contain 2 x 3 = 6 rows, and two fields.

HOLD:
Field1: A, Field2: 99
Field1: A, Field2: 55
Field1: B, Field2: 99
Field1: B, Field2: 55
Field1: C, Field2: 99
Field1: C, Field2: 55

All efforts using MATCH or JOIN didn't succeed.
Has anybody got a clue how to code in WebFOCUS?

Thanks for any advice!
Stahl
 
Reply With QuoteReport This Post
Platinum Member
posted Hide Post
See the following example using JOIN:


-* PFMIKPCR - FOCEXEC - 2004.04.07 - Mikel G�mez - Producto cartesiano.

-* _____________________________________________________________________
-* Test files generation for problem repro.

-* Test FILE 1.
TABLE FILE CAR
BY COUNTRY AS 'FIELD1'
ON TABLE HOLD AS FILE1
ON TABLE SET ASNAMES ON
END
-RUN

-* Test FILE 2.
TABLE FILE CAR
BY CAR AS 'FIELD2'
ON TABLE HOLD AS FILE2
ON TABLE SET ASNAMES ON
END
-RUN

-* _____________________________________________________________________
-* Objectives.

-* Now, we have:
-* FILE1, FIELD1: ENGLAND, FRANCE..., 5 values.
-* FILE2, FIELD2: ALFA, AUDI..., 10 values.
-*
-* And we need the cartesian product:
-* FILE3, 5 x 10 = 50 records.
-*
-* Steps:
-* 1. Create temp file of second file with common blank index.
-* 2. Join first and temp file using the common blank index using TO ALL.
-* 3. Create the cartesian product.

-* _____________________________________________________________________
-* Index second file with common blank index.

TABLE FILE FILE2
PRINT
COMPUTE KEY/A1 = ' ' ;
FIELD2
ON TABLE HOLD AS FILE2IND FORMAT FOCUS INDEX KEY
END
-RUN

-* _____________________________________________________________________
-* 2. Join files using common blank index. (*** TO ALL ***)

JOIN CLEAR *
JOIN KEY WITH FIELD1 IN FILE1 TO ALL KEY IN FILE2IND AS J1

-* _____________________________________________________________________
-* 3. Create and show cartesian product.

DEFINE FILE FILE1
KEY/A1 WITH FIELD1 = ' ' ;
END

TABLE FILE FILE1
PRINT
FIELD1
FIELD2
END
-RUN
I hope this helps.
Regards,
Mikel

This message has been edited. Last edited by: <Mabel>,
 
Posts: 173 | Location: Madrid, Spain | Registered: May 09, 2003Reply With QuoteReport This Post
<Stahl>
posted
Super trouper, Mikel! That was exactly what I needed.
Thanks a lot!
Stahl
 
Reply With QuoteReport This Post
Platinum Member
posted Hide Post
Have you tried the command..
SET CARTESIAN=ON
 
Posts: 226 | Registered: June 08, 2003Reply With QuoteReport This Post
<Stahl>
posted
Yes, I did, but it didn't work. Maybe I made a mistake
 
Reply With QuoteReport This Post
Platinum Member
posted Hide Post
SET CARTESIAN is not applicable in this case.
quote:
From SET CARTESIAN (Creating Reports With WebFOCUS Language)
SET CARTESIAN enables you to generate a report containing all combinations of non‑related records or data instances in a multi‑path request...
In this topic we haven't path. We have two unrelated files without any common field. We must create the path properly.

Regards,
Mikel
 
Posts: 173 | Location: Madrid, Spain | Registered: May 09, 2003Reply With QuoteReport This Post
  Powered by Social Strata  
 

Focal Point    Focal Point Forums  Hop To Forum Categories  WebFOCUS/FOCUS Forum on Focal Point     How to generate a Cartesian Product

Copyright © 1996-2018 Information Builders, leaders in enterprise business intelligence.