Pular para o conteúdo principal

Capacidade Snowflake e paridade de evidências

Propósito

Esta especificação define como um futuro adaptador contractforge-snowflake deve mapear ContractForge Parâmetros principais do contrato e campos de evidência/tabela de controle para Recursos nativos do Snowflake.

O objetivo não é tornar o núcleo consciente do Snowflake. O objetivo é dar ao Adaptador Snowflake um alvo de implementação pesquisado:

Semântica do contrato ContractForge
-> declaração de capacidade Snowflake
-> implementação Snowflake SQL / task / stream / policy
-> tabelas de evidência canônicas ContractForge preenchidas com valores Snowflake

As fontes deste documento são a documentação oficial do Snowflake. O adaptador deve verificar o comportamento em uma conta Snowflake real antes de alterar qualquer item REVIEW_REQUIRED para SUPPORTED.

Superfícies Snowflake de referência

Superfície SnowflakeUso de ContractForge
SQL warehouseTempo de execução primário para tabela, SQL, arquivo preparado e ingestão baseada em mesclagem.
Banco de dados e esquemaMapeamento para target.catalog e target.schema.
Tabelas, visualizações e estágiosMapeamento para origens de tabelas governadas e origens de arquivos preparados.
COPY INTO <table>Carregamento de arquivo temporário limitado e validação de carga.
SnowpipeCarregamento de arquivos em etapas contínuo ou quase contínuo quando o contrato solicita a descoberta de arquivos além de simples carregamentos em lote.
StreamsCaptura de dados alterados em tabelas e visualizações Snowflake.
TasksExecução agendada, gráficos de tarefas e jobs acionados por fluxo.
Políticas de acesso de linhaImplementação de filtro de linha.
Políticas de mascaramentoImplementação de máscara de coluna.
Tags de objeto e comentáriosImplementação de metadados de anotação e governança.
Esquema de uso e informações da contaFonte de evidências nativas para consultas, tarefas, cargas de cópia, custos, políticas, tags e metadados de objetos.
Data Metric FunctionsSuperfície métrica de qualidade nativa opcional.

Referências principais:

Sub-alvos do adaptador

O adaptador Snowflake não deve declarar um recurso vago de snowflake. Isto deve declarar subalvos explícitos.

SubalvoStatus alvoPropósito
snowflake_sql_warehousePrimárioExecução de SQL na computação do warehouse. Lida com gravações de tabela, SQL, estágio de arquivo, qualidade, mesclagem e evidências.
snowflake_task_graphCaminho de implantação principalRenderiza artefatos de implantação de tarefas/gráficos de tarefas para execução agendada de projetos.
snowflake_snowpipeRevisão primeiroLida com o carregamento contínuo de arquivos preparados onde a semântica do Snowpipe preserva o contrato.
snowflake_streams_tasksRevisão primeiroLida com a tabela CDC e fluxos de trabalho incrementais tabela a tabela.
snowflake_snowparkFuturoLida com transformações complexas ou comportamento do conector que não é limpo apenas no SQL.
snowflake_native_passthroughFuturoDelega para conectores nativos Snowflake ou ingestão de aplicativos nativos/de mercado.

Paridade de parâmetros principais

Sources

