Ce document vous présente les concepts et les processus Dataform.
Dataform est un service qui permet aux analystes de données de développer, de tester, de contrôler les versions et de planifier des workflows complexes pour la transformation de données dans BigQuery.
Dataform vous permet de gérer la transformation des données dans le processus d'extraction, de chargement et de transformation (ELT) pour l'intégration des données. Une fois les données brutes extraites des systèmes sources et chargées dans BigQuery, Dataform vous aide à les transformer en une suite de tables de données bien définies, testées et documentées.
Dataform vous permet d'effectuer les actions de transformation de données suivantes :
- Développer et exécuter des workflows pour la transformation des données.
- Collaborez avec les membres de votre équipe au développement de workflows grâce à Git.
- Gérez un grand nombre de tables et leurs dépendances.
- Déclarez les données sources et gérez les dépendances des tables.
- Affichez une visualisation de l'arborescence des dépendances de votre workflow.
- Gérez les données avec du code SQL dans un dépôt central.
- Réutilisez le code avec JavaScript.
- Testez l'exactitude des données à l'aide de tests de qualité sur les tables sources et de sortie.
- Contrôlez les versions du code SQL.
- Documentez les tableaux de données dans le code SQL.
Processus de transformation des données dans Dataform
Le workflow de transformation des données pour Dataform est le suivant :
- Dataform vous permet de créer des dépôts pour gérer votre code.
- Dataform vous permet de créer des espaces de travail pour le développement.
- Dataform vous permet de développer des workflows dans un espace de travail de développement.
- Dataform compile Dataform Core en SQL.
- Dataform exécute l'arborescence des dépendances.
Dataform vous permet de créer des dépôts pour gérer votre code.
Dans un dépôt Dataform, vous utilisez Dataform Core, une extension de SQL, pour écrire des fichiers SQLX dans lesquels vous définissez votre workflow. Les dépôts Dataform sont compatibles avec le contrôle des versions. Vous pouvez associer un dépôt Dataform à un fournisseur Git tiers.
Dataform vous permet de créer des espaces de travail pour le développement.
Vous pouvez créer des espaces de travail de développement dans un dépôt Dataform pour le développement Dataform Core. Dans un espace de travail de développement, vous pouvez modifier le dépôt, le compiler, le tester et l'envoyer au dépôt principal via Git.
Dataform vous permet de développer Dataform Core dans un espace de travail de développement.
Dans un espace de travail de développement, vous pouvez définir et documenter des tables, leurs dépendances et la logique de transformation pour créer votre workflow. Vous pouvez également configurer des actions en JavaScript.
Dataform compile Dataform Core
Lors de la compilation, Dataform effectue les tâches suivantes :
- Compile le cœur de Dataform dans un workflow de SQL standard.
- Ajoute des instructions SQL récurrentes, telles que
CREATE TABLE
ouINSERT
, au code intégré à la configuration de votre requête. - Transpile (compilation source à source) JavaScript en SQL.
- Résout les dépendances et recherche les erreurs, y compris les dépendances manquantes ou circulaires.
- Crée l'arborescence des dépendances de toutes les actions à exécuter dans BigQuery.
La compilation Dataform est hermétique pour vérifier la cohérence de la compilation, ce qui signifie que le même code est compilé à chaque fois dans le même résultat de compilation SQL. Dataform compile votre code dans un environnement de bac à sable sans accès à Internet. Aucune action supplémentaire, comme l'appel d'API externes, n'est disponible pendant la compilation.
Pour déboguer en temps réel, vous pouvez inspecter le workflow compilé de votre projet dans un graphique interactif de votre espace de travail de développement.
Dataform exécute l'arborescence des dépendances
Dans BigQuery, Dataform effectue les tâches suivantes :
- Exécute les commandes SQL en suivant l'ordre de l'arborescence des dépendances.
- Exécute des requêtes d'assertion sur vos tables et vues pour vérifier l'exactitude des données.
- Exécute les autres opérations SQL que vous avez définies.
Une fois l'exécution terminée, vous pouvez utiliser vos tables et vues pour tous vos besoins d'analyse.
Vous pouvez afficher les journaux pour voir les tables qui ont été créées, si les assertions ont réussi ou échoué, combien de temps chaque action a pris et d'autres informations. Vous pouvez également afficher le code SQL exact qui a été exécuté dans BigQuery.
Fonctionnalités de Dataform
Avec Dataform, vous pouvez développer et déployer des tables, des tables incrémentielles ou des vues dans BigQuery. Dataform propose un environnement Web pour les activités suivantes :
- Développement de workflows
- Connexion à GitHub, GitLab, Azure DevOps Services et Bitbucket
- Intégration et déploiement continus
- Exécution du workflow
Les sections suivantes décrivent les principales fonctionnalités de Dataform.
Dépôts
Chaque projet Dataform est stocké dans un dépôt. Un dépôt Dataform contient une collection de fichiers de configuration JSON, de fichiers SQLX et de fichiers JavaScript.
Les dépôts Dataform contiennent les types de fichiers suivants :
Fichiers de configuration
Les fichiers de configuration JSON ou SQLX vous permettent de configurer vos workflows. Ils contiennent une configuration générale, des plannings d'exécution ou un schéma pour créer des tables et des vues.
Définitions
Les définitions sont des fichiers SQLX et JavaScript qui définissent de nouvelles tables, vues et opérations SQL supplémentaires à exécuter dans BigQuery.
Inclut
Les inclusions sont des fichiers JavaScript dans lesquels vous pouvez définir des variables et des fonctions à utiliser dans votre projet.
Chaque dépôt Dataform est associé à un compte de service. Vous pouvez sélectionner un compte de service lorsque vous créez un dépôt ou modifier le compte de service ultérieurement.
Par défaut, Dataform utilise un compte de service dérivé de votre numéro de projet au format suivant :
service-YOUR_PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
Contrôle des versions
Dataform utilise le système de contrôle des versions Git pour conserver un enregistrement de chaque modification apportée aux fichiers du projet et pour gérer les versions des fichiers.
Chaque dépôt Dataform peut gérer son propre dépôt Git ou être connecté à un dépôt Git distant tiers. Vous pouvez associer un dépôt Dataform à un dépôt GitHub, GitLab, Azure DevOps Services ou Bitbucket.
Les utilisateurs contrôlent les versions de leur code de workflow dans les espaces de travail Dataform. Dans un espace de travail Dataform, vous pouvez extraire les modifications du dépôt, valider toutes les modifications ou une sélection de celles-ci, et les envoyer vers les branches Git du dépôt.
Développement de workflows
Dans Dataform, vous modifiez des fichiers et des répertoires dans un espace de travail de développement. Un espace de travail de développement est une copie virtuelle et modifiable du contenu d'un dépôt Git. Dataform préserve l'état des fichiers dans votre espace de travail de développement d'une session à l'autre.
Dans un espace de travail de développement, vous pouvez créer des actions de workflow SQL en utilisant Dataform Core avec SQLX et JavaScript, ou seulement avec JavaScript. Vous pouvez mettre en forme automatiquement votre code Dataform Core ou JavaScript.
Chaque élément d'un workflow Dataform, tel qu'une table ou une assertion, correspond à une action que Dataform effectue dans BigQuery. Par exemple, un fichier de définition de table est une action de création ou de mise à jour de la table dans BigQuery.
Dans un espace de travail Dataform, vous pouvez développer les actions de workflow suivantes :
- Déclarations sur les données sources
- Tables et vues
- Tables incrémentales
- Partitions et clusters de tables
- Dépendances entre les actions
- Documentation des tables
- Opérations SQL personnalisées
- Libellés BigQuery
- Tags avec stratégie BigQuery
- Tags Dataform
- Tests de qualité des données, appelés assertions
Vous pouvez utiliser JavaScript pour réutiliser le code de votre workflow Dataform de différentes manières :
Dataform compile le code du workflow dans votre espace de travail en temps réel. Dans votre espace de travail, vous pouvez afficher les requêtes compilées et les détails des actions dans chaque fichier. Vous pouvez également consulter l'état de la compilation et les erreurs dans le fichier modifié ou dans le dépôt.
Pour tester le résultat d'une requête SQL compilée avant de l'exécuter dans BigQuery, vous pouvez prévisualiser la requête dans votre espace de travail Dataform.
Pour inspecter l'intégralité du workflow défini dans votre espace de travail, vous pouvez afficher un graphique compilé interactif qui montre toutes les actions compilées de votre workflow et les relations entre elles.
Compilation des workflows
Dataform utilise les paramètres de compilation par défaut, configurés dans le fichier de paramètres du workflow, pour compiler le code du workflow dans votre espace de travail en SQL en temps réel. Il crée ainsi un résultat de compilation de l'espace de travail.
Vous pouvez remplacer les paramètres de compilation pour personnaliser la façon dont Dataform compile votre workflow en un résultat de compilation.
Les remplacements de compilation d'espace de travail vous permettent de configurer des remplacements de compilation pour tous les espaces de travail d'un dépôt. Vous pouvez définir des remplacements d'espace de travail dynamiques pour créer des résultats de compilation personnalisés pour chaque espace de travail, ce qui transforme les espaces de travail en environnements de développement isolés. Vous pouvez remplacer le projet Google Cloud dans lequel Dataform exécutera le contenu d'un espace de travail, ajouter un préfixe aux noms de toutes les tables compilées et ajouter un suffixe au schéma par défaut.
Les configurations de version vous permettent de configurer des modèles de paramètres de compilation pour créer des résultats de compilation d'un dépôt Dataform. Dans une configuration de version, vous pouvez remplacer le projet Google Cloud dans lequel Dataform exécutera les résultats de la compilation, ajouter un préfixe aux noms de toutes les tables compilées, ajouter un suffixe au schéma par défaut et ajouter des variables de compilation. Vous pouvez également définir la fréquence de création des résultats de compilation. Pour planifier des exécutions de résultats de compilation créés dans une configuration de version sélectionnée, vous pouvez créer une configuration de workflow.
Exécution du workflow
Lors de l'exécution du workflow, Dataform exécute les résultats de la compilation des workflows pour créer ou mettre à jour des composants dans BigQuery.
Pour créer ou actualiser les tables et les vues définies dans votre workflow dans BigQuery, vous pouvez démarrer manuellement l'exécution d'un workflow dans un espace de travail de développement ou planifier des exécutions.
Vous pouvez planifier des exécutions Dataform dans BigQuery de différentes manières :
- Créer des configurations de workflow pour planifier des exécutions de résultats de compilation créés dans des configurations de version
- Planifier des exécutions avec Cloud Composer
- Planifier des exécutions avec Workflows et Cloud Scheduler
Pour déboguer les erreurs, vous pouvez surveiller les exécutions de différentes manières :
- Afficher les journaux d'exécution Dataform détaillés
- Afficher les journaux d'audit pour Dataform
- Afficher les journaux Cloud Logging pour Dataform
Dataform Core
Dataform Core est un métalangage Open Source permettant de créer des tables et des workflows SQL. Dataform Core étend SQL en fournissant un système de gestion des dépendances, des tests de qualité des données automatisés et une documentation des données.
Vous pouvez utiliser Dataform Core pour les tâches suivantes :
- Définir des tables, des vues, des vues matérialisées ou des tables incrémentielles.
- Définir la logique de transformation des données.
- Déclarer les données sources et gérer les dépendances des tables.
- Documenter les descriptions des tables et des colonnes dans le code.
- Réutiliser des fonctions et des variables dans différentes requêtes.
- Écrire des assertions de données pour vérifier la cohérence des données.
Dans Dataform, vous utilisez Dataform Core pour développer des workflows et déployer des composants dans BigQuery.
Dataform Core fait partie du framework de modélisation de données Dataform Open Source, qui inclut également la CLI Dataform. Vous pouvez compiler et exécuter Dataform Core localement à l'aide de la CLI Dataform en dehors de Google Cloud.
Pour utiliser Dataform Core, vous devez écrire des fichiers SQLX. Chaque fichier SQLX contient une requête définissant une relation de base de données que Dataform crée et met à jour dans BigQuery.
Dataform compile votre code Dataform Core en temps réel pour créer un résultat de compilation SQL que vous pouvez exécuter dans BigQuery.
La compilation Dataform est hermétique pour vérifier la cohérence de la compilation, ce qui signifie que le même code est compilé à chaque fois dans le même résultat de compilation SQL. Dataform compile votre code dans un environnement de bac à sable sans accès à Internet. Aucune action supplémentaire, telle que l'appel d'API externes, n'est disponible lors de la compilation.
Bloc de configuration de fichier SQLX
Un fichier SQLX se compose d'un bloc de configuration et d'un corps. Toutes les propriétés de configuration et le bloc de configuration lui-même sont facultatifs. Par conséquent, tout fichier SQL brut est un fichier SQLX valide que Dataform exécute tel quel.
Dans le bloc de configuration, vous pouvez effectuer les actions suivantes :
- Spécifiez les métadonnées de la requête.
- Documenter les données :
- Définissez des tests de qualité des données.
Spécifier les métadonnées de requête
Vous pouvez configurer la façon dont Dataform matérialise les requêtes dans BigQuery (par exemple, le type de table de sortie, la base de données cible ou les libellés) à l'aide des métadonnées de configuration.
Documenter les données
Vous pouvez documenter vos tables et leurs champs directement dans le bloc de configuration. La documentation de vos tables est directement envoyée à BigQuery. Vous pouvez analyser cette documentation et la transférer vers d'autres outils.
Définir des tests de qualité des données
Vous pouvez définir des tests de qualité des données, appelés assertions, pour vérifier l'unicité, les valeurs nulles ou une condition personnalisée. Dataform ajoute les assertions définies dans le bloc de configuration à l'arborescence des dépendances de votre workflow après la création de la table. Vous pouvez également définir des assertions en dehors du bloc de configuration, dans un fichier SQLX distinct.
L'exemple de code suivant vous montre comment définir le type de table de sortie, documenter la table et définir un test de qualité dans un bloc de configuration d'un fichier SQLX.
config {
type: "table",
description: "This table joins orders information from OnlineStore & payment information from PaymentApp",
columns: {
order_date: "The date when a customer placed their order",
id: "Order ID as defined by OnlineStore",
order_status: "The status of an order e.g. sent, delivered",
customer_id: "Unique customer ID",
payment_status: "The status of a payment e.g. pending, paid",
payment_method: "How the customer chose to pay",
item_count: "The number of items the customer ordered",
amount: "The amount the customer paid"
},
assertions: {
uniqueKey: ["id"]
}
}
Corps du fichier SQLX
Dans le corps d'un fichier SQLX, vous pouvez effectuer les actions suivantes :
- Définissez une table et ses dépendances.
- Définissez des opérations SQL supplémentaires à exécuter dans BigQuery.
- Générez du code SQL avec JavaScript.
Définir un tableau
Pour définir une table, vous pouvez utiliser les instructions SQL SELECT
et la fonction ref
.
La fonction ref
est une fonction SQLX intégrée qui est essentielle à la gestion des dépendances dans Dataform. La fonction ref
vous permet de faire référence aux tables définies dans votre projet Dataform au lieu de coder en dur le schéma et les noms de table de votre table de données.
Dataform utilise la fonction ref
pour créer un arbre de dépendances de toutes les tables à créer ou à mettre à jour. Après la compilation, Dataform ajoute des instructions passe-partout telles que CREATE
, REPLACE
ou INSERT
.
L'exemple de code suivant montre comment référencer une table dans un fichier SQLX avec la fonction ref
.
config { type: "table" }
SELECT
order_date AS date,
order_id AS order_id,
order_status AS order_status,
SUM(item_count) AS item_count,
SUM(amount) AS revenue
FROM ${ref("store_clean")}
GROUP BY 1, 2, 3
Le résultat ressemble à ce qui suit :
CREATE OR REPLACE TABLE Dataform.orders AS
SELECT
order_date AS date,
order_id AS order_id,
order_status AS order_status,
SUM(item_count) AS item_count,
SUM(amount) AS revenue
FROM Dataform_stg.store_clean
GROUP BY 1, 2, 3
Pour en savoir plus sur la gestion des dépendances supplémentaires (par exemple, l'exécution conditionnelle de code ou l'utilisation d'autres fonctions intégrées de Dataform Core), consultez la documentation de référence de Dataform Core.
Définir des opérations SQL supplémentaires
Pour configurer Dataform afin qu'il exécute une ou plusieurs instructions SQL avant ou après la création d'une table ou d'une vue, vous pouvez spécifier des opérations de pré-requête et de post-requête.
L'exemple de code suivant montre comment configurer les autorisations d'accès aux tables ou aux vues dans une opération post-requête.
SELECT * FROM ...
post_operations {
GRANT `roles/bigquery.dataViewer` ON TABLE ${self()} TO "group:someusers@dataform.co"
}
Encapsuler le code SQL
Pour définir des fonctions réutilisables permettant de générer des parties répétitives de code SQL, vous pouvez utiliser des blocs JavaScript. Vous ne pouvez réutiliser le code défini dans un bloc JavaScript que dans le fichier SLQX où le bloc est défini. Pour réutiliser du code dans l'ensemble de votre dépôt, vous pouvez créer des inclusions.
Pour modifier dynamiquement une requête, vous pouvez utiliser du code JavaScript intégré n'importe où dans le corps.
L'exemple de code suivant montre comment définir un bloc JavaScript dans un fichier SQLX et l'utiliser de manière intégrée dans une requête :
js {
const columnName = "foo";
}
SELECT 1 AS ${columnName} FROM "..."
Limites
Dataform présente les limites connues suivantes :
Dataform dans Google Cloud s'exécute sur un environnement d'exécution V8 brut et n'est pas compatible avec les fonctionnalités et modules supplémentaires fournis par Node.js. Si votre codebase existant nécessite des modules Node.js, vous devez supprimer ces dépendances.
Les projets sans champ de nom dans
package.json
génèrent des diffs surpackage-lock.json
chaque fois que des packages sont installés. Pour éviter cela, vous devez ajouter une propriéténame
danspackage.json
.Les URL
git
+https://
pour les dépendances danspackage.json
ne sont pas acceptées.Convertissez ces URL en URL d'archive
https://
simples. Par exemple, convertissezgit+https://github.com/dataform-co/dataform-segment.git#1.5
enhttps://github.com/dataform-co/dataform-segment/archive/1.5.tar.gz
.Il n'est pas possible d'exécuter manuellement des tests unitaires.
La recherche de contenu de fichier n'est pas disponible dans les espaces de travail de développement.
Depuis Dataform Core
3.0.0.
, Dataform ne distribue plus d'image Docker. Vous pouvez créer votre propre image Docker de Dataform, que vous pouvez utiliser pour exécuter l'équivalent des commandes de la CLI Dataform. Pour créer votre propre image Docker, consultez Conteneuriser une application dans la documentation Docker.Les méthodes de l'API Dataform suivantes ne respectent pas les consignes AIP.134 en traitant l'entrée générique
*
comme une requête incorrecte et en mettant à jour tous les champs au lieu de ceux définis lorsquefield_mask
est omis :
Étapes suivantes
- Pour en savoir plus sur le cycle de vie du code dans Dataform, consultez Présentation du cycle de vie du code dans Dataform.
- Pour en savoir plus sur les dépôts Dataform, consultez Présentation des dépôts.
- Pour en savoir plus sur les espaces de travail Dataform, consultez Créer un espace de travail de développement Dataform.
- Pour en savoir plus sur le développement de workflows dans Dataform, consultez Présentation des workflows SQL.
- Pour en savoir plus sur la CLI Dataform, consultez Utiliser la CLI Dataform.