# JOINER TRANSFORMATION

1. WHAT IS A JOINER TRANSFORMATION AND WHY IT IS AN ACTIVE ONE?
2. STATE THE LIMITATIONS WHERE WE CANNOT USE JOINER IN THE MAPPING PIPELINE.
3. OUT OF THE TWO INPUT PIPELINES OF A JOINER, WHICH ONE WILL WE SET AS THE MASTER PIPELINE?
4. WHAT ARE THE DIFFERENT TYPES OF JOINS AVAILABLE IN JOINER TRANSFORMATION?
5. DEFINE THE VARIOUS JOIN TYPES OF JOINER TRANSFORMATION.
6. DESCRIBE THE IMPACT OF NUMBER OF JOIN CONDITIONS AND JOIN ORDER IN A JOINER.
7. HOW DOES JOINER TRANSFORMATION TREAT NULL VALUE MATCHING?
8. WHEN WE CONFIGURE THE JOIN CONDITION, WHAT ARE THE GUIDELINES WE NEED TO FOLLOW TO MAINTAIN THE SORT ORDER?
9. WHAT ARE THE TRANSFORMATIONS THAT CANNOT BE PLACED BETWEEN THE SORT ORIGIN AND THE JOINER TRANSFORMATION SO
THAT WE DO NOT LOSE THE INPUT SORT ORDER?
10. WHAT IS THE USE OF SORTED INPUT IN JOINER TRANSFORMATION?
11. CAN WE JOIN TWO TABLES BASED ON A JOIN COLUMN HAVING DIFFERENT DATA TYPE?
12. IMPLEMENTATION SCENARIO1 – JOINER TRANSFORMATION IS JOINING TWO TABLES S1 AND S2. S1 HAS 10,000 ROWS AND S2
HAS 1000 ROWS . WHICH TABLE YOU WILL SET MASTER FOR BETTER PERFORMANCE OF JOINER TRANSFORMATION? WHY?

#### 31.How To Join Two Tables Without Using The Joiner Transformation?

• Its possible to join the two or more tables by using source qualifier. But provided the tables should have relationship.
• When you drag and drop the tables you will getting the source qualifier for each table. Delete all the source qualifiers. Add a common source qualifier for all. Right click on the source qualifier you will find EDIT click on it. Click on the properties tab, you will find sql query in that you can write your sqls.
• You can also do it using Session — mapping—source there you have an option called User Defined Join there you can write your SQL.

The non-equi joins are not supported by joiner Transformation.

#### 32.What Are The Difference Between Joiner Transformation And Source Qualifier Transformation?

• can join heterogeneous data sources in joiner transformation which we cannot achieve in source qualifier transformation.
• need matching keys to join two relational sources in source qualifier transformation. Whereas you doesn’t need matching keys to join two sources.
• Two relational sources should come from same data source in source qualifier. You can join relational sources which are coming from different sources also.
• The Source Qualifier can join data originating from the same source database. We can join two or more tables with primary key-foreign key relationships by linking the sources to one Source Qualifier transformation.
• If we have a requirement to join the mid-stream or the sources are heterogeneous, then we will have to use the Joiner transformation to join the data.

#### 33. Differentiate between joiner and Lookup Transformation.

Below are the differences between lookup and joiner transformation:

• In lookup we can override the query but in joiner we cannot.
• In lookup we can provide different types of operators like – “>,<,>=,<=,!=” but, in joiner only “= “ (equal to )operator is available.
• In lookup we can restrict the number of rows while reading the relational table using lookup override but, in joiner we cannot restrict the number of rows while reading.
• In joiner we can join the tables based on- Normal Join, Master Outer, Detail Outer and Full Outer Join but, in lookup this facility is not available .Lookup behaves like Left Outer Join of database.

34. What is a Joiner Transformation and why it is an Active one?

• A Joiner is an Active and Connected transformation used to join two source data streams coming from same or heterogeneous databases or files.
• The Joiner transformation joins sources with at least one matching column. The Joiner transformation uses a condition that matches one or more pairs of columns between the two sources.
• In the Joiner transformation, we must configure the transformation properties namely Join Condition, Join Type and optionally Sorted Input option to improve Integration Service performance.
• The join condition contains ports from both input sources that must match for the Integration Service to join two rows. Depending on the join condition and the type of join selected, the Integration Service either adds the row to the result set or discards the row. Because of this reason, the number of rows in Joiner output may not be equal to the number of rows in Joiner Input. This is why Joiner is considered an Active transformation.

With the help of Joiner Transformation, you can make use of Joins in INFORMATICA.

It is based on two sources namely:

• Master Source
• Detail Source

Following joins can be created using Joiner transformation as in SQL.

• Normal Join
• Full Outer Join
• Master outer join(Right Outer Join)
• Detail outer join(Left Outer Join)

35. State the limitations where we cannot use Joiner in the mapping pipeline.

The Joiner transformation accepts input from most transformations. However, following are the limitations:

•  Joiner transformation cannot be used when either of the input pipelines contains an Update Strategy transformation.
• Joiner transformation cannot be used if we connect a Sequence Generator transformation directly before the Joiner transformation.

36. Out of the two input pipelines of a joiner, which one will we set as the master pipeline?

