En este documento, se muestra cómo definir la relación entre los objetos de tu flujo de trabajo de SQL en Dataform mediante la declaración de dependencias.
Puedes definir una relación de dependencia entre objetos de un flujo de trabajo de SQL. En una relación de dependencia, la ejecución del objeto dependiente depende de la ejecución del objeto de dependencia. Esto significa que Dataform ejecuta el elemento dependiente después de la dependencia. Para definir la relación, debes declarar las dependencias dentro del archivo de definición de SQLX del objeto dependiente.
Las declaraciones de dependencias forman un árbol de dependencias de tu flujo de trabajo de SQL que determina el orden en el que Dataform ejecuta tus objetos de flujo de trabajo de SQL.
Puedes definir la relación de dependencia entre los siguientes objetos de flujo de trabajo de SQL:
- Declaraciones de fuentes de datos
- Declaraciones de fuentes de datos de BigQuery que te permiten hacer referencia a estas fuentes de datos en las definiciones de tablas de Dataform y las operaciones de SQL. Puedes establecer una declaración de fuente de datos como una dependencia, pero no como dependiente.
- Tablas
- Son las tablas que creas en Dataform en función de las fuentes de datos declaradas o de otras tablas de tu flujo de trabajo de SQL. Dataform admite los siguientes tipos de tablas: tabla, tabla incremental, vista y vista materializada. Puedes establecer una tabla como una dependencia y como dependiente.
- Operaciones de SQL personalizadas
- Son instrucciones SQL que Dataform ejecuta en BigQuery tal como están, sin modificaciones. Puedes configurar una operación SQL personalizada definida en un archivo
type: operations
como una dependencia y como dependiente. Para declarar una operación SQL personalizada como una dependencia en la funciónref
, debes configurar la propiedadhasOutput
entrue
en el archivo de definición SQLX de la operación SQL personalizada. - Afirmaciones
- Consultas de prueba de calidad de los datos que puedes usar para probar los datos de la tabla.
Dataform ejecuta aserciones cada vez que actualiza tu flujo de trabajo de SQL y
te alerta si alguna falla. Puedes establecer una aserción definida en un archivo
type: assertion
como una dependencia y como un elemento dependiente declarando dependencias en el bloqueconfig
.
Puedes definir la relación de dependencia de las siguientes maneras:
- Para declarar una dependencia, usa la función
ref
principal de Dataform para hacer referencia a ella en una sentenciaSELECT
. - Declara una lista de dependencias en el bloque
config
de un archivo de definición SQLX.
Antes de comenzar
- Crea e inicializa un espacio de trabajo de desarrollo en tu repositorio.
- Opcional: Declara una fuente de datos.
- Crea al menos dos objetos de flujo de trabajo de SQL: tablas, afirmaciones, declaraciones de fuentes de datos o operaciones.
Roles obligatorios
Para obtener los permisos que necesitas para declarar dependencias de tablas, aserciones, declaraciones de fuentes de datos y operaciones de SQL personalizadas, 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 mediante roles personalizados o cualquier otro rol predefinido.
Declara una dependencia como argumento de la función ref
Para hacer referencia a una dependencia y declararla automáticamente en una sentencia SELECT
, agrégala como argumento de la función ref
.
La función ref
es una función integrada en el núcleo de Dataform que te permite hacer referencia a cualquier tabla, declaración de fuente de datos o operación SQL personalizada, y depender automáticamente de ellas, con la propiedad hasOutput
establecida en true
en tu flujo de trabajo de SQL.
Para obtener más información sobre la función ref
, consulta la referencia de métodos de contexto principal de Dataform.
Para obtener más información sobre el uso de la función ref
en una definición de tabla, consulta Acerca de las definiciones de tablas.
En la siguiente muestra de código, se muestra la declaración de fuente de datos source_data
que se agregó como argumento de la función ref
en el archivo de definición SQLX incremental_table.sqlx
de una tabla incremental:
// filename is incremental_table.sqlx
config { type: "incremental" }
SELECT * FROM ${ref("source_data")}
En la muestra de código anterior, source_data
se declara automáticamente como una dependencia de incremental_table
.
En la siguiente muestra de código, se muestra el archivo SQLX de definición de la tabla some_table
agregado
como argumento de la función ref
en el archivo de definición SQLX custom_assertion.sqlx
de una aserción:
// filename is custom_assertion.sqlx
config { type: "assertion" }
SELECT
*
FROM
${ref("some_table")}
WHERE
a is null
or b is null
or c is null
En la muestra de código anterior, some_table
se declara automáticamente como una dependencia de custom_assertion
. Durante la ejecución, Dataform primero ejecuta some_table
y, luego, ejecuta custom_assertion
una vez que se crea some_table
.
Cómo declarar dependencias en el bloque config
Para declarar dependencias a las que no se hace referencia en la definición de la sentencia SQL del elemento dependiente, pero que deben ejecutarse antes de la tabla, la aserción o la operación de SQL personalizada, sigue estos pasos:
- En el panel Files de tu espacio de trabajo de desarrollo, expande el directorio
definitions/
. - Selecciona la tabla, la aserción o el archivo SQLX de la operación SQL personalizada que deseas editar.
En el bloque
config
del archivo, ingresa el siguiente fragmento de código:dependencies: [ "DEPENDENCY", ]
Reemplaza DEPENDENCY por el objetivo de cadena, por ejemplo, el nombre del archivo de la acción que deseas agregar como dependencia. Puedes ingresar varios objetivos, separados por comas.
Opcional: Haz clic en Formato.
En la siguiente muestra de código, se muestra la tabla some_table
y la aserción some_assertion
que se agregaron como dependencias al bloque config
de un archivo de definición de tabla:
config { dependencies: [ "some_table", "some_assertion" ] }
¿Qué sigue?
- Para obtener información sobre cómo establecer aserciones como dependencias, consulta Cómo probar tablas con aserciones.
- Para obtener información sobre cómo declarar una fuente de datos, consulta Cómo declarar una fuente de datos.
- Para obtener información sobre cómo definir operaciones de SQL personalizadas, consulta Agrega operaciones de SQL personalizadas.
- Para obtener información sobre cómo volver a usar el código en tu flujo de trabajo de SQL con incorporaciones, consulta Cómo volver a usar el código en un solo repositorio con incorporaciones.