In the normal course of building a model, tools will update their derived (output) data elements to reflect changes that will be made by the tool when it executes. For example, in the model below, a new field named ONEWAY is added to Streets. The variable Streets (2) is updated by the Add Field tool to contain the newly added ONEWAY field. When the Calculate Field tool is opened, it sees the ONEWAY field, even though the Add Field tool has not yet been executed.
This updating of derived data to reflect the results of the tool simplifies model creation. Almost all geoprocessing tools can update their derived data in this manner; however, there are a few tools that can't. Such data is called incomplete derived data.
Why does incomplete derived data occur?
The reason that some tools create incomplete derived data is because they don't know their results until the tool is executed.
For example, the
Import from Interchange File tool reads an ArcInfo interchange file (.e00 file) containing ArcInfo coverage data. An ArcInfo coverage contains feature classes, and, as with all feature classes, fields and shape types (point, line, polygon). However, the Import from Interchange File tool cannot determine any of the field names, their attributes, or the shape type until it reads all the records in the interchange file and assembles the pertinent information, which can only occur when the tool is executed. For the same reason, many of the tools found in the
Conversion toolbox are unable to create complete derived data
All script tools will output incomplete derived data. Technically, this is because script tools do not have the capability to validate themselves like system tools (validation is when derived data elements are updated).
Another example is the
Split tool, which creates new feature classes in its derived workspace or feature dataset. The tool doesn't know the number of feature classes or their names until it executes, so the Split tool outputs incomplete derived data (the workspace or feature dataset).
A final example is the
Create Table tool, which is used in the
example model found in the
Creating a simple model topic. The Create Table tool automatically adds certain fields depending on the type of table output (geodatabase, .dbf, or INFO). However, the Create Table tool does not update its derived table element with these automatically added fields because it does not know what fields it will have to add until it executes.
Using incomplete derived data
When you encounter a process that outputs incomplete derived data and you want to use this as input to another process, you have two options:
- If you know the behavior of the process and the data it will create, you can type the values for parameters in the succeeding tool's dialog.
- In ModelBuilder, run the process that creates incomplete derived data. Once the process changes to the has-been-run-state, the derived data will be complete.
Both these options are described below. The following example is taken from
Creating a simple model.
Method 1: Type in a value
In the above illustration, the Delete Field dialog only contains the field that the Add Field process adds, Table_ID. It does not contain the fields that Create Table adds to make the new table a valid table. One of these fields is named Field1. You can add Field1 to the list of Drop Fields by clicking Add Field.
After adding Field1 to the list of fields to delete, you will get a warning that Field1 doesn't exist, as shown below. This is only a warning, and you can ignore it. By the time Delete Field is run in the model, Field1 will exist.
Not all tool dialogs allow you to type values that you know will exist at some future point; or, they may allow you to type them in but will return an error instead of a warning. In this case, you can use Method 2 below.
Method 2: Run the process
In ModelBuilder, you can run individual processes. Once you run a process, the derived data elements are always updated to contain the results of the process. In the illustration below, the Add Field process was run (which caused the Create Table process to run). Once the input to the Delete Field tool (New Table (2)) is in the has-been-run state, the Delete Field tool dialog will show all the fields.
Learn more about process statesLearn more about running models