# Transformation Nodes
The CSV node generate valid CSV output from a message containing key/value pairs of data. The CSV node can be used to generate well-formatted CSV strings. The CSV has been configured with the desired column names and uses the corresponding object properties to fill in those columns. The resulting message contains the well-formatted CSV string for that single row of data - including a newline character at the end.
# Set Property
The Set Property node can be used to modify a message’s properties and set context properties without having to resort to a Function node.
The node can be configured with multiple operations that are applied in order. The available operations are as follows.
Set set a property. The value can be a variety of different types, or can be taken from an existing message or context property.
Change Search and replace parts of a message property.
Move Move or rename a property.
Delete Delete a property.
Example: How to use a Set Property node.
The datamapper node can be used for data transformation in JSON format. It gives all the flexibility for mapping the json fields and manipulating the fields with custom logics .
The node is based on JSONata transformation query language. It supports sophisticated query expressions with minimal syntax. Has Built in operators and functions for manipulating and combining data Can create user-defined functions.
Variables can be accessed inside the datamapper node using the expression
vars.variablename and environment variable can be accessed using the expression
Payload can be accessed inside the datamapper using the expression
The mapping logic can be tested inside the datamapper editor using your sample payload. In this way you get the immediate result of your mapping logic under the Result panel of datamapper editor.
Input payload to the datamapper must be a JSON. For more details related to JSONata language, refer the following link https://docs.jsonata.org/overview.html
The message is passed in as an object called msg. By convention it will have a msg.payload property containing the body of the message.
A variable can be accessed in function node using $vars.get("key"). Similarly a variable can be set using
$vars.set("key","value"). A message can be accessed in function node using
$msg.get("key") and can be set using
$msg.set("key","value"). An environment variable can be accessed using $env.get("key"). The node doesn't provide the option for modifying the environment variable.
The Template node can be used to generate text using a message’s properties to fill out a template.
It uses the Mustache templating language to generate the result. For example, a template of: This is the payload: [[payload]] ! . Will replace with the value of the message’s payload property. By default, Mustache will replace certain characters with their HTML escape codes. To stop that happening, you can use triple braces: v-pre