ContractForge parameterSnowflake mappingStatusNotes
source.type: tableSELECT ... FROM <database>.<schema>.<table>SUPPORTEDO adaptador resolve referências lógicas para nomes totalmente qualificados.
source.type: viewSELECT ... FROM <database>.<schema>.<view>SUPPORTEDO comportamento de visualização segura deve ser registrado nos detalhes do planejamento, quando relevante.
source.type: sqlSnowflake SQL querySUPPORTED_WITH_WARNINGSO dialeto SQL é específico do Snowflake. Os espaços reservados {{ table_ref:* }} portáteis permanecem resolvidos pelo adaptador.
source.type: staged_files com format: csv/json/parquetEstágio interno/externo nomeado mais formato de arquivo nomeado ou formato de arquivo padrão do estágio, lido por meio de uma consulta preparadaSUPPORTED_WITH_WARNINGSA projeção posicional CSV, a carga útil/projeção JSON VARIANT e a projeção Parquet são implementadas. Outros formatos continuam a ser necessários para revisão.
source.type: csv/json/parquet/orc/avro/xml/textNormalize para staged_files ou revise a abreviação específica da fonteREVIEW_REQUIREDO adaptador aceita staged_files explícito primeiro para que o formato do arquivo, o estágio e os limites das evidências fiquem visíveis.
source.type: object_storageEstágio externo sobre S3, Azure ou GCSSUPPORTED_WITH_WARNINGSA integração de armazenamento, a propriedade do estágio e os privilégios de caminho são de propriedade do ambiente.
source.type: incremental_filesCOPY_HISTORY, Snowpipe, tabela de diretório ou tabela de estado do adaptadorREVIEW_REQUIREDSnowflake oferece superfícies relacionadas, mas exatamente uma vez, a semântica de ordenação e reprocessamento depende do caminho de carregamento escolhido.
source.type: deltaTabela/integração externa ou padrão de estágio importadoREVIEW_REQUIREDA semântica do Delta não é uma semântica de tabela nativa do Snowflake.
source.type: iceberg_tableSuporte Apache Iceberg gerenciado por Snowflake ou externoSUPPORTED_WITH_WARNINGSCatálogo, suporte de gravação e comportamento de atualização de metadados devem ser declarados pelo adaptador.
source.type: http_file/http_csv/http_json/http_textIntegração de acesso externo, procedimento Snowpark ou caminho de arquivo pré-estágioREVIEW_REQUIREDO adaptador deve preferir arquivos pré-preparados para a primeira implementação.
source.type: jdbc/postgres/mysql/sqlserver/oracle/redshift/db2/mariadbFunção/procedimento externo, Snowpark ou padrão de conector nativoREVIEW_REQUIREDSnowflake não é um tempo de execução de extração geral do JDBC por padrão.
source.type: kafka_boundedSnowpipe Streaming, estágio gerenciado por conector ou ponte de fluxo externoREVIEW_REQUIREDA semântica de repetição do Kafka difere da reprodução limitada do estilo Spark do ContractForge.
source.type: eventhubs_boundedPonte externa para stage Snowflake/Snowpipe StreamingREVIEW_REQUIREDA semântica de offset de evento entre nuvens exige revisão de desenho.
source.type: delta_sharePadrão de mercado/compartilhamento nativo/tabela externaSUPPORTED_WITH_WARNINGSPrecisa de um resolvedor de origem específico do adaptador.
source.type: native_passthroughConector Snowflake/aplicativo nativo/fonte de mercadoSUPPORTED_WITH_WARNINGSDeve retornar avisos explícitos sobre a semântica de propriedade do conector e lacunas de evidências.
source.connection_pathConexão compartilhada resolvida pelo núcleo antes do planejamento do adaptadorSUPPORTEDO adaptador Snowflake recebe a origem resolvida; não deve reler caminhos locais arbitrários.
source.authSegredos Snowflake, integrações, autenticação de par de chaves ou resolvedor de segredo de ambienteREVIEW_REQUIREDO adaptador possui resolução de credenciais e deve redigir evidências.
source.watermarkPredicado SQL, deslocamento de fluxo, marcador COPY_HISTORY ou valor da tabela de estadoSUPPORTED_WITH_WARNINGSO caminho de implementação altera a força das garantias.
source.progress_locationTabela de estado ContractForge ou marcador de estágio/cópiaREVIEW_REQUIREDO campo principal é portátil, mas a implementação do Snowflake deve escolher o estado da tabela versus os metadados nativos.
source.schema_tracking_locationInstantâneo do esquema de informações ou tabela de estado do adaptadorREVIEW_REQUIREDSnowflake não precisa de um local de esquema no estilo Databricks; o adaptador deve mapear a intenção para a evidência do esquema.

