Pular para o conteúdo principal

Estendendo o ContractForge.

Existem APIs de extensão para comportamento reutilizável. Use-os quando um recurso se aplicar a mais de um conjunto de dados ou projeto.

Pontos de extensão

ExtensãoAPIUsar quando
Predefinidoregister_presetVocê deseja padrões reutilizáveis ​​para um padrão de contrato.
Resolvedor de origemregister_source_resolverVocê precisa ler um novo tipo de fonte.
Modo de gravaçãoregister_write_modeVocê precisa de uma nova semântica de gravação de destino.
Regra de qualidaderegister_quality_ruleVocê precisa de uma regra reutilizável além dos integrados.
GanchosIngestionHooksVocê precisa de uma lógica personalizada controlada em torno da ingestão.

Exemplo de resolvedor de origem

from contractforge import SourceResolution, register_source_resolver

def resolve_custom_source(spec, spark):
df = spark.read.format("json").load(spec.path)
return SourceResolution(
dataframe=df,
metadata={"source_connector": "custom_json"},
capabilities={"batch": True},
)

register_source_resolver("custom_json", resolve_custom_source)

Regras de projeto

  • Não adicione ramificações específicas do conjunto de dados aos módulos principais.
  • Retornar metadados operacionais redigidos.
  • Mantenha os resolvedores de origem focados na leitura, não na formação do negócio.
  • Prefira a configuração declarativa às convenções ocultas.
  • Adicione testes na camada mais baixa que comprove o contrato de extensão.