Catálogo
O catálogo lê o esquema das conexões (famílias PostgreSQL, MySQL, SQL Server e SQLite) e deixa você anotar cada coluna com uma descrição. As descrições aparecem no autocompletar do editor e na busca global. Nas outras engines a consulta funciona, mas o catálogo fica vazio — introspecção só entra depois de verificada contra uma instância real.
Métricas
Uma métrica é um SQL com nome — "receita", "clientes ativos" — definido uma vez. Em qualquer consulta, `{{metric:receita}}` expande para o SQL da métrica como subconsulta, então relatório, painel e consulta avulsa respondem a "o que é receita?" com a mesma resposta. Limites: 3 métricas no Solo, 15 no Pro, 50 no Team, 500 no Business.
SELECT regiao, SUM(valor) AS receita
FROM ({{metric:receita_bruta}}) r
GROUP BY regiaoSlug inexistente é erro na execução, não silêncio — uma métrica renomeada quebra a consulta que a cita, de propósito.
Testes de qualidade
Cada consulta pode carregar testes que rodam a cada execução — agendada ou manual — e gravam passou/falhou com a mensagem. Um teste com severidade aviso ou crítico que falha dispara o evento `data_quality.test_failed` nos webhooks de saída.
| Regra | O que verifica |
|---|---|
| rows_gte / rows_lte / rows_eq | contagem de linhas contra um limite |
| not_empty | pelo menos uma linha |
| freshness_hours | o maior valor de uma coluna de data está dentro de N horas — é o SLA de frescor: "atualiza a cada hora, senão alerta" |
| no_nulls | uma coluna sem nulos |
| unique_col | uma coluna sem repetições |
| custom_sql | um SQL seu que deve devolver uma linha com valor verdadeiro |