Semântica de destino e gravação

ContractForge parameterSnowflake mappingStatusNotes
target.catalogDatabaseSUPPORTEDOs nomes de catálogos lógicos devem ser resolvidos por meio de padrões de ambiente.
target.catalog_typedatabase / metastore classificationSUPPORTEDUsado para planejamento e diagnóstico; não é um parâmetro Snowflake DDL.
target.schemaEsquemaSUPPORTEDO comportamento de criação/validação é de propriedade do adaptador.
target.tableMesaSUPPORTEDDeve ser citado com segurança pelas regras de identificador Snowflake.
layerNomenclatura, comentários, tags e evidênciasSUPPORTEDA camada são metadados ContractForge, não uma primitiva Snowflake.
mode: appendAnexo INSERT INTO... SELECT ou COPY INTOSUPPORTEDOs carregamentos de arquivos devem persistir nos detalhes do COPY_HISTORY.
mode: overwritePadrão de substituição transacional, CREATE OR REPLACE TABLE AS SELECT ou truncar/inserirSUPPORTED_WITH_WARNINGSA atomicidade e a retenção de concessões dependem do padrão escolhido.
mode: upsertMERGE INTOSUPPORTEDSnowflake MERGE suporta cláusulas correspondentes e não correspondentes. O comportamento de origem duplicada deve ser pré-validado.
mode: hash_diff_upsertProjeção de hash mais MERGE apenas para linhas alteradasSUPPORTED_WITH_WARNINGSA função hash, o tratamento nulo, o agrupamento e a conversão de tipo devem ser definidos e testados pelo adaptador.
mode: historicalSQL MERGE/padrão de transação, possivelmente com fluxos/tarefasREVIEW_REQUIREDRegistros que chegam tarde, datação eficaz e tratamento de exclusão são semântica do projeto, e não uma única primitiva Snowflake.
mode: snapshot_reconcile_soft_deleteMERGE com design de origem correspondente/não correspondenteSUPPORTED_WITH_WARNINGSRequer limite explícito de instantâneo e prova de integridade da origem.
schema_policy: strictCompare o esquema de entrada com INFORMATION_SCHEMA.COLUMNS e falhe no desvioSUPPORTEDO modo estrito não altera o esquema de destino.
schema_policy: additive_onlyALTER TABLE ADD COLUMN after nullable additive diffSUPPORTED_WITH_WARNINGSO mapeamento de tipo e as decisões de padrão/anulidade devem ser explícitas.
schema_policy: permissivePlano DDL revisadoREVIEW_REQUIREDA ampliação do tipo e as alterações incompatíveis exigem revisão.

Qualidade, Forma e Transformação

