DCM Projects para pipelines de dados

Os DCM Projects oferecem uma experiência de desenvolvedor de ciclo de vida completo que inclui recursos adaptados para gerenciar pipelines de dados.

Os comandos específicos do pipeline não se aplicam a todos os tipos de objetos. Eles estendem os comandos principais aos seguintes casos de uso de pipeline:

Comando REFRESH para tabelas dinâmicas

Depois de implantar uma alteração de definição de pipeline, você poderá atualizar as tabelas dinâmicas dentro do projeto de pipeline antes de testar as expectativas de qualidade de dados, de modo que qualquer nova lógica de transformação seja aplicada de ponta a ponta.

Você pode atualizar todas as tabelas dinâmicas gerenciadas pelo DCM project e as respectivas tabelas dinâmicas upstream necessárias com um comando. Esse comando se aplica somente a tabelas dinâmicas implantadas e gerenciadas pelo projeto referenciado, independentemente dos arquivos de definição. Outros tipos de objetos, como tarefas, não são afetados.

Consulte Comando TEST para expectativas de qualidade de dados para ver exemplos de uso que combinam REFRESH e TEST.

O comando é executado até que todas as atualizações da tabela dinâmica sejam concluídas e retorna um resumo das alterações ou dos erros de linha para cada tabela dinâmica.

Para executar o comando REFRESH:

EXECUTE DCM PROJECT DCM_DEMO.PROJECTS.DCM_PROJECT_STG
  REFRESH ALL;

A saída JSON contém os resultados da operação de atualização da tabela dinâmica no seguinte formato:

Propriedade

Descrição

dts_refresh_result

Contém os resultados da operação de atualização da tabela dinâmica.

refreshed_tables[]

Uma matriz de entradas, uma para cada tabela dinâmica que foi atualizada.

table_name

Nome totalmente qualificado da tabela dinâmica que foi atualizada.

statistics

Estatísticas de atualização da tabela.

inserted_rows

Número de linhas inseridas durante a atualização.

deleted_rows

Número de linhas excluídas durante a atualização.

data_timestamp

Carimbo de data/hora ISO 8601 que representa a atualização pontual dos dados após a atualização.

Um exemplo de saída JSON para uma atualização de tabela dinâmica:

{
  "dts_refresh_result": {
    "refreshed_tables": [
      {
        "table_name": "db.schema.my_dynamic_table",
        "statistics": {
          "inserted_rows": 150,
          "deleted_rows": 30
        },
        "data_timestamp": "2026-03-16T12:00:00.000Z"
      }
    ]
  }
}

Comando TEST para expectativas de qualidade de dados

Você pode definir expectativas de qualidade de dados como portões de qualidade em todos os estágios da sua transformação de dados:

  • Anexe as expectativas aos dados brutos nas tabelas de destino na camada bronze para garantir que a entrada bruta atenda às expectativas e não cause erros durante a transformação.

  • Anexe as expectativas como portões de qualidade à camada prata para facilitar a depuração de problemas de dados, incluindo pontos de verificação em diferentes estágios da transformação.

  • Anexe as expectativas à camada ouro para garantir a qualidade da saída do produto de dados.

  • Anexe as expectativas dos consumidores downstream do seu produto de dados à camada ouro para que você possa validá-las antes de implantar alterações interruptivas.

Consulte Função de métrica de dados sobre como anexar expectativas a projetos DCM.

Você pode testar todas as expectativas de qualidade de dados anexadas a tabelas, tabelas dinâmicas ou exibições gerenciadas pelo DCM project com um comando.

As funções de métrica de dados anexadas sem expectativas não são verificadas.

Você pode usar os comandos CLI para configurar testes automatizados como parte do fluxo de trabalho de CI/CD. Por exemplo, se você tem dados do tipo de produção em um QA, teste ou ambiente de preparação, pode seguir estas etapas:

  1. PLAN em QA para verificar as alterações esperadas na definição do projeto.

  2. DEPLOY para QA.

  3. REFRESH ALL nas tabelas dinâmicas em QA para atualizar dados com base em qualquer lógica de transformação nova e definições atualizadas, de modo que as expectativas não sejam testadas com dados desatualizados.

  4. TEST ALL nas expectativas de qualidade de dados anexadas a objetos de tabela no ambiente QA para verificar se a lógica recém-implantada funciona como esperado e não tem efeitos colaterais negativos na forma esperada da saída de dados.

  5. Se todas as expectativas forem atendidas em QA, continue com PLAN e DEPLOY em seu ambiente de produção.

