ToolJet/docs/versioned_docs/version-2.68.0/tutorial/transformations.md
Aman Regu bdfe3270e2
[docs]: v2.68.0-Beta (#10755)
* docs: jira

* docs: formatting + Client Credentials grant type

* docs: connection string pgsql

* docs: parameterized queries mysql

* docs: parameterized queries in PostgreSQL

* docs: update mysql example

* docs: TJDB sql editor

* docs: add metadata to REST API

* docs: add, update  postgresql media

* docs: add metadata to graphql

* docs: update parameterized queries

* docs: add parameterized queries for mssql

* docs: add SSL Cert to mysql

* docs: TJDB SQL restricted commands

* docs: update JIRA token location

* docs: update delete issue example

* docs: update find user by query example

* docs: remove session id from get assignable users

* docs: use correct image for get issues for board

* docs: update create issue example

* docs: update delete issue media

* docs: update assignable users media

* docs: update examples

* docs: update key desc

* docs: v2.68.0-Beta
2024-09-13 19:23:19 +05:30

3.3 KiB

id title
transformations 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:

:::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 query or RunPy query. :::

Transform using JavaScript

Let's assume a query is returning the customers data with a name row, so we will write a simple transformation to compute first_name and last_name for all the customers.

// 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:

Transformation

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.

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):

    raw data
  • Now we will transform the returned data using Python that will append a new key in the returned data called user and that user will have the value from the exposed global variables of ToolJet which is globals.currentUser.email

    return list(map(lambda item: {**item, "user": f"{globals['currentUser']['email']}"}, data))
    
  • Now, you can click on the preview button to check the transformed data.

    raw data

Click the Save button to create the query. Saved queries can be run using the Run button on the top-right of query panel. Queries run using the run button will behave just as if it was triggered by an app event like button click and thus will alter the state of the app. You can view the query results using the state inspector on the left side-bar of the app builder.

result

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.

raw data