ContractForge parameterSnowflake mappingStatusNotes
quality_rules.not_nullSQL COUNT_IF(column IS NULL) ou DMF NULL_COUNTSUPPORTEDO tempo de execução SQL é a primeira implementação; Os DMFs são uma integração de governação opcional.
quality_rules.required_columnsINFORMATION_SCHEMA.COLUMNS lookupSUPPORTEDColunas ausentes falham antes da gravação.
quality_rules.unique_keyContagem duplicada agrupada SQL ou DMF DUPLICATE_COUNTSUPPORTEDAs chaves compostas devem usar o agrupamento SQL, a menos que o ajuste do DMF seja verificado.
quality_rules.accepted_valuesSQL NOT IN ou DMF ACCEPTED_VALUESSUPPORTED_WITH_WARNINGSConjuntos de valores grandes devem usar tabelas de referência em vez de listas embutidas.
quality_rules.min_rowsContagem de linhas SQL ou DMF ROW_COUNTSUPPORTEDO resultado vai para ctrl_ingestion_quality.
quality_rules.max_null_ratioSQL null count divided by row countSUPPORTEDO uso de DMF é opcional.
quality_rules.expressionsSnowflake SQL boolean predicateSUPPORTED_WITH_WARNINGSAs expressões são específicas do dialeto e devem ser marcadas como tal no planejamento.
on_quality_fail: failGerar erro antes do commit do alvoSUPPORTEDA falha ainda deve persistir erro/executar evidências sempre que possível.
on_quality_fail: warnPersistir evidências de qualidade e continuarSUPPORTEDO status de execução permanece independente do status de qualidade.
on_quality_fail: quarantineGrave linhas com falha em ctrl_ingestion_quarantine e, em seguida, grave linhas passadasSUPPORTED_WITH_WARNINGSA quarentena em nível de linha é suportada para regras SQL identificáveis ​​por linha; regras agregadas tornam-se avisos registrados.
shapeSQL sobre VARIANT, FLATTEN, conversões ou SnowparkREVIEW_REQUIREDJSON aninhado e explosão de matriz podem ser mapeados, mas a paridade com o comportamento da forma Spark/Glue deve ser testada.
transform.castSnowflake CAST / TRY_CAST depending strictnessSUPPORTED_WITH_WARNINGSO comportamento do erro deve corresponder ao contrato.
transform.deriveSQL expression projectionSUPPORTED_WITH_WARNINGSRevisão de dialeto necessária.
transform.standardizeSQL string functionsSUPPORTEDA normalização de corte, superior/inferior e espaço em branco são suficientemente portáteis.
transform.deduplicateQUALIFY ROW_NUMBER() OVER (...) = 1SUPPORTED_WITH_WARNINGSA ordenação determinística é necessária.

Execução, Projeto e Implantação

ContractForge parameterSnowflake mappingStatusNotes
project.schedule.cronCREATE TASK ... SCHEDULE = 'USING CRON <expr> <timezone>'SUPPORTEDO cron da tarefa Snowflake inclui o fuso horário na sequência de agendamento.
project.schedule.timezoneTask cron timezoneSUPPORTEDO comportamento do fuso horário é específico da tarefa e não segue alterações posteriores de fuso horário da sessão.
project.depends_onTask graph AFTER <task>SUPPORTED_WITH_WARNINGSA propagação de salto/falha do gráfico de tarefas deve ser capturada nos documentos de implantação.
execution.freshnessAgendamento de tarefas, tarefa acionada por fluxo, Snowpipe ou agendador externoSUPPORTED_WITH_WARNINGSFrescor é intenção; a aplicação depende do caminho do tempo de execução.
execution.latency_targetPreservado no plano/evidência e, opcionalmente, na tarefa/design do SnowpipeSUPPORTEDNão é uma garantia de tempo de execução difícil por si só.
execution.preferredAgendada, gráfico de tarefas, tarefa acionada por fluxo, Snowpipe ou orquestração externaREVIEW_REQUIREDO adaptador deverá ser bloqueado se o modo preferencial não puder preservar a semântica e nenhum substituto for declarado.
execution.fallbackAlternative implementation pathSUPPORTEDO planejador pode usar o substituto somente quando explicitamente permitido.
environment.artifacts.uriCaminho do estágio, saída local, caminho do artefato Git ou armazenamento de objeto URISUPPORTED_WITH_WARNINGSO adaptador Snowflake deve definir esquemas de artefatos aceitos.
environment.evidenceBanco de dados/esquema de evidências SnowflakeSUPPORTEDOs nomes das tabelas de evidências permanecem canônicos ctrl_ingestion_*.
environment.parameters.snowflake.warehouseWarehouse bindingPLATFORM_EXTENSIONConfiguração de implantação/tempo de execução de propriedade do adaptador.
environment.parameters.snowflake.roleRole bindingPLATFORM_EXTENSIONConfiguração de segurança de propriedade do adaptador.
environment.parameters.snowflake.task_schemaNamespace de implantação de tarefaPLATFORM_EXTENSIONFique longe de contratos de ingestão.

Anotações e acesso

