SCD2 avec les instantanés dbt

dbt intermédiaire

Mike Metzger

Data Engineer

Qu'est-ce qu'un instantané ?

  • Examiner l'évolution d'un ensemble de données dans le temps
  • Illustrer les divers états d'un objet, par exemple
    • État de la commande
    • État de production
    • État d'expédition

Commande

1 Photo de micheile henderson sur Unsplash
dbt intermédiaire

SCD2

  • Dimension à évolution lente
  • Suit les changements dans le temps
  • dbt met en œuvre SCD2 avec des instantanés

Données changeantes

1 Photo de Luke Chesser sur Unsplash
dbt intermédiaire

Exemple SCD2

  • État de la commande
  • États possibles :
    • Reçue
    • Emballée
    • Expédiée
id order_status last_updated
1 Shipped 2023-07-01 11:30
id order_status last_updated
1 Received 2023-07-01 10:45
1 Packed 2023-07-01 11:15
1 Shipped 2023-07-01 11:30
dbt intermédiaire

SCD2 dans dbt

  • dbt utilise des instantanés pour implémenter SCD2
  • Peut suivre les changements automatiquement
  • Ajoute des colonnes à la sortie
    • dbt_valid_from
    • dbt_valid_to
id order_status last_updated dbt_valid_from dbt_valid_to
1 Received 2023-07-01 10:45 2023-07-01 10:45 2023-07-01 11:15
1 Packed 2023-07-01 11:15 2023-07-01 11:15 2023-07-01 11:30
1 Shipped 2023-07-01 11:30 2023-07-01 11:30 null
dbt intermédiaire

Mettre en œuvre des instantanés dbt

  • Fichier SQL, snapshots/snapshot_name.sql
{% snapshot snapshot_orders %}

{{ config(
target_schema='snapshots',
strategy='timestamp',
unique_key='id',
updated_at='last_updated'
) }}
select * from {{ source('raw', 'orders') }}
{% endsnapshot %}
dbt intermédiaire

Instantané dbt

  • Exécuter dbt snapshot
  • Créer un nouveau modèle avec la commande ref() pour interroger l'instantané
    • select * from {{ ref('snapshot_orders') }}
  • Exécuter dbt snapshot souvent pour voir les données potentiellement modifiées
    • Planifier des mises à jour automatiques
dbt intermédiaire

Passons à la pratique !

dbt intermédiaire

Preparing Video For Download...