Déclarer des dépendances

Ce document explique comment définir la relation entre les objets de 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. Vous définissez la relation en déclarant des dépendances dans le fichier de définition SQLX de l'objet dépendant.

Les déclarations de dépendances constituent un arbre de dépendances de votre workflow SQL qui détermine l'ordre dans lequel Dataform exécute vos objets de workflow SQL.

Vous pouvez définir la relation de dépendance entre les objets de workflow SQL suivants:

Déclarations de sources de données
Déclarations de sources de données BigQuery qui vous permettent de faire référence à ces sources de données dans les définitions de table Dataform et les opérations SQL. Vous pouvez définir une déclaration de source de données comme dépendance, mais pas comme dépendante.
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 comme dépendance et comme dépendante.
Opérations SQL personnalisées
Instructions SQL que Dataform 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épendante. Pour déclarer une opération SQL personnalisée en tant que dépendance dans la fonction ref, vous devez définir la propriété hasOutput sur true 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 tester les données de table. Dataform exécute des assertions chaque fois qu'il met à jour votre workflow SQL et vous avertit en cas d'échec. Vous pouvez définir une assertion définie dans un fichier type: assertion en tant que dépendance et en tant que dépendante en déclarant des dépendances dans le bloc config.

Vous pouvez définir la relation de dépendance de l'une des manières suivantes:

Avant de commencer

  1. Créez et initialisez un espace de travail de développement dans votre dépôt.
  2. Facultatif: Déclarez une source de données.
  3. Créez au moins deux objets de workflow SQL : des tables, des assertions, des déclarations de sources de données ou des 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 sources de données et les opérations SQL personnalisées, demandez à votre administrateur de vous accorder le rôle IAM Éditeur Dataform (roles/dataform.editor) sur les espaces de travail. Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

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 de base 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 de contexte de base Dataform.

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 une dépendance de incremental_table.

L'exemple de code suivant montre le fichier SQLX de définition de la table some_table 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 une dépendance de custom_assertion. Lors de l'exécution, Dataform exécute d'abord some_table, puis custom_assertion une fois some_table 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 de la dépendance, mais qui doivent être exécutées avant la table, l'assertion ou l'opération SQL personnalisée, procédez comme suit:

  1. Dans votre espace de travail de développement, dans le volet Fichiers, développez le répertoire definitions/.
  2. Sélectionnez la table, l'assertion ou le fichier SQLX d'opération SQL personnalisée que vous souhaitez modifier.
  3. Dans le bloc config du fichier, saisissez l'extrait de code suivant:

    dependencies: [ "DEPENDENCY", ]
    

    Remplacez DEPENDENCY par la cible de la chaîne (par exemple, le nom de fichier de l'action que vous souhaitez ajouter en tant que dépendance). Vous pouvez saisir plusieurs cibles, séparées par des virgules.

  4. Facultatif: cliquez sur Format.

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" ] }

Étape suivante