ContractForge parameterSnowflake mappingStatusNotes
annotations.table.descriptionCOMMENT ON TABLESUPPORTEDA evidência deve registrar o SQL/id de consulta aplicado.
annotations.columns.*.descriptionCOMMENT ON COLUMNSUPPORTEDAs evidências devem registrar o status por coluna.
annotations.*.tagsSnowflake object tagsSUPPORTED_WITH_WARNINGSA criação de tags, namespace e valores permitidos são decisões de ambiente/governança.
annotations.*.piiTags e recomendação de política de mascaramento opcionalSUPPORTED_WITH_WARNINGSAs tags PII não impõem mascaramento automaticamente, a menos que o contrato de acesso o declare.
access.grantsGRANT statements to roles/usersSUPPORTED_WITH_WARNINGSO vocabulário de privilégios precisa de mapeamento de adaptador. A hierarquia de papéis pode criar desvios.
access.row_filtersPolíticas de acesso de linhaSUPPORTED_WITH_WARNINGSAs políticas Snowflake retornam booleano e são aplicadas a tabelas/visualizações. A lógica específica do principal geralmente reside dentro da expressão da política.
access.column_masksMasking policiesSUPPORTED_WITH_WARNINGSA compatibilidade de assinatura/tipo de política deve ser verificada. Algumas combinações de políticas têm limites de plataforma.
access.access_policy.on_driftCompare as concessões/políticas declaradas com o estado realSUPPORTED_WITH_WARNINGSReconcile/revoke paths require explicit review due to role inheritance.
access.revoke_unmanagedPlano de revogaçãoREVIEW_REQUIREDNunca use como padrão alterações de acesso destrutivas.

Estratégia de armazenamento de evidências

O adaptador Snowflake deve persistir evidências nas tabelas Snowflake com o mesmo nomes canônicos e colunas definidos por contractforge_core.evidence. Estes são Tabelas de evidências ContractForge, não visualizações de uso da conta Snowflake. Snowflake visualizações nativas fornecem valores; eles não substituem a evidência ContractForge modelo.

Recommended default:

environment:
adapter: snowflake
evidence:
database: CONTRACTFORGE
schema: CF_EVIDENCE

As tabelas de controle devem ser somente anexadas, exceto superfícies auxiliares de bloqueio/estado onde o O adaptador possui uma estratégia de simultaneidade claramente documentada.

Mapeamento de tabela de controle

ctrl_ingestion_runs

ContractForge field groupFonte Snowflake
Run identityContractForge run_id; SnowflakeQUERY_HISTORY.query_id; as execuções de tarefas também podem registrar TASK_HISTORY.graph_run_group_id.
Job identityBanco de dados/esquema/nome da tarefa de TASK_HISTORY; execuções manuais usam ponto de entrada de procedimento/consulta.
TimingQUERY_HISTORY.start_time, QUERY_HISTORY.end_time, total_elapsed_time; agendas de tarefas usam TASK_HISTORY.scheduled_time e completed_time.
StatusQUERY_HISTORY.execution_status mais status de exceção do adaptador; status da tarefa de TASK_HISTORY.state.
ErrorQUERY_HISTORY.error_code e error_message; detalhes da exceção do adaptador após a redação.
Row metricsQUERY_HISTORY.rows_inserted, rows_updated, rows_deleted, rows_unloaded, rows_produced; rows_read, rows_written, rows_quarantined calculados pelo adaptador quando os contadores nativos são insuficientes.
Bytes/partition metricsbytes_scanned, bytes_written, bytes_written_to_result, partitions_scanned, partitions_total, campos de derramamento/rede em operation_metrics_json.
Tempo de execuçãoNome/tamanho do armazém, função/usuário, tag de consulta, ponto de entrada e CURRENT_VERSION() onde coletados.
Versão da tabelaSnowflake não possui versão de tabela de destino no estilo Delta/Iceberg para tabelas padrão; mantenha table_version_before e table_version_after nulos e armazene marcadores de consulta/transação em operation_metrics_json.

ctrl_ingestion_state

