Accéder au contenu principal

Aperçu de dbt : Un tutoriel complet

Découvrez ce qu'est un instantané dbt, comment en créer un et comment le configurer pour suivre les modifications de vos données dans ce tutoriel.
Actualisé 29 juil. 2025  · 9 min de lecture

dbt (data build tool) est un outil performant utilisé par les analystes et ingénieurs de données pour transformer, tester et documenter les données dans la pile de données moderne. 

Bien qu'il soit largement reconnu pour ses capacités de modélisation, une autre fonctionnalité essentielle est dbt snapshot, qui vous permet de capturer les dimensions à évolution lente (SCD) dans votre entrepôt de données.

Ce tutoriel vous fournira une explication détaillée des instantanés dbt, de leurs cas d'utilisation et de leur mise en œuvre. Je vais :

  • Définissez ce que sont les instantanés dbt.
  • Veuillez expliquer quand et pourquoi utiliser des instantanés.
  • Mettez en œuvre un instantané étape par étape.
  • Visualisez les données instantanées.
  • Veuillez partager vos meilleures pratiques et les défis rencontrés.

Pour en savoir plus sur le dbt, veuillez consulter notre guide « Qu'est-ce que le dbt ? » à l'adresse . Introduction pratique pour les ingénieurs de données et notre cours Introduction à dbt.

Que sont les instantanés dbt ?

Un instantané dbt est un mécanisme permettant de suivre les modifications apportées aux enregistrements au fil du temps, en particulier pour les tableaux dont les modifications historiques ne sont pas conservées par défaut. Les instantanés sont principalement utilisés pour implémenter les dimensions à évolution lente (SCD) de type 2. Ils stockent les versions des lignes lorsque les colonnes suivies changent. 

Les cas d'utilisation incluent :

  • Suivi des changements dans les profils des clients au fil du temps.
  • Surveillance des changements d'état des données opérationnelles.
  • Enregistrement de l'évolution des attributs dimensionnels pour des rapports historiques précis.

Pourquoi utiliser les instantanés dbt ? Avantages et cas d'utilisation

Les instantanés dbt sont précieux car ils servent à enregistrer les modifications apportées aux données au fil du temps, ce qui facilite l'analyse historique et la création de rapports de conformité.

Avantages

Voici quelques avantages dont vous bénéficierez en utilisant les instantanés :

  • Analyse des tendances: Comprenez comment le comportement, les caractéristiques ou le statut des clients évoluent.
  • Audit et conformité: Présentez les données historiques aux auditeurs ou aux organismes de réglementation.
  • Débogage des pipelines de données: Identifiez les modifications inattendues apportées à un enregistrement afin de résoudre les problèmes.

Cas d'utilisation courants

Les instantanés peuvent s'avérer utiles dans certaines situations particulières, telles que :

  • Suivi des mises à niveau des adhésions aux programmes de fidélité.
  • Enregistrement de l'historique des prix des produits dans le commerce de détail.
  • Enregistrement des changements de service des employés dans les systèmes RH.

Fondements architecturaux

Les instantanés s'intègrent parfaitement à l'écosystème dbt, tirant parti de sa configuration et de sa gestion des exécutions pour créer efficacement des tableaux historiques.

Examinons les types de modèles utilisés dans les données à titre d'exemple.

Deux modèles sont utilisés pour les données :

  • Modèles standard: Transformez les données pour créer des tableaux représentant l'état actuel.
  • Modèles instantanés: Créez des tableaux versionnés pour suivre l'historique des modifications.

Ces deux modèles diffèrent par leur objectif, leurs méthodes de stockage et leurs applications.

Voici un résumé de leurs différences :

Caractéristique

Modèles standard

Instantanés

Objectif

Transformations de l'état actuel

Historique du cursus

Stockage

Tableau ou vue avec les données actuelles

Tableau d'historique en mode ajout uniquement

Idéal pour

Modèles factuels/dimensionnels

Dimensions changeant lentement

Fonctionnement des instantanés dbt

Les instantanés suivent généralement un flux de travail structuré qui garantit que toutes les modifications sont enregistrées de manière systématique, en suivant les étapes suivantes :

  1. s de configuration: Définissez la stratégie de capture instantanée, les clés uniques et les colonnes de détection des modifications.
  2. d'exécution: Exécutez « dbt snapshot » pour comparer les données actuelles aux instantanés existants.
  3. Stockage: dbt insère de nouveaux enregistrements pour les modifications détectées, en mettant à jour les horodatages de validité.

