---
id: transformations
title: Transformations
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Transformations
Transformations can be enabled on queries to transform the query results. ToolJet allows you to transform the query results using two programming languages:
- **[JavaScript](#transform-using-javascript)**
- **[Python](#transform-using-python)**
:::caution
- Every transformation is scoped to the query it's written for.
- Actions and CSA(Component Specific Actions) cannot be called within the transformation, they can only be called within `RunJS`.
:::
## Transform using JavaScript
Let's write a simple transformation to compute `first_name` and `last_name` for all the customers that we fetch in the previous step.
```javascript
// write your code here
// return value will be set as data and the original data will be available as rawData
return data.map((row) => {
return {
...row,
first_name: row.name.split(' ')[0],
last_name: row.name.split(' ')[1],
};
});
```
The query will now look like this:
## Transform using Python
Let's use Python transformation to compute `first_name` and `last_name` for all the customers that we fetch in the previous step.
```python
return list(map(lambda row: {
**row,
'first_name': row['name'].split(' ')[0],
'last_name': row['name'].split(' ')[1],
}, data))
```
#### Example
- Let's take a look at the data returned by a RESTAPI (using mock data here):
We can see that `first_name` and `last_name` are added to all the rows in the `data` object of the query. If you need the original data of the query, it will be available in the `rawData` object of the query.