Ce document explique comment définir la relation entre des objets dans votre workflow SQL dans Dataform en déclarant des dépendances.
Vous pouvez définir une relation de dépendance entre les objets d'un workflow SQL. Dans une relation de dépendance, l'exécution de l'objet dépendant dépend de l'exécution de l'objet de dépendance. Cela signifie que Dataform exécute la dépendance après la dépendance. Pour définir la relation, déclarez les dépendances dans le fichier de définition SQLX de l'objet dépendant.
Les déclarations de dépendance constituent une arborescence de dépendances de votre workflow SQL qui détermine l'ordre dans lequel Dataform exécute les objets de votre workflow SQL.
Vous pouvez définir la relation de dépendance entre les objets de workflow SQL suivants:
- Déclarations de la source de données
- Déclarations de sources de données BigQuery qui vous permettent de référencer ces sources de données dans les définitions de tables Dataform et les opérations SQL. Vous pouvez définir une déclaration de source de données en tant que dépendance, mais pas en tant que dépendance.
- Tables
- Tables que vous créez dans Dataform en fonction des sources de données déclarées ou d'autres tables de votre workflow SQL. Dataform est compatible avec les types de tables suivants: table, table incrémentielle, vue et vue matérialisée. Vous pouvez définir une table en tant que dépendance et en tant que dépendance.
- Opérations SQL personnalisées
- Instructions SQL que Dataform s'exécute dans BigQuery telles quelles, sans modification. Vous pouvez définir une opération SQL personnalisée définie dans un fichier
type: operations
en tant que dépendance et en tant que dépendance. Pour déclarer une opération SQL personnalisée en tant que dépendance dans la fonctionref
, vous devez définir la propriétéhasOutput
surtrue
dans le fichier de définition SQLX de l'opération SQL personnalisée. - Assertions
- Requêtes de test de qualité des données que vous pouvez utiliser pour valider les données de table.
Dataform exécute des assertions chaque fois qu'il met à jour votre workflow SQL et vous alerte en cas d'échec d'assertion. Vous pouvez définir une assertion définie dans un fichier
type: assertion
en tant que dépendance et en tant que dépendance en déclarant des dépendances dans le blocconfig
.
Vous pouvez définir la relation de dépendance comme suit:
- Déclarez une dépendance en utilisant la fonction principale
ref
de Dataform pour référencer une dépendance dans une instructionSELECT
. - Déclarez une liste de dépendances dans le bloc
config
d'un fichier de définition SQLX.
Avant de commencer
- Créez et initialisez un espace de travail de développement dans votre dépôt.
- Facultatif: Déclarez une source de données.
- Créez au moins deux objets de workflow SQL : tables, assertions, déclarations de source de données ou opérations.
Rôles requis
Pour obtenir les autorisations nécessaires pour déclarer des dépendances pour les tables, les assertions, les déclarations de source de données et les opérations SQL personnalisées, demandez à votre administrateur de vous attribuer le rôle IAM Éditeur de formulaires Data (roles/dataform.editor
) sur les espaces de travail.
Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.
Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.
Déclarer une dépendance en tant qu'argument de la fonction ref
Pour référencer et déclarer automatiquement une dépendance dans une instruction SELECT
, ajoutez-la en tant qu'argument de la fonction ref
.
La fonction ref
est une fonction intégrée principale de Dataform qui vous permet de référencer et de dépendre automatiquement de n'importe quelle table, déclaration de source de données ou opération SQL personnalisée avec la propriété hasOutput
définie sur true
dans votre workflow SQL.
Pour en savoir plus sur la fonction ref
, consultez la documentation de référence sur les méthodes principales de Dataform pour le contexte.
Pour en savoir plus sur l'utilisation de la fonction ref
dans une définition de table, consultez la section À propos des définitions de table.
L'exemple de code suivant montre la déclaration de la source de données source_data
ajoutée en tant qu'argument de la fonction ref
dans le fichier de définition SQLX incremental_table.sqlx
d'une table incrémentielle:
// filename is incremental_table.sqlx
config { type: "incremental" }
SELECT * FROM ${ref("source_data")}
Dans l'exemple de code précédent, source_data
est automatiquement déclaré comme dépendance à incremental_table
.
L'exemple de code suivant montre que le fichier SQLX de définition de table some_table
a été ajouté en tant qu'argument de la fonction ref
dans le fichier de définition SQLX custom_assertion.sqlx
d'une assertion:
// 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
Dans l'exemple de code précédent, some_table
est automatiquement déclaré comme dépendance à custom_assertion
. Lors de l'exécution, Dataform exécute d'abord some_table
, puis custom_assertion
une fois que some_table
est créé.
Déclarer des dépendances dans le bloc config
Pour déclarer des dépendances qui ne sont pas référencées dans la définition de l'instruction SQL, mais qui doivent être exécutées avant la table, l'assertion ou l'opération SQL personnalisée, procédez comme suit:
- Dans le volet Fichiers de votre espace de travail de développement, développez le répertoire
definitions/
. - Sélectionnez la table, l'assertion ou le fichier SQLX d'opération SQL personnalisé que vous souhaitez modifier.
- Dans le bloc
config
du fichier, saisissez l'extrait de code suivant:
dependencies: [ "DEPENDENCY", ]
Remplacez DEPENDENCY par le nom de fichier de la table, de l'assertion, de la déclaration de la source de données ou de l'opération SQL personnalisée que vous souhaitez ajouter en tant que dépendance. Vous pouvez saisir plusieurs noms de fichiers.
L'exemple de code suivant montre la table some_table
et l'assertion some_assertion
ajoutées en tant que dépendances au bloc config
d'un fichier de définition de table:
config { dependencies: [ "some_table", "some_assertion" ] }
Étapes suivantes
- Pour savoir comment déclarer une source de données, consultez Déclarer une source de données.
- Pour savoir comment définir des opérations SQL personnalisées, consultez Ajouter des opérations SQL personnalisées.
- Pour savoir comment réutiliser le code dans votre workflow SQL avec des inclusions, consultez la section Réutiliser des variables et des fonctions avec des inclusions.