Cependant, comment les modifications sont-elles suivies dans dbt ?

Toutes les modifications sont enregistrées dans le tableau Instantané de sortie.

Si une modification est détectée, dbt met à jour le champ « dbt_valid_to » (horodatage de la dernière modification) de la version précédente avec l'horodatage actuel et insère une nouvelle ligne avec le champ « dbt_valid_from » (horodatage de la dernière modification) comme horodatage actuel.

Stratégies instantanées dans dbt

Les instantanés utilisent deux stratégies principales pour détecter les modifications.

1. Stratégie d'horodatage

  • Définition d': Utilise un champ horodaté pour détecter les modifications.
  • Quand utiliser l': Le tableau source contient des horodatages fiables pour l'updated_at.

2. Vérifier la stratégie

  • Définition d': Compare directement les colonnes spécifiées.
  • Quand utiliser l': Le tableau source ne comporte pas d'horodatage fiable, mais les modifications d'attributs doivent être suivies.

Stratégie

Méthode de détection

Idéal pour

Horodatage

Colonne « timestamp » mise à jour

Tableaux avec horodatage fiable de la dernière modification

Veuillez vérifier.

Comparaison directe des colonnes

Tableaux sans colonnes d'horodatage

Suppressions définitives

Les modifications apportées aux données, telles que les suppressions, peuvent également être suivies, mais pas par défaut. Cependant, il existe un moyen de modifier cela afin de surveiller ces modifications définitives.

  • du problème: Les instantanés ne suivent pas les lignes supprimées par défaut.
  • s de la solution: Définissez l'invalidate_hard_deletes=True pour marquer les lignes supprimées avec une valeur d'dbt_valid_to, en conservant leur dernier état.

Voici un exemple de stratégie de vérification mise en œuvre, tenant compte des suppressions définitives :

{%
  snapshot customers_snapshot %}

{%
  set config(
    target_schema='snapshots',
    unique_key='customer_id',
    strategy='check',
    check_cols=['tier'],
    invalidate_hard_deletes=True
  )
%}

SELECT * FROM {{ source('customers') }}

{% endsnapshot %}

Guide de mise en œuvre des instantanés dbt

Maintenant que nous comprenons le fonctionnement des instantanés dbt, examinons comment les mettre en œuvre. 

1. Exemple de jeu de données pour le tutoriel Snapshot

Pour vous exercer à créer des instantanés, nous allons créer un exemple de tableau clients qui imite un système d'adhésion réel. Cela nous fournit des données concrètes pour tester des stratégies courantes de capture instantanée.

import csv
from datetime import datetime

# Define the data
customers_data = [
    ["customer_id", "name", "tier", "updated_at"],  # header row
    [1, "Alice Tan", "Silver", "2025-07-01 10:00:00"],
    [2, "Bob Lee", "Gold", "2025-07-01 10:00:00"],
    [3, "Cheryl Lim", "Silver", "2025-07-01 10:00:00"]
]

# Write data to customers.csv
with open("customers.csv", mode="w", newline="", encoding="utf-8") as file:
    writer = csv.writer(file)
    writer.writerows(customers_data)

2. Configuration de votre projet dbt

Avant de pouvoir mettre en œuvre les instantanés, il est essentiel de configurer correctement votre projet dbt. Cela garantit que votre environnement est configuré pour gérer les modèles, les instantanés, les tests et la documentation de manière structurée et évolutive.

Conditions préalables

  • Veuillez vous assurer que Python 3.7+ est installé.
  • Veuillez installer dbt à l'aide de pip :
pip install dbt

Veuillez remplacer dbt-postgres par votre adaptateur d'entrepôt, par exemple dbt-snowflake ou dbt-bigquery, en fonction de votre environnement.

Instructions de configuration étape par étape

1. Veuillez vous rendre dans le répertoire de vos projets.

C'est ici que vous stockerez vos projets d'analyse ou ELT. Dans ce cas, nous stockerons tous les fichiers associés dans ce dossier de projet dbt.

cd ~/dbt-snapshot-project

2. Veuillez initialiser un nouveau projet dbt.

