Data Types
Cast types
The rename operator accepts an optional third parameter to convert the value to the specified type.
| Type | Description | Input | Result |
|---|---|---|---|
string |
Text | 123, true |
"123", "true" |
number |
Decimal | "3.14", 42 |
3.14, 42.0 |
integer |
Integer | "42", 3.9 |
42, 3 |
boolean |
Boolean | 1, "false" |
true, false |
array |
Array | "a,b,c" |
["a","b","c"] |
If the value is None or the string "null", all types return null without error.
string
Converts the value to text using str(). If the value is a Python boolean, it converts it to lowercase: True → "true", False → "false".
number
Converts to float using float().
[{"var": "price"}, "precio", "number"]
integer
Converts to int using int(). Truncates decimals without rounding.
[{"var": "qty"}, "cantidad", "integer"]
boolean
- If the value is the string
"false"(case-insensitive) →false - Any other truthy value →
true
[{"var": "active"}, "activo", "boolean"]
array
Automatically detects separators in the following priority order: ;, ,, ;, ,, ;, ,.
If no separator is found, wraps the value in an array: "solo" → ["solo"].
[{"var": "tags"}, "etiquetas", "array"]
TypeResponse
Every ETL operation returns a TypeResponse object with the following structure:
| Field | Type | Description |
|---|---|---|
data |
dict \| list |
Data resulting from the operation |
total |
int |
Number of records in data |
success |
bool |
true if the operation was successful |
message |
str \| int |
HTTP status code (200, 400, etc.) |
Successful response
{
"data": [
{"id_pedido": "123", "total": 99.99, "cliente": "Empresa ABC"}
],
"total": 1,
"success": true,
"message": 200
}
Response with transformation error
When a rule fails, success is false, message is 400, and data includes the error detail:
{
"data": {
"error_message": "Error applying rule: ...",
"input_data": [{"orderId": "123"}],
"rules": {"rename": [...]}
},
"total": 0,
"success": false,
"message": 400
}