Campo ContractForgeFonte Snowflake
watermark_column, watermark_valueMarca d'água de contrato e resultado da consulta de marca d'água alta pós-leitura.
last_success_at_utc, last_status, last_run_idContractForge run finalization.
last_rows_writtenMétricas de linha do adaptador.
last_table_versionNulo para tabelas padrão; marcador de deslocamento/cópia de fluxo pode ser armazenado em JSON.
last_watermark_candidateCandidate max watermark before commit.
state_details_jsonMarcador de nome/deslocamento de fluxo, marcador de arquivo COPY_HISTORY, nome de pipe Snowpipe ou metadados de tarefa.

As visualizações de uso da conta Snowflake podem ter latência. Estado que afeta a correção deve ser escrito pelo adaptador durante a execução, em vez de depender apenas de Account Usage reconciliation.

ctrl_ingestion_quality

ContractForge fieldFonte Snowflake
rule_nameNome da regra do contrato ou nome DMF nativo.
status, severity, failed_countResultado da avaliação do adaptador SQL.
observed_valueContagem/proporção/valor da verificação SQL ou função de métrica de dados.
details_jsonPredicado SQL, nome DMF, ID de consulta, limites de amostra e classificação de dialeto.

As funções métricas de dados Snowflake são entradas de evidências úteis, mas não são um substituição completa para verificações de qualidade de tempo de execução ContractForge porque ContractForge deve suportar comportamento de falha/aviso/quarentena durante a ingestão.

ctrl_ingestion_quarantine

ContractForge fieldFonte Snowflake
record_payloadCarga útil OBJECT_CONSTRUCT(*)/TO_JSON da projeção de linha com falha.
record_refChave de tabela de teste opcional, chave natural de destino ou referência de arquivo/linha.
reason, rule_nameFailed ContractForge row-level rule.
quarantined_at_utcCarimbo de data e hora do adaptador na gravação em quarentena.

Falhas de qualidade agregadas não podem produzir quarentena em nível de linha sem um predicado de linha explícito. O adaptador deve registrá-los como avisos ou falhas, não invente linhas em quarentena.

ctrl_ingestion_errors

ContractForge fieldFonte Snowflake
error_type, error_classClassificador de exceção do adaptador mais categoria de erro Snowflake quando disponível.
error_messageErro do adaptador redigido mais QUERY_HISTORY.error_message.
stack_tracePilha de procedimento/Snowpark quando disponível; caso contrário, nulo.
query_id / runtime_context_jsonQUERY_HISTORY.query_id, role, warehouse, task metadata.

ctrl_ingestion_schema_changes

ContractForge fieldFonte Snowflake
Esquema antes/depoisInstantâneos do esquema do adaptador de INFORMATION_SCHEMA.COLUMNS.
Applied DDLInstrução ALTER TABLE/CREATE TABLE e QUERY_HISTORY.query_id.
Drift classificationResultado da política do esquema principal: estrito/aditivo/permissivo.

ctrl_ingestion_streams

ContractForge fieldFonte Snowflake
Batch identityID de execução da tarefa, ID do grupo de execução do gráfico, nome do fluxo, nome do tubo Snowpipe ou marcador de lote de cópia.
Progresso da fonteStream offset state, COPY_HISTORY.file_name, last_load_time, pipe received time.
MetricsLinhas carregadas, linhas analisadas, contagem de erros, tamanho do arquivo, métricas de tarefa/consulta.
StatusStatus da tarefa/COPY/Snowpipe normalizado para o status ContractForge.

A semântica de streaming e de disponibilidade imediata deve permanecer REVIEW_REQUIRED até o o adaptador prova o comportamento do ponto de verificação/estado para cada família de origem.

ctrl_ingestion_lineage

ContractForge fieldFonte Snowflake
Input/output objectsACCESS_HISTORY objetos diretos/base/modificados quando disponíveis.
Query identityquery_id, tag de consulta e carimbo de data/hora de execução.
Event payloadMatrizes de objetos ACCESS_HISTORY nativos mais referências de origem/destino ContractForge.

