Pular para o conteúdo principal

Contrato de ingestão.

O contrato de ingestão é a definição executável de um pipeline de tabela: origem, destino, modo de gravação, política de esquema, regras de qualidade, transformações, controles de execução e comportamento de runtime.

Exemplo completo

_metadata:
contract_version: 1.0.0

source:
type: connector
connector: postgres
options:
url: "{{ secret:crm/postgres_url }}"
dbtable: public.customers
driver: org.postgresql.Driver
read:
partition_column: customer_id
lower_bound: 1
upper_bound: 1000000
num_partitions: 8
fetchsize: 10000

target:
catalog: main
schema: crm_curated
table: s_customers

layer: silver
mode: hash_diff_upsert
hash_keys: [customer_id]
transform:
cast:
credit_limit: decimal(18,2)
updated_at: timestamp
standardize:
email:
trim: true
lower: true
empty_as_null: true
status:
trim: true
lower: true
derive:
updated_date: to_date(updated_at)
deduplicate:
keys: [customer_id]
order_by:
- column: updated_at
direction: desc
nulls: last
schema_policy: additive_only
quality_rules:
not_null: [customer_id]
unique_key: [customer_id]
expressions:
- name: valid_status
expression: status IN ('active', 'inactive')
severity: quarantine

Campos de nível superior

CampoTipoPadrãoUsar
_metadataobjetoMetadados do contrato removidos antes da execução e mantidos para auditoria.
sourcestring | objetoobrigatórioNome da tabela de origem, Python DataFrame, especificação do conector ou especificação do carregador automático.
targetobjetoopcionalObjeto de destino canônico. Prefira isso a campos separados de catálogo/esquema/tabela em YAML.
target.catalogstringmainCatálogo de destino.
target.schemastringtarget_schema ou layerEsquema de destino físico.
target.tablestringobrigatórioNome da tabela de destino.
target_tablestringobrigatório se target.table estiver ausenteNome da tabela de destino direto.
catalogstringmainCatálogo de destino direto.
target_schemastring | nulonuloEsquema de destino físico direto. Se ausente, layer é usado como esquema.
layerstringbronzeCamada lógica. Não se restringe ao bronze/prata/ouro.
modeenumeraçãoappendModo de gravação.
preset / presetsstring | lista[string]desarmarNomes predefinidos aplicados antes da validação do plano.
applied_presetslista[string][]Nomes de presets gravados, geralmente preenchidos pelo mecanismo de preset.
source_systemstringdefaultRótulo do sistema de origem gravado em colunas técnicas e tabelas de controle.
ctrl_schemastringopsEsquema da tabela de controle.
notebook_namestringunknownRótulo de contexto de execução.
description, owner, domain, tags, slastrings/listanulo/[]Metadados leves. Prefira anotações/operações para metadados operacionais e de catálogo.
runtime_parametersobjetoValores de runtime de formato livre registrados com a execução.

Campos do objeto de origem

CampoTipoPadrãoUsar
source.typeconnector | autoloaderobrigatórioTipo de resolvedor de origem.
source.connectorstringnecessário para conectorNome do conector nativo ou registrado.
source.namestring | nulonuloNome de origem lógica para metadados.
source.providerstring | nulonuloProvedor de armazenamento de objetos: adls, azure_blob, gcs, s3.
source.formatstring | nulonuloFormato de resposta de arquivo, HTTP ou conector.
source.pathstring | nulonuloCaminho do sistema de arquivos, caminho de armazenamento de objetos, URL HTTP ou local de origem.
source.account_urlstring | nulonuloURL da conta do Blob do Azure.
source.containerstring | nulonuloContêiner Blob/ADLS do Azure.
source.tablestring | nulonuloTabela de catálogo/JDBC/conector externo.
source.querystring | nulonuloConsulta SQL para conectores SQL, JDBC ou Spark externos.
source.schemastringdesarmarAlias ​​para source.read.schema.
source.optionsobjetoOpções de faísca/conector.
source.readobjetoControles de leitura com reconhecimento de estrutura.
source.requestobjetoConfigurações de solicitação HTTP.
source.authobjetoConfigurações de autenticação.
source.paginationobjetoConfigurações de paginação REST.
source.responseobjetoConfigurações de análise de resposta REST/HTTP.
source.incrementalobjetoConfigurações incrementais do lado do conector.
source.limitsobjetoTempo limite, novas tentativas, taxa e limites de bytes.

Namespaces do conector

Espaço para nomeCampos
source.readschema, source_complete, full_snapshot, recursiveFileLookup, pathGlobFilter, file_regex, file_regex_scope, file_regex_max_listed, file_regex_recursive, JDBC partition_column/lower_bound/upper_bound/num_partitions/fetchsize, materialização JSON staging_path/json_options, carregador automático schema_location/checkpoint_location/schema_hints/include_existing_files/max_files_per_trigger.
source.requesturl, method, headers, params, json, body.
source.authtype, token, header, value/key, username/user, password, OAuth token_url/client_id/client_secret/scope, AWS access_key_id/secret_access_key/session_token/region/credential_provider, Azure sas_token.
source.paginationtype, max_pages, page_param, start_page, offset_param, limit_param, page_size, next_cursor_path, cursor_param.
source.responsemode, raw_column, records_path, format, encoding.
source.incrementalwatermark_column, initial_value, JDBC predicate, REST watermark_param/watermark_header/watermark_body_field.
source.limitstimeout_seconds, retry_attempts, retry_backoff_seconds, rate_limit_per_minute, max_pages, max_page_bytes, max_total_bytes.

