Acerca das afirmações
Uma asserção é uma consulta de teste de qualidade de dados que encontra linhas que violam uma ou mais condições especificadas na consulta. Se a consulta devolver linhas, a asserção falha. O Dataform executa asserções sempre que atualiza o fluxo de trabalho e envia-lhe um alerta se alguma asserção falhar.
O Dataform cria automaticamente visualizações no BigQuery que contêm os resultados das consultas de validação compiladas. Conforme configurado no ficheiro de definições do fluxo de trabalho, o Dataform cria estas vistas num esquema de validações onde pode inspecionar os resultados das validações.
Por exemplo, para o esquema dataform_assertions
predefinido, o Dataform
cria uma vista no BigQuery no seguinte formato:
dataform_assertions.assertion_name
.
Pode criar afirmações para todos os tipos de tabelas do Dataform: tabelas, tabelas incrementais, vistas e vistas materializadas.
Pode criar afirmações das seguintes formas:
Adicione afirmações incorporadas ao bloco de configuração de uma tabela.
Pode adicionar afirmações incorporadas ao bloco
config
de uma tabela e especificar as respetivas condições.Adicione afirmações manuais num ficheiro SQLX separado.
Escreve manualmente asserções personalizadas num ficheiro SQLX separado para casos de utilização avançados ou para conjuntos de dados não criados pelo Dataform.
Antes de começar
Na Google Cloud consola, aceda à página Dataform.
Selecione ou crie um repositório.
Selecione ou crie um espaço de trabalho de desenvolvimento.
Funções necessárias
Para receber as autorizações de que
precisa para criar afirmações,
peça ao seu administrador que lhe conceda a
função de IAM Editor do Dataform (roles/dataform.editor
) nos espaços de trabalho.
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Crie afirmações incorporadas
Pode adicionar afirmações do Dataform incorporadas ao bloco config
de uma tabela. O Dataform executa estas afirmações após a criação da tabela. Depois de o Dataform criar a tabela, pode ver se a declaração foi aprovada no separador Registos de execução do fluxo de trabalho do seu espaço de trabalho.
Pode criar as seguintes afirmações no bloco config
de uma tabela:
nonNull
Esta condição afirma que as colunas especificadas não são nulas em todas as linhas da tabela. Esta condição é usada para colunas que nunca podem ser nulas.
O exemplo de código seguinte mostra uma declaração
nonNull
no blococonfig
de uma tabela:
config {
type: "table",
assertions: {
nonNull: ["user_id", "customer_id", "email"]
}
}
SELECT ...
rowConditions
Esta condição afirma que todas as linhas da tabela seguem a lógica personalizada que define. Cada condição de linha é uma expressão SQL personalizada e cada linha da tabela é avaliada em função de cada condição de linha. A asserção falha se qualquer linha da tabela resultar em
false
.O exemplo de código seguinte mostra uma declaração
rowConditions
personalizada no blococonfig
de uma tabela incremental:
config {
type: "incremental",
assertions: {
rowConditions: [
'signup_date is null or signup_date > "2022-08-01"',
'email like "%@%.%"'
]
}
}
SELECT ...
uniqueKey
Esta condição afirma que, numa coluna especificada, nenhuma linha da tabela tem o mesmo valor.
O seguinte exemplo de código mostra uma asserção
uniqueKey
no blococonfig
de uma vista:
config {
type: "view",
assertions: {
uniqueKey: ["user_id"]
}
}
SELECT ...
uniqueKeys
Esta condição afirma que, nas colunas especificadas, nenhuma linha da tabela tem o mesmo valor. A asserção falha se existir mais do que uma linha na tabela com os mesmos valores para todas as colunas especificadas.
O seguinte exemplo de código mostra uma
uniqueKeys
asserção no blococonfig
de uma tabela:
config {
type: "table",
assertions: {
uniqueKeys: [["user_id"], ["signup_date", "customer_id"]]
}
}
SELECT ...
Adicione afirmações ao bloco config
Para adicionar afirmações ao bloco de configuração de uma tabela, siga estes passos:
- No espaço de trabalho de desenvolvimento, no painel Ficheiros, selecione um ficheiro SQLX de definição de tabela.
- No bloco
config
do ficheiro de tabela, introduzaassertions: {}
. - Em
assertions: {}
, adicione as suas afirmações. - Opcional: clique em Formatar.
O seguinte exemplo de código mostra as condições adicionadas no bloco config
:
config {
type: "table",
assertions: {
uniqueKey: ["user_id"],
nonNull: ["user_id", "customer_id"],
rowConditions: [
'signup_date is null or signup_date > "2019-01-01"',
'email like "%@%.%"'
]
}
}
SELECT ...
Crie afirmações manuais com SQLX
As afirmações manuais são consultas SQL que escreve num ficheiro SQLX dedicado. Uma consulta SQL de afirmação manual tem de devolver zero linhas. Se a consulta devolver linhas quando é executada, a asserção falha.
Para adicionar afirmações manuais num novo ficheiro SQLX, siga estes passos:
- No painel Ficheiros, junto a
definitions/
, clique no menuMais.
- Clique em Criar ficheiro.
No campo Adicionar um caminho do ficheiro, introduza o nome do ficheiro seguido de
.sqlx
. Por exemplo,definitions/custom_assertion.sqlx
.Os nomes de ficheiros só podem incluir números, letras, hífenes e sublinhados.
Clique em Criar ficheiro.
No painel Ficheiros, clique no novo ficheiro.
No ficheiro, introduza:
config { type: "assertion" }
Abaixo do bloco
config
, escreva a sua consulta SQL ou várias consultas.Opcional: clique em Formatar.
O seguinte exemplo de código mostra uma declaração manual num ficheiro SQLX que declara que os campos A, B e c
nunca são NULL
em sometable
:
config { type: "assertion" }
SELECT
*
FROM
${ref("sometable")}
WHERE
a IS NULL
OR b IS NULL
OR c IS NULL
O que se segue?
- Para saber mais sobre os tipos de afirmações, consulte a API Dataform.
- Para saber como definir afirmações com JavaScript, consulte o artigo Crie fluxos de trabalho exclusivamente com JavaScript.
- Para saber como executar manualmente fluxos de trabalho, consulte o artigo Acionar execuções manualmente.