Créez un fichier de configuration nommé dbt_project.yml :

Veuillez coller le texte suivant dans votre fichier de projet :

name: dbt_snapshots_project
version: '1.0'
profile: austinchia

seeds:
  dbt_snapshots_project:
    +quote_columns: false

3. Veuillez vérifier votre connexion.

dbt debug

Voici ce que devrait afficher la commande :

Sortie de débogage dbt

4. Veuillez enregistrer les semences dans une base de données locale.

Veuillez exécuter la commande suivante :

dbt seed

Voici ce que devrait afficher la commande :

Sortie de la graine dbt

5. Veuillez configurer les paramètres de connexion à votre base de données.

Dans le fichier profiles.yml, généralement situé dans ~/.dbt/profiles.yml.

Voici le contenu de mon fichier de profils :

austinchia:
  target: dev
  outputs:
    dev:
      type: sqlite
      threads: 1
      database: ./dbt_snapshots_project.db
      schema: main
      schema_directory: ./schemas
      schemas_and_paths:
        main: ./dbt_snapshots_project.db
      extensions:
        - "C:/sqlean/crypto.dll"

Si vous utilisez une base de données SQLite comme moi, vous devrez installer le extension SQLean également.

6. Intégrez vos données dans les modèles de staging dbt :

Veuillez créer un nouveau dossier nommé « models ». Dans ce dossier, veuillez créer un fichier nommé « stg_customers.sql ».

Veuillez coller le code suivant dans le fichier :

SELECT
  *
FROM {{ ref('customers') }}

7. Créez des modèles de staging à l'aide de la commande suivante dans dbt.

dbt run --select stg_customers

Voici ce que devrait afficher la commande :

Sortie de mise en attente dbt

3. Configuration de l'instantané dbt

  1. Veuillez créer un répertoire nommé « snapshots ».
  2. Veuillez rédiger votre fichier SQL instantané avec la configuration appropriée.

Dans cet exemple, vous pouvez utiliser le code suivant pour effectuer un instantané de stratégie d'horodatage.

{% snapshot customers_snapshot %}

{{
  config(
    target_schema='snapshots',
    unique_key='customer_id',
    strategy='timestamp',
    updated_at='updated_at'
  )
}}

select * from {{ ref('customers') }}

{% endsnapshot %}

4. Exécution de dbt Snapshot

Exécuter :

dbt snapshot

Dans cette commande, dbt crée le tableau instantané s'il n'existe pas. Il insère également de nouvelles lignes pour les modifications détectées.

Voici ce que devrait afficher la commande :

Sortie instantanée dbt

5. Vérification des tableaux instantanés

Maintenant que vous avez effectué votre instantané, vous devriez obtenir un nouveau fichier snapshot.db créé dans le répertoire de fichiers de votre projet.

J'ai ouvert ce fichier dans VSCode pour voir à quoi il ressemble :

tableau instantané

Comme vous pouvez le constater, il contient des colonnes supplémentaires telles que « dbt_updated_at » (nom du fichier), etc. Ces informations sont essentielles pour déterminer si des modifications ont été apportées aux données et à quel moment elles ont été effectuées.

Pour obtenir des guides pratiques supplémentaires sur dbt, veuillez consulter notre guide Semantic Layer avec dbt..

Exemple : Suivi des modifications des données avec les instantanés dbt

Les instantanés permettent aux équipes de capturer une piste d'audit complète des modifications apportées à n'importe quel attribut d'un tableau au fil du temps, ce qui les rend très utiles pour la conformité, le débogage et l'analyse.

  1. Créez un exemple de tableau d'customers s avec les champs pertinents. Cela inclut l'identifiant client, le nom, l'adresse e-mail et l'horodatage updated_at pour suivre les modifications apportées.
CREATE TABLE customers (
    customer_id INTEGER PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(100),
    updated_at TIMESTAMP
);
  1. Veuillez saisir les données initiales afin de simuler un état de référence.

Veuillez utiliser le code suivant pour insérer des données dans le tableau. Ces données seront utilisées pour les données d'origine avant la modification.

INSERT INTO customers VALUES 
(1, 'Alice Tan', 'alice@example.com', '2025-07-01 10:00:00'),
(2, 'Bob Lee', 'bob.lee@example.com', '2025-07-01 10:00:00');
  1. Écrivez une configuration d'instantané dbt pour suivre les modifications apportées aux e-mails :
{% snapshot customers_email_snapshot %}

