Table of Contents


  1. Preface
  2. Using the Designer
  3. Working with Sources
  4. Working with Flat Files
  5. Working with Targets
  6. Mappings
  7. Mapplets
  8. Mapping Parameters and Variables
  9. Working with User-Defined Functions
  10. Using the Debugger
  11. Viewing Data Lineage
  12. Comparing Objects
  13. Managing Business Components
  14. Creating Cubes and Dimensions
  15. Using the Mapping Wizards
  16. Appendix A: Datatype Reference
  17. Appendix B: Configure the Web Browser

Data Flow Validation

Data Flow Validation

When you validate or save a mapping, the Designer verifies that the data can flow from all sources in a target load order group to the targets without the Integration Service blocking all sources.
Mappings that include blocking transformations might hang at runtime with any of the following mapping configurations:
  • You connect one source pipeline to multiple input groups of the blocking transformation.
  • You connect the sources and transformations in a target load order group in such a way that multiple blocking transformations could possibly block all source pipelines. Depending on the source data used in a session, a blocking transformation might block data from one source while it waits for a row from a different source.
When you save or validate a mapping with one of these configurations, the Designer marks the mapping invalid. When the Designer marks a mapping invalid because the mapping violates data flow validation, you must configure the mapping differently, or use a non-blocking transformation where possible.
The following figure shows mappings that are invalid because one source provides data for multiple input groups of a blocking transformation:
In mapping A, two groups in a source connect to two input groups of the blocking transformation MGT1. In mapping B, a single-group source connects to two input groups of the blocking transformation MGT1. In mapping C, one multi-group source connects to two Expression transformations, which connect to multiple input groups of the blocking transformation MGT1.
To make the mappings valid, use a non-blocking transformation for MGT1 or create two instances of the same source and connect them to the blocking transformation.
The following figure shows two similar mappings, one which is valid, one which is invalid:
Mapping A contains two multigroup transformations that block data, MGT1 and MGT2. If you could run this session, MGT1 might block data from S1 while waiting for a row from S2. And MGT2 might block data from S2 while waiting for a row from S1. The blocking transformations would block both source pipelines and the session would hang. Therefore, the Designer marks the mapping invalid.
Mapping B contains one multigroup transformation that blocks data, MGT1. Blocking transformations can never block all input groups, so MGT1 might block either S1 or S2, but never both. MGT2 is not a blocking transformation, so it will never block data. Therefore, this session will not hang at runtime due to blocking. The Designer marks the mapping valid.

Updated March 29, 2021