# Using Output Variables in Astera

The *Variables* object in Astera allows users to create variables that can be used in multiple objects within a dataflow or workflow. The user can assign a fixed value to a variable or allocate it dynamically, depending on the requirement. An output variable is used when you need to pass a certain value from an inner flow (dataflow) to an outer flow (workflow).

## **Use Case**

In this case, we have a *Customers* dataset with *LateArrivals* and *TotalOrders* fields that contain the count of orders that arrived late and the total number of orders for each customer, respectively. We want to find out the following:

1. The total number of orders, by summing all the entries in the *TotalOrders* column, for each customer.
2. The total number of orders which were shipped late, by summing all the entries in the *LateArrivals* column.
3. The percentage of orders which were shipped late, by using the following expression: PercentageLate = (LateArrivals/TotalOrders) \* 100.

Finally, we want to notify the administration by sending them an automated e-mail if the *PercentageLate* is greater than a fixed *Threshold* value.

## **Using the Variables object in a Dataflow**

To achieve our desired functionality, we have created a dataflow with the following objects:

![](https://3891069449-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F28dJIkGHacXhBlux3efx%2Fuploads%2Fluf4at0KAKI9uoOQzafF%2F0.png?alt=media)

1. [*Delimited File Source*](https://documentation.astera.com/astera-data-stack-v9/dataflows/sources/delimited-file-source)*:* To read the *Customers* dataset from the CSV file.
2. [*Aggregate Transformation*](https://documentation.astera.com/astera-data-stack-v9/dataflows/transformations/aggregate-transformation)*:* To sum the values in the *LateArrivals* and *TotalOrders* columns.
3. [*Expression Transformation*](https://documentation.astera.com/astera-data-stack-v9/dataflows/transformations/expression-transformation)*:* To calculate *PercentageLate.*
4. *Variables:* To set the output variables, *PercentLate* and *Threshold*.

## **Steps to Assign Values to Output Variables**

1. Drag and drop the *Variables* object from the *Resources* section of the *Toolbox* onto the designer.

![](https://3891069449-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F28dJIkGHacXhBlux3efx%2Fuploads%2FtBqoggcYYpiEF1jGASn3%2F1.png?alt=media)

2. Right-click on the *Variables* object and select *Properties.* Alternatively, you can also double-click on the object’s header to open *Properties.*

![](https://3891069449-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F28dJIkGHacXhBlux3efx%2Fuploads%2FNNTq9ZBmj7PZBtWaKZVQ%2F2.png?alt=media)

3. A *Variables Properties* window will open, where you can specify the *Name, Data Type, Variable Type, Default Value, and Parameter Path* of the variable.

![](https://3891069449-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F28dJIkGHacXhBlux3efx%2Fuploads%2Fc54mZdCulOhpEjhg7vIa%2F3.png?alt=media)

4. Specify appropriate values for *Name, Data Type, Variable Type,* and *Default Value* (**optional**) for the variables you want to create. In this case, we want to create output variables, *PercentLate* and *Threshold*.

![](https://3891069449-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F28dJIkGHacXhBlux3efx%2Fuploads%2FEYqyUfnckVcSxVwBsRVc%2F4.png?alt=media)

5. Go to the drop-down menu in the *Parameter Path* column and expand the *Expression* section. Select *PercentageLate*.

![](https://3891069449-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F28dJIkGHacXhBlux3efx%2Fuploads%2FRaP34oErnBTwtYD1oFoO%2F5.png?alt=media)

*PercentageLate* will only appear in this drop-down menu if it is marked as a *Variable* in the properties of the *Expression* object, as shown below.

![](https://3891069449-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F28dJIkGHacXhBlux3efx%2Fuploads%2FrNC4sPphBgMYjZy90vGi%2F6.png?alt=media)

6. To set the value of the variable, *Threshold*, we will create a new variable, *SetThreshold,* and use the $SetVariable(String Variable, Any Value) function in the *Layout Builder* of the *Expression* object. Make sure to specify the parameters of the function with the correct syntax.

![](https://3891069449-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F28dJIkGHacXhBlux3efx%2Fuploads%2FZPxtO7NPWmp4yccA62Vh%2F7.png?alt=media)

Here, we have set the value of *Threshold* to 9.99. Click *OK* to close this window.

{% hint style="info" %}
**Note:** The Set Variable functionality works in two cases only:

1. When there is a set-level transformation (purple box) in the flow. Here, we have used an *Aggregate* transformation, which is a set transformation, in the dataflow. If you do not have a set-level transformation in your flow, you can add a *Passthru* transformation and pass the data from the *Expression* object to it.
2. Alternatively, in case you do not want to use a set-level transformation, you can uncheck all the checkboxes in the *Output* column in the *Layout Builder* of the *Expression* object for this functionality to work.
   {% endhint %}

We have successfully configured the *Variables* object in the dataflow.

## **Using the Variables in a Workflow**

We will now complete our desired use case by using [workflow tasks](https://documentation.astera.com/astera-data-stack-v9/workflows/creating-workflows-in-astera). We can run the dataflow in a workflow using the *Run Dataflow* object. In our case, we have made the following workflow (shown below) to notify the admin if the *PercentLate* exceeds the *Threshold* value. Notice that the *PercentLate* and *Threshold* variables appear in the *Run Dataflow* object because they are defined as output variables.

![](https://3891069449-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F28dJIkGHacXhBlux3efx%2Fuploads%2Fn651E4JdjgZqgMaramVg%2F8.png?alt=media)

The output of the *Decision* object depends on the following conditions:

![](https://3891069449-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F28dJIkGHacXhBlux3efx%2Fuploads%2FBmmkmu3Y01mcV0UQVLyK%2F9.png?alt=media)

If the *PercentLate* is greater than the defined *Threshold*, our *Decision* object will return True, and the *SendMail* task will be executed. Here is a job trace of the workflow:

![](https://3891069449-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F28dJIkGHacXhBlux3efx%2Fuploads%2F1KnHpsf2P9gtr3tORTTX%2F10.png?alt=media)

The *Decision* object has returned False as our *PercentLate* variable, 4.4%, is less than our specified *Threshold* of 9.99%.

This is how you can use the *Variables* object to create and use output variables in Astera.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://documentation.astera.com/astera-data-stack-v9/miscellaneous/using-output-variables-in-astera.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
