Using data
Many steps in axiom allow data to be passed from previous steps. In earlier parts of the documentation, you will have seen how to use data in specific circumstances. This page will describe how the system works in general.
# Passing data from one step to another
Many steps in axiom output data. You can see which steps output data by looking in the header section of a step; those which contain a yellow chip will output data.
Data variables have a specific name, which is used to refer uniquely to the output of that step.
Fields that can accept data will contain a yellow dropdown. Selecting the data variable from this dropdown will pass the data from the step that produced it into the current step for processing.
When passing data, you can either pass all the data or select a subset of data to pass. For data that supports this, you will see the following window when adding data:

To pass specific columns, click the "Clear All" and then click the column headings to select the data you wish to pass.
At runtime, the data will be replaced with the output from its associated step, exactly as though you had entered that data manually into the box.
Some steps require data to be passed to function. In these cases, if you have not yet added a step that outputs data you will be warned.

# Data properties and format
Almost all of the data output from steps are formatted as a two dimensional array of rows and columns, identical to the format used in a spreadsheet. All steps that can handle data will accept this format, and will behave appropriately.
All data in axiom is immutable, which means that it is constant whenever it is used. Data output from a step is never modified in place by any other step.
However, many steps are able take data as input and produce a new result, which is a modified version of the passed data.
In these cases, the original data remains unchanged and a new data variable is created with the modified value. This is useful to perform tasks such as removing duplicates, removing rows which contain or do not contain values, replacing text, and more.
# Looping through data
The "Interact with a page's interface" step allows you to loop through the rows in a data variable and process a series of sub-steps for each value in that variable.
In this mode, you can select which columns should be used, and it will use these columns for each row in the data.
For more information on how to use this, please see Automating the UI.
For more advanced uses of looping, please see Conditional Logic and Looping.