{%
  set config(
    target_schema='snapshots',
    unique_key='customer_id',
    strategy='check',
    check_cols=['email'],
    invalidate_hard_deletes=True
  )
%}

SELECT * FROM {{ source('customers') }}

{% endsnapshot %}
  1. Veuillez exécuter l'dbt snapshot pour enregistrer l'état initial.
dbt snapshot
  1. Simulez une mise à jour par e-mail dans le tableau source.

Ensuite, nous mettrons à jour notre tableau initial en modifiant les informations d'un client afin de simuler une modification des données.

UPDATE customers
SET email = 'alice.tan@example.com', updated_at = '2025-07-02 09:00:00'
WHERE customer_id = 1;
  1. Veuillez relancer l'dbt snapshot pour enregistrer la modification.
dbt snapshot
  1. Interrogez le tableau instantané.

Pour afficher les différences et les modifications apportées aux données, vous devez interroger le tableau instantané. Le tableau doit indiquer les deux versions de l'adresse électronique avec leurs périodes de validité respectives :

SELECT customer_id, email, dbt_valid_from, dbt_valid_to
FROM snapshots.customers_email_snapshot
ORDER BY customer_id, dbt_valid_from;

Ce processus vous garantit de conserver un historique complet des modifications apportées aux mises à jour par e-mail, ce qui est essentiel pour les audits RGPD, le suivi de l'historique des contacts ou l'analyse du service client.

Configuration et gestion avancées

Une gestion efficace de la configuration permet aux équipes de déployer facilement des implémentations instantanées à travers différents projets et environnements.

1. Configuration au niveau du projet et au niveau des ressources

  • Configuration au niveau du projet : Veuillez utiliser dbt_project.yml pour définir les configurations par défaut des instantanés, telles que le schéma cible ou les matérialisations, applicables à tous les instantanés.
  • Configuration au niveau des ressources : Remplacez les paramètres dans les fichiers SQL individuels des instantanés pour répondre à des exigences spécifiques, garantissant ainsi une grande flexibilité.

2. Personnalisation des champs de métadonnées

Par défaut, dbt crée les champs « dbt_valid_from » et « dbt_valid_to ». Vous pouvez renommer ces éléments à l'aide des options de configuration « valid_from » et « valid_to » si les normes de votre équipe exigent des conventions de dénomination différentes pour plus de clarté dans les outils de BI ou de gouvernance des données.

3. Migration des configurations Snapshot existantes

Les migrations peuvent entraîner certaines incohérences si elles ne sont pas gérées correctement. Voici quelques points à prendre en compte lors de la migration de vos configurations de clichés instantanés :

  1. Identifier les définitions d'instantanés héritées à l'aide de styles de blocs de configuration obsolètes.
  2. Refactoriser vers des configurations basées sur YAML si vous utilisez des versions récentes de dbt, afin d'assurer la cohérence.
  3. Vérifier l'exactitude :
    • Exécutez des instantanés sur des environnements de test.
    • Veuillez comparer les résultats avant de désactiver les instantanés existants.
  4. Mise hors service : Veuillez supprimer les anciens fichiers instantanés et mettre à jour la documentation en conséquence.

4. Intégration avec d'autres outils

Les modifications apportées aux données peuvent être suivies à l'aide des instantanés dbt. 

Par exemple :

  • Outils BI (par exemple, Power BI, Tableau) : Créez des visualisations temporelles illustrant les changements d'attributs au fil du temps.
  • Plateformes d'observabilité (par exemple, Monte Carlo, Datafold) : Surveillez la fraîcheur des données et l'intégrité historique.
  • Catalogues de données (par exemple, Alation, Collibra) : Incluez des tableaux récapitulatifs de l'historique des instantanés en tant qu'artefacts de traçabilité documentés à des fins de

Meilleures pratiques pour la mise en œuvre en production

La mise en œuvre des instantanés dbt en production nécessite une conception réfléchie afin de garantir les performances, la maintenabilité et la valeur commerciale.

Il est recommandé de suivre ces conseils :

