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 los 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 dependiente después de la dependencia. Defines la relación según Declaración de dependencias dentro del archivo de definición SQLX del objeto dependiente
Las declaraciones de dependencia conforman 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 en definiciones de tablas de Dataform y operaciones de SQL. Puedes establecer una declaración de fuente de datos como una dependencia, pero no como dependiente.
- Tablas
- Tablas que creas en Dataform en función de los datos declarados fuentes u otras tablas en tu flujo de trabajo de SQL. Dataform admite lo siguiente: 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
- Instrucciones de SQL que Dataform ejecuta en BigQuery tal como está,
sin modificaciones. Puedes configurar una operación SQL personalizada definida en un
type: operations
como dependencia y como dependiente. Para declarar un evento personalizado, sigue estos pasos: operación de SQL como una dependencia en la funciónref
, debes hacer lo siguiente: establece la propiedadhasOutput
entrue
en el archivo de definición de SQLX de la operación de SQL personalizada. - Aserciones
- Son consultas de prueba de la 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.
te alerta si alguna aserción falla. Puedes establecer una aserción definida en un
type: assertion
como dependencia y como dependiente declarando dependencias en el bloqueconfig
.
Puedes definir la relación de dependencia de las siguientes maneras:
- Declara una dependencia con 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 de SQLX.
Antes de comenzar
- Crea e inicializa un lugar 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, aserciones, declaraciones de fuentes de datos o bien operaciones.
Roles obligatorios
Para obtener los permisos que necesitas declarar dependencias para tablas, aserciones, fuentes de datos
de código abierto y personalizadas,
solicita a tu administrador que te otorgue el
Es el rol de IAM de Editor de Dataform (roles/dataform.editor
) en los lugares de trabajo.
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso.
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
, haz lo siguiente:
Agrega la dependencia como argumento de la función ref
.
ref
es una función integrada principal de Dataform que te permite
referencia y depender automáticamente de cualquier tabla, declaración de fuente de datos o
operación de SQL personalizada 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
Referencia de los métodos del contexto principal de Dataform.
Para obtener más información sobre el uso de la función ref
en una definición de tablas, 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
agregada.
como un argumento de la función ref
en el SQLX incremental_table.sqlx
definición 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 un elemento
dependencia de incremental_table
.
En la siguiente muestra de código, se agregó el archivo SQLX de definición de tabla some_table
.
como argumento de la función ref
en custom_assertion.sqlx
Archivo de definición 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 un elemento
dependencia de custom_assertion
. Durante la ejecución, Dataform se ejecuta
some_table
primero y, luego, ejecuta custom_assertion
una vez que se crea some_table
.
Declara dependencias en el bloque config
Declarar dependencias a las que no se hace referencia en la definición de la instrucción de SQL del dependiente, pero deben ejecutarse antes que la tabla, la aserción o operación de SQL personalizada, sigue estos pasos:
- En tu lugar de trabajo de desarrollo, en el panel Files, expande
el directorio
definitions/
. - Selecciona el archivo SQLX de la tabla, aserción o operación de SQL personalizada que que quieres editar.
En el bloque
config
del archivo, ingresa el siguiente fragmento de código:dependencies: [ "DEPENDENCY", ]
Reemplaza DEPENDENCY por el nombre del archivo de la tabla, aserción. una declaración de fuente de datos o una operación de SQL personalizada que quieras agregar como dependencia. Puedes ingresar varios nombres de archivo separados por comas.
Opcional: Haz clic en Formato.
En la siguiente muestra de código, se observan la tabla some_table
y some_assertion
Se agregó una aserción como dependencias al bloque config
de un archivo de definición de tablas:
config { dependencies: [ "some_table", "some_assertion" ] }
¿Qué sigue?
- Si quieres aprender a configurar aserciones como dependencias, consulta Prueba tablas con aserciones.
- Si quieres aprender a declarar una fuente de datos, consulta Declara una fuente de datos.
- Para aprender a definir operaciones personalizadas de SQL, consulta Agrega operaciones de SQL personalizadas.
- Para aprender a reutilizar código en tu flujo de trabajo de SQL con inclusiones, consulta Vuelve a usar variables y funciones con inclusiones.