1

I have a list of 250 feature classes (X1, X2 X3, ...) which all have an individual field that I want to join to another feature class Y. The join can be established through a common field that are both present in Xx and Y. Individually I can use the 'join field' tool to join each Xx field to the Y feature class but this will take me a long time. Is there a way I can batch 'join field' where I use wildcards within the join field settings? Preferably I would like to do this in ModelBuilder, unless someone knows a working python script.

Within ModelBuilder I have tried to use the batch 'join field' tool and an iterator. This did not do the job as the list of values (Join field as list of parameters) did not recognize the joins.

I have attached a picture which might clarify my problem. The issue is that I cannot edit the input join Field column as it gets this list from a geodatabase through an iterator.

Batch  Join Field Table in ModelBuilder. I cannot add a list of values for the Join table column.

2

What you are showing in the image is Join Field tool in batch mode (it is not a model created with model builder). So I think there is misunderstanding here!

To achieve your goal do these steps:

  1. create an empty model
  2. Go to Insert > Iterators > Feature Classes
  3. Double click on "Iterate Feature Classes" tool and select your workspace (which contains your features classes)
  4. Drag your join feature class (Y) to the model.
  5. Drag the Join Field tool to the model too.
  6. Fill Join Field tool paramteres

the final model should look like this:

Batch Join Field with Model

  • Thanks for your answer. I'm actually using the Join Field tool WITHIN model builder. If you would only use the Iterator without the batch join field tool won't you get the problem that you can't select for every X feature what field needs to be joined with Y? My problem is that all my X fields have different names to make distinction. Therefore my 'Join field' will always be different. Do you understand what I mean? – Jelle Feb 15 '15 at 23:54
  • I have tried using your model without the 'batch join field' tool, but that does not seem to do the trick because I can only specify one field of one X field to join with Y. For all the Xx, the field is not present and therefore not joined to Y. I get the 'error': "Field X1 does not exist within table." which makes sense because it doesn't. It's X2, X3, and so on. – Jelle Feb 16 '15 at 0:37
  • You mentioned in your question that "The join can be established through a common field that are both present in Xx and Y". If this is not the case you should write some python code. – Farid Cheraghi Feb 16 '15 at 6:46
  • I would recommend to rename all fields to a unique field then use the simple model. I see a pattern in your join field names (all starts with SJ_Count_inSA*). In python extract the field name and rename it to a unique value for all feature classes. You don't know python, you are welcome to ask me for some code snippets – Farid Cheraghi Feb 16 '15 at 11:35
1

Thanks for your input and ideas. I have solved it by giving the same field name ("SJ_count") in my input feature classes X1, X2, X3. After the join I altered the field name using the in-line variable substution string (count_name) given with the iterator as my addition. So my new field name became "SJ_count_%count_field%). An example of a field name woud then be: "SJ_count_InSA20_Walk_CRB". I have attached to visualize my model better:

enter image description here

I do have a next related issue which I address in another post in detail here.

The question here is: How would I be able to only use part of the in-line variable substiution? So For example that my field name would only be "SJcount_InSA_20_Walk" (Without the "_CRB").

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.