ACCESS_HISTORY é uma fonte de auditoria; o adaptador ainda deve emitir um Evento de linhagem ContractForge durante a execução para que os painéis não dependam apenas de Account Usage latency.

A execução em tempo de execução agora grava um estilo ContractForge/OpenLineage imediato Evento COMPLETE com ID de execução do contrato, referência de origem, tabela de destino, linha contagem e IDs de consulta Snowflake. A reconciliação nativa ACCESS_HISTORY continua sendo um caminho de uso da conta atrasado: ele investiga por QUERY_TAG run_id estruturado e retorna PENDING sem escrever linhas até que as linhas de linhagem nativa correspondentes sejam published.

ctrl_ingestion_annotations

ContractForge fieldFonte Snowflake
Descrições de tabela/colunaInstruções COMMENT aplicadas e IDs de consulta.
TagsFunção de tabela TAG_REFERENCES ou visualização de uso da conta, além de SQL aplicado.
StatusAplicado/validado/avisado/falho por anotação.

ctrl_ingestion_access

ContractForge fieldFonte Snowflake
GrantsAplicadas instruções GRANT e verificações de esquema de informações/uso da conta.
Políticas de acesso de linhaPolítica de acesso de linha criada/aplicada DDL e POLICY_REFERENCES.
Masking policiesPolítica de mascaramento criada/aplicada DDL e POLICY_REFERENCES.
Drift statusComparação do adaptador do contrato de acesso declarado e do estado atual do Snowflake.

ctrl_ingestion_operations

Os campos de operações vêm de ContractForge operations.yaml. Snowflake pode adicionar nome da tarefa, cronograma, armazém, integração de alertas e evidência de tag de consulta, mas não deve redefinir propriedade, criticidade ou semântica SLA.

ctrl_ingestion_explain

ContractForge fieldFonte Snowflake
plan_textSaída EXPLAIN ou referência de perfil/relatório.
explain_formatTEXT ou JSON quando suportado pela instrução renderizada.
captured_at_utcCarimbo de data/hora do adaptador.
details_jsonConsultar id/perfil URL quando disponível.

A execução em tempo de execução captura EXPLAIN USING TEXT para a gravação renderizada instrução por padrão e armazena falhas como métricas de execução sem falhar no execução de ingestão. Os contratos podem desabilitar a captura com extensions.snowflake.explain_enabled: false.

ctrl_ingestion_cost

ContractForge fieldFonte Snowflake
signal_namequery_count, bytes_scanned, execution_time_ms, cloud_services_credits, rows_produced, warehouse_count, attributed_compute_credits, query_acceleration_credits, later snowpipe_bytes_billed.
signal_valueTotais QUERY_HISTORY, QUERY_ATTRIBUTION_HISTORY.credits_attributed_compute, contagens de metadados de armazém ou COPY_HISTORY.bytes_billed posterior para Snowpipe.
payload_jsonID/nome do armazém, ID da consulta, ID da consulta raiz, tag de consulta, créditos de serviços em nuvem, créditos de aceleração, bytes digitalizados/gravados e metadados de tarefas.

O custo é um sinal operacional, não uma reconciliação de faturamento. Uso da conta latência significa que a evidência de custo pode ser anexada por um comando de reconciliação posterior. Se o Uso da conta ainda não tiver produzido linhas correspondentes, a reconciliação reportará um status pendente sem inserir evidências duplicadas. O mesmo caminho pendente é usado quando a função de execução não consegue ler o uso da conta, com um aviso para operadores podem conceder a função de banco de dados Snowflake necessária separadamente do tempo de execução ingestion privileges.

ctrl_ingestion_metadata

O adaptador preenche os metadados do componente ContractForge, versão principal, adaptador versão, versão do esquema de controle, conta/região Snowflake quando configurada, padrões de warehouse/função e sinalizadores de recursos de tempo de execução. Valores sensíveis devem ser redacted.