Seleção, transformação e filtragem

CampoTipoPadrãoUsar
select_columnsstring | lista[string][]Mantenha apenas as colunas de origem selecionadas.
column_mappingobjeto[string,string]Renomeie as colunas de origem antes que as colunas técnicas da estrutura sejam adicionadas.
filter_expressionstring | nulonuloFiltro Spark SQL. Não combine com exclusão reversível de snapshot completo.
watermark_columnsstring | lista[string][]Colunas incrementais de filtro/estado.
shapeobjeto | nulonuloNamespace de forma direta. Prefira transform.shape.
transform.shapeobjeto | nulonuloOperações declarativas de análise, nivelamento, array e projeção. Consulte Transformações.
transform.castobjeto[string,string]Transmita colunas existentes para tipos Spark SQL após forma.
transform.standardizeobjetoCorte, normalize maiúsculas e minúsculas, normalize espaços em branco e anule strings vazias em colunas declaradas.
transform.deriveobjeto[string,string]Crie ou substitua colunas por expressões Spark SQL.
transform.deduplicate.keysstring | lista[string]obrigatório quando existe desduplicaçãoChaves de desduplicação.
transform.deduplicate.order_bystring | lista[objeto]obrigatório quando existe desduplicaçãoOrdem determinística. Prefira itens estruturados com column, direction e opcional nulls.

Gravação e otimização

CampoTipoPadrãoUsar
merge_keysstring | lista[string][]Chaves para modos upsert, SCD2 e snapshot.
hash_keysstring | lista[string][]Chaves para hash_diff_upsert.
hash_exclude_columnsstring | lista[string][]Colunas excluídas do hash de linha.
custom_keysobjetoGrupos de chaves de gravador de modo/personalizado.
dedup_order_exprstring | nulonuloOrdenação determinística para desduplicação de origem/destino.
partition_columnstring | nulonuloColuna de partição de destino.
partition_valuestring | nulonuloValor de partição única; requer partition_column.
merge_strategyenumeraçãodeltadelta, delta_by_partition ou replace_partitions.
merge_partition_columnstring | nulonuloColuna de partição para delta_by_partition.
replace_partitions_source_completebooleanofalsoEvidência necessária para substituição de partição.
cluster_columnsstring | lista[string][]Colunas de clustering líquido/tabela quando suportadas.
zorder_columnsstring | lista[string][]Colunas ZORDER onde há suporte.
optimize_after_writebooleanofalsoExecute a otimização pós-gravação.
delta_propertiesobjeto[string,string]Propriedades da tabela delta.

Esquema, qualidade e runtime

CampoTipoPadrãoUsar
schema_policypermissive | additive_only | strictpermissiveManipulação do esquema de destino.
allow_type_wideningbooleanofalsoPermitir alterações de ampliação suportadas.
quality_rules.required_columnsstring | lista[string][]Colunas de esquema obrigatórias.
quality_rules.not_nullstring | lista[string][]Verificações não nulas em nível de linha.
quality_rules.unique_keystring | lista[string][]Verificação de exclusividade em nível de conjunto.
quality_rules.accepted_valuesobjeto[string,lista]Valores permitidos por coluna.
quality_rules.min_rowsinteirodesarmarContagem mínima de linhas.
quality_rules.max_null_ratioobjeto[string,número]Proporção nula máxima por coluna.
quality_rules.expressionslista[objeto][]Regras booleanas SQL com name, expression, severity e message opcional.
quality_rules.customobjetoRegras de qualidade personalizadas registradas.
on_quality_failfail | warn | quarantinefailAção herdada global para falhas de qualidade integradas.
scd2_change_columnsstring | lista[string][]Colunas de comparação SCD2.
scd2_effective_from_columnstring | nulonuloColuna de origem efetiva do SCD2.
fix_encoding, encoding, encoding_columnsbooleano/string/listafalso/Windows-1252/[]Reparo de codificação opcional.
dry_runbooleanofalsoValide sem cometer efeitos colaterais de gravação/controle.
explain_mode, explain_formatbooleano/enumfalso/formattedCapture Spark explica os planos.
openlineage_enabled, openlineage_namespace, openlineage_producerbooleano/string/stringfalso/nulo/contractforgeMetadados de eventos OpenLineage.
use_cachebooleanoverdadeiroPermitir cache da estrutura.
lock_enabledbooleanofalsoAdquira bloqueio de estrutura.
idempotency_key, idempotency_policystring/enumnulo/always_runPolítica de execução idempotente.
retry_attempts, retry_backoff_secondsinteiro | nuloconfiguração globalTentar novamente a substituição do comportamento.
parent_run_id, run_group_idstring | nulonuloIDs pai/grupo para execuções secundárias de fluxo ou janela.

Janela de execução e catchup

CampoTipoPadrãoUsar
execution.window.columnstringobrigatórioColuna filtrada por cada janela explícita.
execution.window.windows[].start, end, labelstring/string/stringobrigatório/obrigatório/nuloLimites e rótulos explícitos da janela.
execution.window.start, end, everystringdesarmarJanelas geradas como cada 1 day.
execution.window.stop_on_failurebooleanoverdadeiroPare as janelas posteriores após uma falha.
execution.catchup.enabledbooleanofalsoGere janelas de atualização a partir do estado/marca d'água salvo.
execution.catchup.column, start, end, every, stop_on_failuremisturadonulo/nulo/nulo/nulo/verdadeiroConfigurações de geração de janela de catchup.