ETL em 5 Minutos
Este guia te levará do zero até ter seu primeiro ETL funcionando em menos de 5 minutos.
O que vamos alcançar
Transferir dados de um banco MySQL para Google Sheets automaticamente.
graph LR
A[MySQL Database] --> B[Fracttal ETL Hub] --> C[Google Sheets]
A --> D[Tabela Orders]
B --> E[Transform Layer]
B --> F[Validation Engine]
C --> G[Planilha Atualizada]
classDef database fill:#e3f2fd,stroke:#1976d2,stroke-width:3px,color:#1565c0
classDef etl fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px,color:#6a1b9a
classDef target fill:#e8f5e8,stroke:#388e3c,stroke-width:3px,color:#2e7d32
class A,D database
class B,E,F etl
class C,G target
Pré-requisitos (1 minuto)
Antes de começar, certifique-se de ter:
- Acesso ao Hub ETL (solicite credenciais ao seu administrador)
- Banco de dados com tabela de exemplo
- Google Sheets conta com permissões de escrita
!!! tip "Não tem dados de teste?" Você pode usar nosso sandbox com dados demo. Pule para exemplo com sandbox.
Passo 1: Configuração Básica (1 minuto)
Estrutura mínima do ETL
meu-primeiro-etl.json
{
"id": "12345678-1234-1234-1234-123456789abc",
"jsonrpc": "2.0",
"method": "etl.etl_update",
"params": {
"id": "meu-primeiro-etl",
"config": {
"source": {
"id_type": 1,
"host": "localhost",
"port": 3306,
"database": "ecommerce",
"username": "etl_user",
"password": "senha_segura",
"form": {
"sql": "SELECT order_id, customer_name, total, order_date FROM orders WHERE order_date >= '2024-01-01'"
}
}
}
}
}
Passo 2: Adicionar Transformação (1 minuto)
Formatar dados para Google Sheets
secao-transform
"transform": [
{
"format_date": {
"field": "order_date",
"input_format": "%Y-%m-%d %H:%M:%S",
"output_format": "%d/%m/%Y"
}
},
{
"rename": {
"order_id": "ID Pedido",
"customer_name": "Cliente",
"total": "Valor",
"order_date": "Data"
}
}
]
Passo 3: Configurar Destino (1 minuto)
Destino Google Sheets
secao-target
"target": {
"id_type": 10,
"credentials_path": "/caminho/para/google-credentials.json",
"form": {
"spreadsheet_id": "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms",
"range": "Planilha1!A1",
"value_input_option": "RAW"
}
}
Passo 4: Configuração Completa (30 segundos)
ETL completo pronto para executar
config-etl-completa.json
{
"id": "12345678-1234-1234-1234-123456789abc",
"jsonrpc": "2.0",
"method": "etl.etl_update",
"params": {
"id": "pedidos-para-sheets",
"config": {
"source": {
"id_type": 1,
"host": "localhost",
"port": 3306,
"database": "ecommerce",
"username": "etl_user",
"password": "senha_segura",
"form": {
"sql": "SELECT order_id, customer_name, total, order_date FROM orders WHERE order_date >= CURDATE() - INTERVAL 7 DAY"
}
},
"transform": [
{
"format_date": {
"field": "order_date",
"input_format": "%Y-%m-%d %H:%M:%S",
"output_format": "%d/%m/%Y"
}
},
{
"rename": {
"order_id": "ID Pedido",
"customer_name": "Cliente",
"total": "Valor",
"order_date": "Data"
}
}
],
"target": {
"id_type": 10,
"credentials_path": "/credentials/google-sheets.json",
"form": {
"spreadsheet_id": "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms",
"range": "Planilha1!A1",
"value_input_option": "RAW"
}
}
}
}
}
Passo 5: Executar (30 segundos)
Enviar configuração para ETL Hub
curl -X POST http://seu-etl-hub:8080/jsonrpc \
-H "Content-Type: application/json" \
-H "Authorization: Bearer seu-api-token" \
-d @config-etl-completa.json
Resposta esperada
{
"jsonrpc": "2.0",
"result": {
"status": "success",
"message": "ETL pedidos-para-sheets criado com sucesso",
"execution_id": "exec_987654321"
},
"id": "12345678-1234-1234-1234-123456789abc"
}
Verificação (30 segundos)
Verificar seu Google Sheets
- Abrir sua planilha no Google Sheets
- Verificar dados aparecem na Planilha1
- Verificar formatação - datas devem estar DD/MM/AAAA
Resultado esperado
| ID Pedido | Cliente | Valor | Data |
|---|---|---|---|
| 1001 | João Silva | 299,99 | 25/01/2024 |
| 1002 | Maria Santos | 156,50 | 26/01/2024 |
Demo Sandbox
Use nosso ambiente de teste
Se você não tem seus próprios dados, use nosso sandbox:
config-sandbox.json
{
"id": "demo-12345",
"jsonrpc": "2.0",
"method": "etl.etl_update",
"params": {
"id": "demo-sandbox",
"config": {
"source": {
"id_type": 1,
"host": "demo.fracttal.com",
"port": 3306,
"database": "loja_demo",
"username": "usuario_demo",
"password": "senha_demo",
"form": {
"sql": "SELECT * FROM pedidos_exemplo LIMIT 10"
}
},
"target": {
"id_type": 10,
"credentials_path": "/demo/credentials.json",
"form": {
"spreadsheet_id": "id_planilha_demo",
"range": "Demo!A1"
}
}
}
}
}
Solução de Problemas
Problemas comuns nos primeiros 5 minutos
Falha na conexão do banco
Erro: Conexão recusada para localhost:3306
Permissão negada no Google Sheets
Erro: 403 Permissões insuficientes
Sintaxe SQL inválida
Erro: Erro de sintaxe SQL próximo a 'SELCT'
Próximos Passos
Parabéns! Você criou seu primeiro ETL em 5 minutos.
O que explorar a seguir:
- Transformações Avançadas - Mais operadores de processamento
- Múltiplos Destinos - Enviar para múltiplos destinos
- Agendamento - Automatizar execução
- Tratamento de Erros - Lidar com falhas elegantemente
Caminho de aprendizado:
- Iniciante: Guia Completo
- Intermediário: Casos de Negócio
- Avançado: Operadores Customizados
Precisa de ajuda? Confira nosso Hub de Solução de Problemas ou contate o suporte.