Modo Recorrente¶
O modo recorrente faz o gerador produzir batches de dados em intervalos regulares, simulando um pipeline de dados contínuo ou incremental.
Ativando¶
Use a flag -R / --recurrence com o intervalo em segundos:
# Um batch a cada 30 segundos, indefinidamente
docker compose run --rm cli generate -d finance -f json -R 30
# Exatamente 10 batches com intervalo de 60 segundos
docker compose run --rm cli generate -d ecommerce -f parquet -R 60 --count 10
Para parar manualmente: Ctrl+C.
Flags do modo recorrente¶
| Flag | Padrão | Descrição |
|---|---|---|
--recurrence / -R |
— | Intervalo em segundos entre batches (ativa o modo) |
--count |
0 |
Número de batches (0 = infinito) |
Seed incremental¶
Quando --seed é usado com modo recorrente, o seed de cada batch é calculado como seed + batch_index - 1. Isso garante que cada batch produza dados diferentes mas determinísticos:
- Batch 1: seed = 42
- Batch 2: seed = 43
- Batch 3: seed = 44
Continuidade de int_seq¶
Colunas com dtype: int_seq são contínuas entre batches. O gerador acumula o offset de linhas por tabela:
- Batch 1 (100 linhas): IDs 1 a 100
- Batch 2 (100 linhas): IDs 101 a 200
- Batch 3 (100 linhas): IDs 201 a 300
Incremento de colunas (--increment)¶
A flag --increment desloca os valores de uma coluna a cada batch, simulando avanço temporal ou numérico:
Unidades disponíveis¶
| Unidade | Descrição |
|---|---|
days |
Dias (padrão) |
hours |
Horas |
weeks |
Semanas |
months |
Meses (≈ 30,44 dias) |
years |
Anos (≈ 365,25 dias) |
value |
Valor numérico puro |
Exemplos¶
# Avança a coluna "created_at" 1 dia por batch
docker compose run --rm cli generate -d ecommerce -f parquet -R 10 \
--increment "orders:created_at:1:days"
# Avança o valor de "amount" em 100 a cada batch
docker compose run --rm cli generate -d finance -f csv -R 5 \
--increment "transactions:amount:100:value"
# Avança por hora
docker compose run --rm cli generate -d finance -f json -R 3 \
--increment "transactions:created_at:1:hours"
O offset aplicado é passo × (batch_index - 1), portanto o batch 1 tem offset zero.
Comportamento de escrita por formato¶
| Formato | Batch 1 | Batches 2+ |
|---|---|---|
| CSV | Cria o arquivo | Append no mesmo arquivo |
| JSON flat | Cria o arquivo | Append no mesmo arquivo |
| Parquet | Cria tabela.parquet |
Cria tabela_YYYYMMDD_HHMMSS.parquet |
| Avro | Cria tabela.avro |
Cria tabela_YYYYMMDD_HHMMSS.avro |
Comportamento SQL¶
- Batch 1: usa o valor de
--if-exists - Batches 2+: forçado para
append
Interface visual¶
O painel Run Generator da interface visual expõe o campo de intervalo de recorrência e número de batches. Os logs de execução aparecem em tempo real e o processo pode ser interrompido pelo botão de parada.
Saída no terminal¶
Recurrence mode: interval=30.0s | batches=infinite | Ctrl+C to stop
------------------------------------------------------------
[Batch 1] 2024-01-15 10:00:00
[csv] output/ecommerce/orders/orders.csv
[csv] output/ecommerce/customers/customers.csv
Aguardando 30.0s... (Ctrl+C para parar)
[Batch 2] 2024-01-15 10:00:30
[csv/append] output/ecommerce/orders/orders.csv (+1000 rows)
[csv/append] output/ecommerce/customers/customers.csv (+500 rows)
Aguardando 30.0s... (Ctrl+C para parar)