Here’s the explanation from the 6.1 Developer User’s guide:
Transformers and Array Variables
When creating links between pipeline variables and transformers, differences in dimensionality for the source and target variables may cause an exception. If the dimensionality of the target variable is greater than the dimensionality of the source variable, an exception will not be thrown. However, if the dimension of the source variable is greater than the dimension of the target variable, an exception will occur.
What Is Dimensionality?
Dimensionality refers to the number of arrays to which a variable belongs. For example, the dimensionality of a single String is 0, that of a single String list or document list is 1, and that of a single String table is 2. A String that is a child of a document list has a
dimensionality of 1. A String list that is a child of a document list has a dimensionality of 2.
To solve this, you can either:
Change the service invoked by the transformer to accept arrays as data, or Create a flow service in which a LOOP step loops over the array variable. Then, (in the same flow service) invoke the service you originally wanted to use as a transformer, and make that INVOKE step a child of the LOOP. Finally, insert the resulting flow service as a transformer in the MAP.
Of the two options, changing the service to accept arrays as data results in faster execution of flow services.