{% extends "base.html" %} {% block title %}{{ "Editar" if config else "Novo" }} pipeline - engineer_kit{% endblock %} {% block content %}

{{ "Editar pipeline" if config else "Novo pipeline" }}

Monte o fluxo por contratos: API → extraction batches → checkpoint → Bronze → transformação opcional.

{% if error %}
{{ error }}
{% endif %}
SourceRestConnector
ExtractionExtractionSession
StateStateStore
DestinationBronze
Transformopcional
1. Source / Connector
Identifica a origem, a tabela Bronze e a chave do watermark.
Deixe vazio quando a resposta da API já for uma lista.
Default: 25.000 registros. Limita a quantidade entregue ao consumidor por vez. É independente do tamanho da página da API e do write batch do destino.
Opcional para profiling; obrigatória quando dedup está ativo. A PK pode ser simples ou composta e deve referenciar o registro emitido depois de select.
O toggle só define a política. A identidade vem de Primary key. Se a PK repetir, o registro inteiro posterior é descartado.
Recomendação: use Data Profile para medir completude, nulls/missing e duplicatas da PK candidata antes de ativar a deduplicação.
Autenticação
O valor do token/chave não é salvo no YAML; informe apenas o nome usado pelo SecretProvider.
Paginação
{% set p = config.connector.pagination.params if config else {} %}
Exemplo: uma API com página de 1.000 registros pode preencher aproximadamente 25 páginas antes de formar o extraction batch padrão de 25.000. Os controles permanecem independentes.
2. Incremental / StateStore
Local lab: usa DuckDBStateStore. Fora da UI, o mesmo contrato suporta JsonFileStateStore e DeltaStateStore. O Pipeline nunca consulta a Bronze inteira para descobrir o último checkpoint.
A maior data vista só vira watermark depois que a escrita da Bronze termina com sucesso.
Retries da mesma janela usam uma ingestion_key determinística nos adapters oficiais, evitando duplicação quando o destino confirmou mas o checkpoint falhou.
Schema / contrato lógico
{% if config and config.columns %} {% for col in config.columns %}
{% endfor %} {% else %}
{% endif %}
Tipos lógicos: string, integer, bigint, float, decimal, boolean, date, timestamp, json. Na Bronze os valores declarados ficam como strings; staging faz os casts. Campos novos vão para _extra.
3. Destination / Bronze
O editor visual é DuckDB porque o browser de dados é local. Em Python/YAML existem também ParquetDestination e DeltaDestination.
O adapter pode subdividir cada extraction batch em blocos físicos menores para escrita.
4. Transformação opcional
Projeto local: {{ "encontrado" if dbt_available else "não encontrado ainda" }}. Instale engineer_kit[dbt] ou engineer_kit[local].
dbt não faz parte da transação de ingestão: primeiro Pipeline.run() confirma Bronze + watermark. Só depois DbtRunner transforma. Em Lakehouse, Spark/dbt/SQL podem rodar fora da lib.
Observabilidade
O Pipeline depende apenas de RunLogBackend. O log registra run id, ingestion key, janela, destino, linhas e watermarks. Uma falha somente na auditoria não invalida uma ingestão já confirmada.
Cancelar
{% endblock %}