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