Incomplete derived data


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.

Example model

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:

Both these options are described below. The following example is taken from Creating a simple model.

Method 1: Type in a value

Incomplete derived data from Create Table

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.

Drop field dialog

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.

Run processes to create complete derived data

Learn more about process states

Learn more about running models

See Also