Para executar o comando TEST:

EXECUTE DCM PROJECT DCM_DEMO.PROJECTS.DCM_PROJECT_STG
  TEST ALL;

A saída de TEST contém o status geral e as expectativas com os valores no seguinte formato:

Importante

Durante a fase de versão preliminar, o formato da saída exato pode mudar.

{
  "status": <status>,
  "expectations": [
    {
      "table_name": <table_name>,
      "metric_database": <metric_database>,
      "metric_schema": <metric_schema>,
      "metric_name": <metric_name>,
      "expectation_name": <expectation_name>,
      "expectation_expression": <expectation_expression>,
      "value": <value>,
      "expectation_violated": <expectation_violated>,
      "column_names": <column_names>
    }
  ]
}

Propriedade

Descrição

status

Resultado geral da execução do teste. Valores possíveis: SUCCESSFUL (todas as expectativas atendidas), FAILED (uma ou mais expectativas violadas).

expectations[]

Uma matriz de resultados de expectativa, um para cada expectativa de qualidade de dados avaliada.

table_name

Nome totalmente qualificado da tabela ou exibição na qual a expectativa foi avaliada.

metric_database

Banco de dados com a função de métrica de dados.

metric_schema

Esquema com a função de métrica de dados.

metric_name

Nome da função de métrica de dados (por exemplo, NULL_COUNT, MIN, UNIQUE_COUNT).

expectation_name

Nome da expectativa conforme definido no projeto.

expectation_expression

Expressão booliana usada como base para o valor da métrica avaliado (por exemplo, value = 0, value >= 0).

value

O resultado da avaliação da função de métrica de dados. Presente somente quando expectation_violated é false.

expectation_violated

Se a expectativa foi violada. true se o valor da métrica não satisfez a expressão de expectativa; caso contrário, false.

column_names

Uma matriz de nomes de colunas em que a função de métrica de dados foi avaliada.

Um exemplo de saída JSON de um teste de qualidade de dados:

{
  "status": "FAILED",
  "expectations": [
    {
      "table_name": "db.schema.my_table",
      "metric_database": "SNOWFLAKE",
      "metric_schema": "CORE",
      "metric_name": "NULL_COUNT",
      "expectation_name": "no_nulls_in_id",
      "expectation_expression": "value = 0",
      "value": 0,
      "expectation_violated": false,
      "column_names": ["ID"]
    },
    {
      "table_name": "db.schema.my_table",
      "metric_database": "SNOWFLAKE",
      "metric_schema": "CORE",
      "metric_name": "UNIQUE_COUNT",
      "expectation_name": "unique_id_check",
      "expectation_expression": "value >= 100",
      "value": null,
      "expectation_violated": true,
      "column_names": ["ID"]
    }
  ]
}

Comando PREVIEW

Quando você escreve ou altera a instrução SELECT de uma tabela dinâmica ou exibição, uma saída de amostra ajuda a validar a forma dos dados. Para gráficos de linhagem complexos com várias etapas de transformação, você pode verificar a saída de uma exibição downstream ou tabela dinâmica ao fazer alterações upstream.

Para validar se a transformação em seu código resulta na saída de dados esperada antes da implantação, execute o comando PREVIEW.

O comando PREVIEW executa PLAN para compilar as definições atuais, independentemente do estado implantado, e depois retorna uma amostra de dados para uma tabela dinâmica, exibição ou tabela regular especificada.

Tenha em mente os seguintes requisitos e considerações:

  • O comando PREVIEW deve sempre fazer referência a um nome totalmente qualificado de um objeto de tabela, sem variáveis Jinja.

  • Para ver os dados de amostra na saída, é necessário garantir que os dados já estejam disponíveis nas tabelas de origem.

  • PREVIEW consulta todas as instruções SELECT das tabelas dinâmicas e exibições referenciadas, mas não executa tarefas ou instruções CREATE TABLE AS SELECT.

Para executar o comando PREVIEW:

EXECUTE DCM PROJECT DCM_DEMO.PROJECTS.DCM_PROJECT_DEV
  PREVIEW
    DCM_PROJECT_DEV.SERVE.V_DASHBOARD_KPI_SUMMARY
  USING CONFIGURATION DEV
FROM
  'snow://workspace/USER$.PUBLIC.DEFAULT$/versions/live/DCM_Project_Quickstart_1'
  LIMIT 100;