Query Tag Requirement

O adaptador Snowflake deve definir um QUERY_TAG estruturado para cada instrução que ele possui. No mínimo:

{
"product": "contractforge",
"adapter": "snowflake",
"run_id": "<contractforge-run-id>",
"project": "<project-name>",
"target": "<database.schema.table>"
}

Isso fornece QUERY_HISTORY, QUERY_ATTRIBUTION_HISTORY, ACCESS_HISTORY e tarefa de diagnóstico de uma chave de junção estável de volta à evidência ContractForge.

Revise os limites

O planejador Snowflake inicial deve retornar REVIEW_REQUIRED ou SUPPORTED_WITH_WARNINGS para estas áreas até ser comprovado por testes reais:

  • incremental_files usando Snowpipe ou histórico de cópia.
  • Kafka/Event Hubs bounded replay.
  • histórico com linhas que chegam atrasadas, exclusões e janelas de validade sobrepostas.
  • Exclusão reversível de instantâneo sem um instantâneo de origem completo comprovado.
  • Políticas de acesso e mascaramento de linha com lógica específica do principal.
  • Geração de políticas de mascaramento baseadas em tags.
  • Operações shape complexas em cargas VARIANT aninhadas.
  • Quarentena para regras de qualidade agregadas.
  • Ampliação de tipo e alterações de esquema incompatíveis.
  • Atribuição de custos quando a latência de uso da conta atrasa linhas de custo de consulta.

Alvo de Declaração de Capacidade Inicial

O primeiro conjunto de recursos do adaptador Snowflake deve ser conservador:

AreaInitial status
Fontes de tabela/visualização/sqlSUPPORTED
Staged file batch loadSUPPORTED_WITH_WARNINGS
AppendSUPPORTED
OverwriteSUPPORTED_WITH_WARNINGS
upsert do estado atualSUPPORTED
hash-diff upsertSUPPORTED_WITH_WARNINGS
historicalREVIEW_REQUIRED
Snapshot soft deleteSUPPORTED_WITH_WARNINGS
Política de esquema estritaSUPPORTED
Política de esquema aditivoSUPPORTED_WITH_WARNINGS
Regras básicas de qualidadeSUPPORTED
Quarentena de qualidadeSUPPORTED_WITH_WARNINGS
Comentários de anotaçõesSUPPORTED
TagsSUPPORTED_WITH_WARNINGS
GrantsSUPPORTED_WITH_WARNINGS
Políticas de acesso de linhaSUPPORTED_WITH_WARNINGS
Masking policiesSUPPORTED_WITH_WARNINGS
Scheduled projectsSUPPORTED
Task dependenciesSUPPORTED_WITH_WARNINGS
Evidência de custoSUPPORTED_WITH_WARNINGS
Evidência de linhagemSUPPORTED_WITH_WARNINGS

Testes de aceitação para um futuro adaptador

  1. Planeje o projeto canônico do medalhão Supabase contra Snowflake e produza exact warnings/review items.
  2. Renderize SQL para fontes de tabela, SQL e arquivos preparados sem importar um Cliente Snowflake no núcleo.
  3. Execute acréscimo, substituição e atualização do estado atual em uma conta Snowflake real.
  4. Verify ctrl_ingestion_runs, state, quality, quarantine, errors, schema_changes, annotations, access, lineage, operations, explain e as tabelas cost usam o esquema principal.
  5. Join ContractForge run_id to Snowflake QUERY_HISTORY through QUERY_TAG.
  6. Capture evidências de tarefas para um projeto agendado com pelo menos uma dependência.
  7. Aplique comentários/tags e valide-os através do TAG_REFERENCES.
  8. Aplique políticas de acesso e mascaramento de linha e valide-as por meio de POLICY_REFERENCES.
  9. Prove que o histórico permanece REVIEW_REQUIRED até que o projeto declare o políticas de atraso, exclusão e data de vigência necessárias para uma execução segura.