Skip to content

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
}

References