Acerca de las aserciones
Una aserción es una consulta de prueba de calidad de los datos que encuentra filas que incumplen una o más condiciones especificadas en la consulta. Si la consulta devuelve filas, la aserción falla. Dataform ejecuta aserciones cada vez que actualiza tu flujo de trabajo y te avisa si alguna falla.
Dataform crea automáticamente vistas en BigQuery que contienen los resultados de las consultas de aserción compiladas. Tal como se configuró en el archivo de configuración del flujo de trabajo, Dataform crea estas vistas en un esquema de aserciones en el que puedes inspeccionar los resultados de las aserciones.
Por ejemplo, para el esquema dataform_assertions
predeterminado, Dataform crea una vista en BigQuery con el siguiente formato: dataform_assertions.assertion_name
.
Puedes crear aserciones para todos los tipos de tablas de Dataform: tablas, tablas incrementales, vistas y vistas materializadas.
Puedes crear aserciones de las siguientes maneras:
Agrega aserciones integradas al bloque de configuración de una tabla.
Puedes agregar aserciones integradas al bloque
config
de una tabla y especificar sus condiciones.Agrega aserciones manuales en un archivo SQLX independiente.
Escribes manualmente aserciones personalizadas en un archivo SQLX separado para casos de uso avanzados o para conjuntos de datos que no creó Dataform.
Antes de comenzar
En la consola de Google Cloud , ve a la página Dataform.
Selecciona o crea un repositorio.
Selecciona o crea un lugar de trabajo de desarrollo.
Roles requeridos
Para obtener los permisos que necesitas para crear aserciones,
pídele a tu administrador que te otorgue el rol de IAM de
Editor de Dataform (roles/dataform.editor
)
en los espacios de trabajo.
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.
Crea aserciones integradas
Puedes agregar aserciones integradas de Dataform al bloque config
de una tabla. Dataform ejecuta estas aserciones después de la creación de la tabla. Después de que Dataform cree la tabla, puedes ver si la aserción pasó en la pestaña Registros de ejecución del flujo de trabajo de tu espacio de trabajo.
Puedes crear las siguientes aserciones en el bloque config
de una tabla:
nonNull
Esta condición afirma que las columnas especificadas no son nulas en todas las filas de la tabla. Esta condición se usa para las columnas que nunca pueden ser nulas.
En la siguiente muestra de código, se muestra una aserción
nonNull
en el bloqueconfig
de una tabla:
config {
type: "table",
assertions: {
nonNull: ["user_id", "customer_id", "email"]
}
}
SELECT ...
rowConditions
Esta condición afirma que todas las filas de la tabla siguen la lógica personalizada que defines. Cada condición de fila es una expresión SQL personalizada, y cada fila de la tabla se evalúa en función de cada condición de fila. La aserción falla si alguna fila de la tabla genera
false
.En la siguiente muestra de código, se muestra una aserción
rowConditions
personalizada en el bloqueconfig
de una tabla incremental:
config {
type: "incremental",
assertions: {
rowConditions: [
'signup_date is null or signup_date > "2022-08-01"',
'email like "%@%.%"'
]
}
}
SELECT ...
uniqueKey
Esta condición afirma que, en una columna especificada, ninguna fila de la tabla tiene el mismo valor.
En el siguiente muestra de código, se muestra una aserción
uniqueKey
en el bloqueconfig
de una vista:
config {
type: "view",
assertions: {
uniqueKey: ["user_id"]
}
}
SELECT ...
uniqueKeys
Esta condición afirma que, en las columnas especificadas, ninguna fila de la tabla tiene el mismo valor. La aserción falla si hay más de una fila en la tabla con los mismos valores para todas las columnas especificadas.
En el siguiente muestra de código, se muestra una aserción
uniqueKeys
en el bloqueconfig
de una tabla:
config {
type: "table",
assertions: {
uniqueKeys: [["user_id"], ["signup_date", "customer_id"]]
}
}
SELECT ...
Agrega aserciones al bloque config
Para agregar aserciones al bloque de configuración de una tabla, sigue estos pasos:
- En tu lugar de trabajo de desarrollo, en el panel Archivos, selecciona un archivo SQLX de definición de tabla.
- En el bloque
config
del archivo de la tabla, ingresaassertions: {}
. - Dentro de
assertions: {}
, agrega tus aserciones. - Opcional: Haz clic en Formato.
En el siguiente muestra de código, se muestran las condiciones agregadas en el bloque 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 ...
Crea aserciones manuales con SQLX
Las aserciones manuales son consultas en SQL que escribes en un archivo SQLX dedicado. Una consulta en SQL de aserción manual debe devolver cero filas. Si la consulta devuelve filas cuando se ejecuta, la aserción falla.
Para agregar aserciones manuales en un archivo .sqlx nuevo, sigue estos pasos:
- En el panel Archivos, junto a
definitions/
, haz clic en el menúMás.
- Haz clic en Crear archivo.
En el campo Agregar una ruta de archivo, ingresa el nombre del archivo seguido de
.sqlx
. Por ejemplo,definitions/custom_assertion.sqlx
.Los nombres de archivo solo pueden incluir números, letras, guiones y guiones bajos.
Haz clic en Crear archivo.
En el panel Archivos, haz clic en el archivo nuevo.
En el archivo, ingresa lo siguiente:
config { type: "assertion" }
Debajo del bloque
config
, escribe tu consulta en SQL o varias consultas.Opcional: Haz clic en Formato.
En el siguiente muestra de código, se muestra una aserción manual en un archivo SQLX que afirma que los campos A, B y c
nunca son NULL
en sometable
:
config { type: "assertion" }
SELECT
*
FROM
${ref("sometable")}
WHERE
a IS NULL
OR b IS NULL
OR c IS NULL
¿Qué sigue?
- Para obtener más información sobre los tipos de aserciones, consulta la API de Dataform.
- Para obtener información sobre cómo definir aserciones con JavaScript, consulta Crea flujos de trabajo exclusivamente con JavaScript.
- Para obtener información sobre cómo ejecutar flujos de trabajo de forma manual, consulta Cómo activar ejecuciones de forma manual.