During a session run, the Integration Service compares each row of the master source against the detail source. The master and detail sources need to be configured for optimal performance.When the Integration Service processes an unsorted Joiner transformation, it blocks the detail source while it caches rows from the master source. Once the Integration Service finishes reading and caching all master rows, it unblocks the detail source and reads the detail rows. This is why if we have the source containing fewer input rows in master, the cache size will be smaller, thereby improving the performance.

For a Sorted Joiner transformation, use the source with fewer duplicate key values as the master source for optimal performance and disk storage. When the Integration Service processes a sorted Joiner transformation, it caches rows for one hundred keys at a time. If the master source contains many rows with the same key value, the Integration Service must cache more rows, and performance can be slowed.
Blocking logic is possible if master and detail input to the Joiner transformation originate from different sources. Otherwise, it does not use blocking logic. Instead, it stores more rows in the cache.

37. What are the different types of Joins available in Joiner Transformation?

In SQL, a join is a relational operator that combines data from multiple tables into a single result set. The Joiner transformation is similar to an SQL join except that data can originate from different types of sources.
The Joiner transformation supports the following types of joins:

• Normal
• Master Outer
• Detail Outer
• Full Outer

A normal or master outer join performs faster than a full outer or detail outer join.

38. Define the various Join Types of Joiner Transformation.

•  In a normal join, the Integration Service discards all rows of data from the master and detail source that do not match, based on the join condition.
•  A master outer join keeps all rows of data from the detail source and the matching rows from the master source. It discards the unmatched rows from the master source.
•  A detail outer join keeps all rows of data from the master source and the matching rows from the detail source. It discards the unmatched rows from the detail source.
•  A full outer join keeps all rows of data from both the master and detail sources.

39. Describe the impact of number of join conditions and join order in a Joiner.

• We can define one or more conditions based on equality between the specified master and detail sources. Both ports in a condition must have the same data type.
• If we need to use two ports in the join condition with non-matching data types we must convert the data types so that they match. The Designer validates data types in a join condition. Additional ports in the join condition, increases the time necessary to join two sources.
• The order of the ports in the join condition can impact the performance of the Joiner transformation. If we use multiple ports in the join condition, the Integration Service compares the ports in the order we specified.

Only equality operator is available in joiner join condition.

40. How does Joiner transformation treat NULL value matching?
The Joiner transformation does not match null values.
For example, if both EMP_ID1 and EMP_ID2 contain a row with a null value, the Integration Service does not consider them a match and does not join the two rows.
To join rows with null values, replace null input with default values in the Ports tab of the joiner, and then join on the default values.

If a result set includes fields that do not contain data in either of the sources, the Joiner transformation populates the empty fields with null values. If we know that a field will return a NULL and we do not want to insert NULLs in the target, set a default value on the Ports tab for the corresponding port.

41. When we configure the join condition, what are the guidelines we need to follow to maintain the sort order?
Suppose we configure Sorter transformations in the master and detail pipelines with the following sorted ports in order: ITEM_NO, ITEM_NAME and PRICE.
If we have sorted both the master and detail pipelines in order of the ports say ITEM_NO, ITEM_NAME and PRICE we must ensure that:

• Use ITEM_NO in the First Join Condition.
• If we add a Second Join Condition, we must use ITEM_NAME.
• If we want to use PRICE as a Join Condition apart from ITEM_NO, we must also use ITEM_NAME in the Second Join Condition.
• If we skip ITEM_NAME and join on ITEM_NO and PRICE, we will lose the input sort order and the Integration Service fails the session.

42. What are the transformations that cannot be placed between the sort origin and the Joiner transformation so that we do not lose the input sort order?
The best option is to place the Joiner transformation directly after the sort origin to maintain sorted data.
However do not place any of the following transformations between the sort origin and the Joiner transformation:

•  Custom
•  Unsorted Aggregator
• Normalizer
•  Rank
•  Union transformation
•  XML Parser transformation
•  XML Generator transformation
•  Mapplet [if it contains any one of the above mentioned transformations]

43. What is the use of sorted input in joiner transformation?
It is recommended to Join sorted data when possible. We can improve session performance by configuring the Joiner transformation to use sorted input. When we configure the Joiner transformation to use sorted data, it improves performance by minimizing disk input and output. We see great performance improvement when we work with large data sets.

• For an unsorted Joiner transformation, designate as the master source the source with fewer rows.
• For optimal performance and disk storage, designate the master source as the source with the fewer rows.
• During a session, the Joiner transformation compares each row of the master source against the detail source. The fewer unique rows in the master, the fewer iterations of the join comparison occur, which speeds the join process.

44.Can we join two tables based on a join column having different data type?
For example table 1 EMPNO (string) and table 2 EMPNUM (number)
Yes possible in this case. If we are using Joiner, we should be able to do this explicit conversion in an expression transformation before joining the tables.

45.Implementation Scenario1 – Joiner transformation is joining two tables s1 and s2. s1 has 10,000 rows and s2 has 1000 rows . Which table you will set master for better performance of joiner transformation? Why?
Set table S2 as Master table because informatica server has to keep master table in the cache so if it is 1000 in cache will get performance instead of having 10000 rows in cache.