📊 Query System
Sistema de queries SQL-like para dados - como LINQ em C# ou Spark
Sintaxe
let users = [
{name: "Alice", age: 25, city: "NYC"},
{name: "Bob", age: 30, city: "LA"}
]
// Sintaxe de query
let young = select u in users where u.age < 30
Funções de Query
| Função | Descrição | Exemplo |
|---|---|---|
select(data, ...fields) | Seleciona campos | select(users, "name") |
where(data, cond) | Filtra dados | where(users, .age > 20) |
order_by(data, field, dir) | Ordena | order_by(users, "name", "asc") |
group_by(data, field) | Agrupa | group_by(users, "city") |
join(a, b, on, type) | Joins | join(users, orders, .id == .user_id) |
count(data) | Conta | count(users) |
sum(data, field) | Soma | sum(users, "age") |
avg(data, field) | Média | avg(users, "age") |
min(data, field) | Mínimo | min(users, "age") |
max(data, field) | Máximo | max(users, "age") |
pluck(data, field) | Extrai campo | pluck(users, "name") |
distinct(data) | Únicos | distinct(users) |
Exemplos
// Query completo
let result = users
|> where(.age >= 18)
|> order_by("name")
|> select("name", "city")
// Group by
let by_city = group_by(users, "city")
for city in by_city
print("{city.key}: {city.count} users")
end
// Aggregates
let stats = users
|> count() // 2
|> sum("age") // 55
|> avg("age") // 27.5
|> min("age") // 25
|> max("age") // 30