1. Cas d'utilisation optimale et sélection des tableaux

  • Donnez la priorité aux tableaux de dimensions contenant des attributs qui changent rarement, tels que les profils clients, les données de base produit et les contrats fournisseurs.
  • Évitez les tableaux transactionnels (par exemple, les lignes de commande) avec des insertions et des mises à jour fréquentes, sauf si cela est nécessaire en raison d'une croissance rapide du stockage.

2. Techniques d'optimisation des performances

En production, vous souhaiterez optimiser vos données afin que les modifications puissent être suivies efficacement sans affecter votre produit.

Voici quelques conseils :

  • Indexation : Veuillez ajouter des index aux colonnes « unique_key » et « validity » afin d'accélérer les requêtes.
  • Partitionnement : Veuillez partitionner les tableaux de clichés instantanés par date afin d'optimiser les performances d'analyse.
  • Regroupement (spécifique à l'entrepôt) : Utilisez des clés de regroupement (par exemple dans BigQuery) sur les champs à cardinalité élevée afin d'améliorer la vitesse des requêtes de filtrage.

3. Pratiques d'entretien et de surveillance

  • Planification : Exécutez les instantanés pendant les heures creuses afin de minimiser l'impact sur les coûts informatiques.
  • Surveillance : Configurez des alertes pour les échecs de snapshots dans dbt Cloud ou votre outil d'orchestration.
  • Vérification de la fraîcheur des données : Veuillez utiliser les tests dbt ou des outils d'observabilité pour vérifier la fraîcheur des données des instantanés.
  • Analyse du stockage : Vérifiez régulièrement la taille des tableaux instantanés et supprimez les données historiques si l'activité le permet.

4. Erreurs courantes

L'utilisation d'un identifiant unique ( unique_key ) entraîne une version incorrecte des lignes. Veuillez toujours tester la logique d'unicité avant le déploiement. 

La surcharge des instantanés peut également se produire lorsque stocker des modifications historiques inutiles (par exemple, des colonnes avec des mises à jour fréquentes de l'horodatage) peut augmenter rapidement les coûts de stockage.

Défis courants et solutions

L'utilisation des instantanés dans dbt peut présenter certaines difficultés techniques spécifiques :

1. Collisions de clés uniques

Problème : Lignes en double dans l'instantané en raison de clés uniques mal définies.

Solution :

  • Vérifiez l'unicité à l'aide des tests dbt avant le déploiement du snapshot.
  • Concaténez plusieurs champs pour garantir l'unicité des composites lorsque cela est nécessaire.

2. Performances des requêtes temporelles

Problème : Les requêtes sont lentes lors de l'analyse des données historiques.

Solution :

  • Utilisez efficacement le partitionnement et le regroupement des entrepôts.
  • Veuillez toujours filtrer les requêtes par « dbt_valid_from » ou par plage de dates afin de réduire le volume de données analysées.

3. Dépannage des erreurs d'exécution des instantanés

Les problèmes courants incluent :

  • Schéma incorrect ou autorisations de base de données incorrectes.
  • Les modifications apportées au schéma du tableau source (par exemple, suppression de colonnes) interrompent les instructions d'SELECT de l'instantané.
  • Erreurs de syntaxe dans les blocs de configuration des instantanés.

Solutions :

  • Veuillez utiliser dbt debug pour vérifier la connexion et la configuration.
  • Mettre en œuvre des tests d'intégration continue dans dbt afin de détecter les erreurs avant le déploiement.
  • Veuillez consulter les journaux d'exécution dbt pour obtenir des messages d'erreur détaillés.

Conclusion

Les instantanés dbt permettent aux équipes d'analyse de créer des ensembles de données historiques robustes avec un minimum de frais d'ingénierie, ce qui facilite l'analyse de la conformité. Si vous souhaitez en savoir plus sur la TCD, notre cours sur l'Introduction à la TCD. Pour plus d'informations et d'autres guides, veuillez consulter notre Introduction au package dbt-utils et tutoriel dbt.

FAQ sur les instantanés dbt

Comment configurer les instantanés dbt pour différentes stratégies de données ?

Pour configurer les instantanés dbt pour différentes stratégies de données, veuillez choisir entre les stratégies d'horodatage et de vérification dans votre configuration d'instantanés. Pour la stratégie d'horodatage, veuillez spécifier strategy='timestamp' et fournir une colonne updated_at qui se met à jour de manière fiable à chaque modification. Pour la stratégie de vérification, veuillez utiliser strategy='check' et définir check_cols avec la liste des colonnes à surveiller pour détecter les modifications.

Quelles sont les meilleures pratiques pour planifier des instantanés dbt ?

Planifiez des instantanés pendant les heures creuses, alignez leur fréquence sur les taux de modification des données, utilisez des orchestrateurs tels qu'Airflow ou dbt Cloud, exécutez-les séparément des transformations lourdes et surveillez régulièrement les erreurs.

Comment puis-je personnaliser les champs de métadonnées dans les instantanés dbt ?

Vous pouvez renommer les champs de métadonnées par défaut tels que dbt_valid_from et dbt_valid_to dans la configuration de l'instantané et ajouter des métadonnées personnalisées à l'aide de la configuration meta dans votre fichier YAML afin de vous conformer à vos normes en matière de données.

Quelles sont les différences entre les stratégies d'horodatage et de vérification dans les instantanés dbt ?

Timestamp utilise une colonne updated_at pour détecter toute modification, tandis que check compare des colonnes spécifiques pour détecter les différences. Timestamp est plus simple, tandis que check offre plus de contrôle lorsqu'il n'existe pas de timestamp fiable.

Comment gérer les enregistrements supprimés dans les instantanés dbt ?

Veuillez utiliser invalidate_hard_deletes=True afin que dbt marque les enregistrements manquants avec une date de fin dans leur période de validité, capturant ainsi efficacement les suppressions dans l'historique de vos instantanés.


Austin Chia's photo
Author
Austin Chia
LinkedIn

Je m'appelle Austin, je suis blogueur et rédacteur technique et j'ai des années d'expérience en tant que data scientist et data analyst dans le domaine de la santé. J'ai commencé mon parcours technologique avec une formation en biologie et j'aide maintenant les autres à faire la même transition grâce à mon blog technologique. Ma passion pour la technologie m'a conduit à écrire pour des dizaines d'entreprises SaaS, inspirant les autres et partageant mes expériences.

Sujets

Meilleurs cours DataCamp

Cursus

dbt Fondamentaux

0 min
Construisez des pipelines de données fiables et évolutifs avec dbt Fundamentals, un cursus pratique conçu pour les analystes de données, les ingénieurs de données, les ingénieurs analytiques.
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow
Apparenté

blog

Architecture de l'entrepôt de données : Tendances, outils et techniques

Apprenez l'essentiel de l'architecture d'un entrepôt de données, des composants clés aux meilleures pratiques, pour construire un système de données évolutif et efficace !
Kurtis Pykes 's photo

Kurtis Pykes

15 min

blog

Les 50 meilleures questions et réponses d'entretien sur AWS pour 2025

Un guide complet pour explorer les questions d'entretien AWS de base, intermédiaires et avancées, ainsi que des questions basées sur des situations réelles.
Zoumana Keita 's photo

Zoumana Keita

15 min

blog

Types d'agents d'intelligence artificielle : Comprendre leurs rôles, leurs structures et leurs applications

Découvrez les principaux types d'agents d'intelligence artificielle, comment ils interagissent avec les environnements et comment ils sont utilisés dans les différents secteurs d'activité. Comprendre les agents réflexes simples, les agents basés sur un modèle, les agents basés sur un but, les agents basés sur l'utilité, les agents d'apprentissage, etc.
Vinod Chugani's photo

Vinod Chugani

14 min

blog

Les 20 meilleures questions d'entretien pour les flocons de neige, à tous les niveaux

Vous êtes actuellement à la recherche d'un emploi qui utilise Snowflake ? Préparez-vous à répondre à ces 20 questions d'entretien sur le flocon de neige pour décrocher le poste !
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

15 min

blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates a offert plus de 20k bourses d'études à nos partenaires à but non lucratif au deuxième trimestre 2023. Découvrez comment des apprenants défavorisés et assidus ont transformé ces opportunités en réussites professionnelles qui ont changé leur vie.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

blog

2022-2023 Rapport annuel DataCamp Classrooms

À l'aube de la nouvelle année scolaire, DataCamp Classrooms est plus motivé que jamais pour démocratiser l'apprentissage des données, avec plus de 7 650 nouveaux Classrooms ajoutés au cours des 12 derniers mois.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 min

Voir plusVoir plus