Ir para o conteúdo

Operadores JSON Logic

JSON Logic é um sistema de regras baseado em JSON que permite criar transformações complexas de dados de forma declarativa. Fracttal ETL Hub implementa um conjunto estendido de operadores JSON Logic para manipular dados durante as transformações ETL.

Operação Básica

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

Operadores de Comparação

Igualdade (==)

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

Maior que (>)

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

Menor ou igual (<=)

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

Operadores Lógicos

E (and)

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

OU (or)

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

NÃO (!)

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

Operadores de String

Concatenação (cat)

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

Substring (substr)

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

Operadores de Array

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
    ]
  }
}

Operadores Customizados

Adicionar Campo (add)

Adiciona um novo campo aos dados:

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

Renomear Campo (rename)

Renomeia um campo existente:

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

Formato de Data (date_format)

Formata campos de data:

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

Exemplos Complexos

Validação de Usuário

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

Enriquecimento de Dados

{
  "transform": {
    "if": [
      {">": [{"var": "score"}, 80]},
      "excelente",
      {
        "if": [
          {">": [{"var": "score"}, 60]},
          "bom",
          "precisa_melhorar"
        ]
      }
    ]
  }
}