Jinja2 Templates
O Fracttal ETL Hub usa templates Jinja2 para gerar conteúdo dinâmico durante as transformações. Os templates permitem criar documentos, emails e conteúdo personalizado baseado em dados de entrada.
Sintaxe Básica
Variáveis
Olá {{ name }} {{ lastname }}
Sua idade é: {{ age }}
Filtros
{{ name | upper }}
{{ price | round(2) }}
{{ date | strftime('%d/%m/%Y') }}
Condicionais
{% if user.is_active %}
Usuário está ativo
{% else %}
Usuário está inativo
{% endif %}
Loops
{% for item in items %}
- {{ item.name }}: {{ item.price }}
{% endfor %}
Filtros Comuns
Filtros de String
{{ text | upper }} # MAIÚSCULA
{{ text | lower }} # minúscula
{{ text | title }} # Primeira Letra Maiúscula
{{ text | trim }} # Remove espaços
{{ text | replace('antigo', 'novo') }} # Substitui texto
Filtros de Número
{{ number | round(2) }} # Arredonda para 2 decimais
{{ number | abs }} # Valor absoluto
{{ price | currency }} # Formata como moeda
Filtros de Data
{{ date | strftime('%Y-%m-%d') }} # Formata data
{{ date | age }} # Calcula idade
{{ now() | strftime('%H:%M') }} # Hora atual
Exemplos de Templates
Template de Email
Assunto: Bem-vindo {{ user.name }}!
Caro {{ user.name }},
Obrigado por se registrar conosco em {{ registration_date | strftime('%d de %B de %Y') }}.
Detalhes da sua conta:
- Nome de usuário: {{ user.username }}
- Email: {{ user.email }}
- Plano: {{ user.plan | title }}
{% if user.plan == 'premium' %}
Você tem acesso aos recursos premium!
{% endif %}
Atenciosamente,
A Equipe
Template de Fatura
FATURA #{{ invoice.number }}
Data: {{ invoice.date | strftime('%d/%m/%Y') }}
Faturar para:
{{ customer.name }}
{{ customer.address }}
Itens:
{% for item in invoice.items %}
{{ item.description | ljust(30) }} {{ item.quantity }} x {{ item.price | currency }} = {{ (item.quantity * item.price) | currency }}
{% endfor %}
Subtotal: {{ invoice.subtotal | currency }}
Imposto ({{ tax_rate }}%): {{ invoice.tax | currency }}
Total: {{ invoice.total | currency }}
Configuração no ETL
Transform Template
{
"transform": {
"template": {
"template_string": "Olá {{ name }}, seu pedido #{{ order_id }} está pronto!",
"variables": {
"name": {"var": "customer_name"},
"order_id": {"var": "id"}
}
}
}
}
Melhores Práticas
- Mantenha templates simples e legíveis
- Use nomes de variáveis significativos
- Adicione comentários para lógica complexa
- Teste templates com dados de amostra
- Trate variáveis ausentes graciosamente
- Use filtros para formatação de dados
Considerações de Segurança
- Sanitize entrada para prevenir injeção
- Valide variáveis antes de renderizar
- Escape conteúdo HTML quando necessário
- Limite complexidade do template
Documentação Relacionada
- Custom Operators - Operadores de transformação personalizados
- JSON Logic - Transformações JSON Logic