Virtual Join links a main data table to one or more auxiliary data tables. The feature enables the main data table to access data from the auxiliary data tables without physically joining the tables. See Virtually Join Data Tables in the Using JMP book for details.
dt1 = Open( "$SAMPLE_DATA/Pizza Profiles.jmp" );
dt1:ID << Set Property( "Link ID", 1 );
// add Link ID and turn it on
dt2 = Open( "$SAMPLE_DATA/Pizza Responses.jmp" );
dt2:Choice1 << Set Property( "Link Reference", Reference Table( "$SAMPLE_DATA/Pizza Profiles.jmp" ) );
dt2:Choice2 << Set Property( "Link Reference", Reference Table( "$SAMPLE_DATA/Pizza Profiles.jmp" ) );
dt2:Choice << Set Property( "Link Reference", Reference Table( "$SAMPLE_DATA/Pizza Profiles.jmp" ) );
// add Link Reference to the Choice1, Choice2, and Choice columns
obj = dt2 << Distribution( // create a distribution of Crust[Choice1]
Weight( :Subject ),
Nominal Distribution(
Column(
Referenced Column(
"Crust[Choice1]", // specify the joined column name
Reference( Column( :Choice1 ), Reference( Column( :Crust ) ) )
)
)
),
Nominal Distribution( Column( :Choice1 ) )
);
The Columns panel in a data table shows you the names of the linked columns. For example, open the Movie Inventory.jmp and Movie Rentals.jmp sample data tables to see the linked columns shown in Figure 8.7.
The column name of the source column is followed by the name of the referencing column in brackets. For example, Figure 8.7 shows the Name source column followed by the referencing column [Item Number] in brackets.
Figure 8.7 Linked Columns in Movie Rentals.jmp
You change the name of the virtually linked column name with Set Title. For example, the following script changes the name of the virtually linked column Rating[Item Number] to Movie Rating in the Distribution report.
dt1 = Open( "$SAMPLE_DATA/Movie Inventory.jmp" );
dt2 = Open( "$SAMPLE_DATA/Movie Rentals.jmp" );
dt2 << Distribution(
Nominal Distribution(
Column(
Referenced Column( // specify the joined column name
"Rating[Item Number]",
Reference( Column( :Item Number ), Reference( Column( :Rating ) ) )
)
)
),
SendToReport( Dispatch( {}, "Rating[Item Number]", OutlineBox,
{Set Title( "Movie Rating" )} ) ) /* change the name of the
virtually linked column */
);
You can also specify that the referenced column name be used in linked columns. This option lets you define a shorter column name (for example, Rating instead of Rating[Item Number]). Include the Use Linked Column Name option:
dt1 = Open( "$SAMPLE_DATA/Movie Inventory.jmp" );
dt2 = Open( "$SAMPLE_DATA/Movie Rentals.jmp" );
Column( dt2, "Item Number" ) << Set Property(
"Link Reference",
{Reference Table( "Movie Inventory.jmp" ), Options( "Use Linked Column Name"( 1 ) )}
);
dt2 << Distribution(
Nominal Distribution(
Column(
Referenced Column( // specify the joined column name
"Rating",
Reference( Column( :Item Number ), Reference( Column( :Rating ) ) )
)
)
)
);
t1 = Open( "$SAMPLE_DATA/Pizza Profiles.jmp" );
dt2 = Open( "$SAMPLE_DATA/Pizza Responses.jmp" );
dt1:ID << Set Property( "Link ID", 1 );
dt2:Choice << Set Property( "Link Reference", Reference Table( dt1 ) );
dt2:Choice1 << Set Property( "Link Reference", Reference Table( dt1 ) );
dt2:Choice2 << Set Property( "Link Reference", Reference Table( dt1 ) );
dt2 << Select Columns( :Choice1, :Choice2 );
// select the columns to merge
dt2 << Merge Referenced Data();
/* linked data from the referenced columns are now embedded in
Pizza Responses.jmp */