ETL is about processing Rows (in memory objects), where the rows come from doesn't matter. Joins occur in memory allowing you to relate disjointed data. So whether the table is unrelated doesn't apply in the scope of the ETL process. here is an example of what I mean. And this is all off the top of my head.
Initialize()
{
Register(new MyLeftJoinOperation()
.Left(new GetDataFromHere())
.Right(new MyInnerJoinOperation()
.Left(new GetDataFromThere())
.Right(Partial
.Add(new GetDataFromYetAnotherPlace())
.Add(new TransformBeforeJoining())
)));
Register(new TransformRows());
Register(new SendDataOut());
}
My guess is you will need to use a combination of Nested Join operations and the PartialProcessOperation.