Hope you are aware that all steps involved in a transformation execute parallelly, which means any step which receives input will start processing that input and it won't wait for the previous step to complete processing all the records.
Blocking Step Use Case:
Considering the above fact, look through the following scenarios.
- Fetching records from Table A (nr of records=100)
- Looking up records from Table B
- Triggering a Stored Procedure in the same transformation once all the records are looked up for a reference value in Table B.
As the Stored Procedure step is also in the same transformation, it will be triggered without waiting for the records to complete "Stream Lookup" step. So to make this Stored Procedure step to wait until all 100 records are processed in the previous step you can use "Blocking Step".
Block this step until steps finish - Use Case:
Consider a "Concatenate" step which needs two different values which have to be received from two different steps which are executing in parallel. Say Step A gives String "Hello" and Step B should send "World", but step A completes its processing and sending "Hello" to Concatenate step whereas Step B is still processing. In this case what will happen is as soon as "Concatenate" steps receives its input it will process and send the output as "Hello".
To make this work we can use "Block this step until steps finish" before "Concatenate" Step and mention "Step A" and "Step B" in the Step name list.