Skip to content

JSON Logic Operators

JSON Logic is a JSON-based rule system that allows creating complex data transformations declaratively. Fracttal ETL Hub implements an extended set of JSON Logic operators to manipulate data during ETL transformations.

Basic Operation

{
  "transform": {
    "var": ["data", "field_name"]
  }
}

Comparison Operators

Equality (==)

{
  "transform": {
    "==": [
      {"var": "status"},
      "active"
    ]
  }
}

Greater than (>)

{
  "transform": {
    ">": [
      {"var": "age"},
      18
    ]
  }
}

Less than or equal (<=)

{
  "transform": {
    "<=": [
      {"var": "score"},
      100
    ]
  }
}

Logical Operators

AND (and)

{
  "transform": {
    "and": [
      {">": [{"var": "age"}, 18]},
      {"==": [{"var": "status"}, "active"]}
    ]
  }
}

OR (or)

{
  "transform": {
    "or": [
      {"==": [{"var": "role"}, "admin"]},
      {"==": [{"var": "role"}, "moderator"]}
    ]
  }
}

NOT (!)

{
  "transform": {
    "!": {"==": [{"var": "status"}, "deleted"]}
  }
}

String Operators

Concatenation (cat)

{
  "transform": {
    "cat": [
      {"var": "first_name"},
      " ",
      {"var": "last_name"}
    ]
  }
}

Substring (substr)

{
  "transform": {
    "substr": [
      {"var": "email"},
      0,
      5
    ]
  }
}

Array Operators

Map (map)

{
  "transform": {
    "map": [
      {"var": "users"},
      {"var": "name"}
    ]
  }
}

Filter (filter)

{
  "transform": {
    "filter": [
      {"var": "users"},
      {">": [{"var": "age"}, 18]}
    ]
  }
}

Reduce (reduce)

{
  "transform": {
    "reduce": [
      {"var": "numbers"},
      {"+": [{"var": "accumulator"}, {"var": "current"}]},
      0
    ]
  }
}

Custom Operators

Add Field (add)

Adds a new field to the data:

{
  "transform": {
    "add": [
      {"var": "first_name"},
      " ",
      {"var": "last_name"},
      "full_name",
      "string"
    ]
  }
}

Rename Field (rename)

Renames an existing field:

{
  "transform": {
    "rename": [
      [{"var": "old_field"}, "new_field", "string"]
    ]
  }
}

Date Format (date_format)

Formats date fields:

{
  "transform": {
    "date_format": [
      {"var": "created_at"},
      "%Y-%m-%d",
      "formatted_date",
      "string"
    ]
  }
}

Complex Examples

User Validation

{
  "transform": {
    "and": [
      {"!=": [{"var": "email"}, null]},
      {">": [{"var": "age"}, 0]},
      {"in": [{"var": "status"}, ["active", "pending"]]}
    ]
  }
}

Data Enrichment

{
  "transform": {
    "if": [
      {">": [{"var": "score"}, 80]},
      "excellent",
      {
        "if": [
          {">": [{"var": "score"}, 60]},
          "good",
          "needs_improvement"
        ]
      }
    ]
  }
}