AccueilBlogStack dbt + Snowflake : architecture complète en production
Guide recrutement data

Stack dbt + Snowflake : architecture complète en production

dbt et Snowflake forment la stack analytique la plus répandue en 2025. En entretien Senior, on évalue la capacité à architecturer cette stack de manière robuste, testée et économique.

Data Builder·Juin 2025·7 min de lecture·Analytics Engineer
Sommaire
  1. Architecture de référence
  2. Organisation des modèles dbt
  3. Optimisation Snowflake
  4. CI/CD slim
  5. Maîtrise des coûts
  6. Gouvernance et documentation
  7. Grille

1Architecture de référence dbt + Snowflake

Question discriminante

Décrivez l architecture complète d une stack dbt + Snowflake bien structurée.

# Architecture dbt + Snowflake de référence SNOWFLAKE ├── RAW_DB # données brutes, jamais modifiées │ ├── FIVETRAN/ # ingestion via Fivetran │ └── AIRBYTE/ # ingestion via Airbyte ├── DEV_DB # environnement de développement │ └── ANALYTICS/ # schémas dbt dev (par développeur) └── PROD_DB # production ├── STAGING/ # modèles staging dbt ├── INTERMEDIATE/# modèles intermédiaires └── MARTS/ # tables consommées par la BI # dbt profiles.yml my_project: target: dev outputs: dev: type: snowflake account: mon_compte database: DEV_DB schema: '{{ env_var("DBT_SCHEMA", "analytics_" ~ env_var("USER")) }}' warehouse: DEV_WH prod: database: PROD_DB schema: MARTS warehouse: PROD_WH

2Organisation des modèles dbt

Question discriminante

Comment organisez-vous staging, intermediate et marts dans un projet dbt ?

# dbt_project.yml - configuration par layer models: mon_projet: staging: +schema: staging +materialized: view # vues légères +tags: ['staging'] intermediate: +schema: intermediate +materialized: view +tags: ['intermediate'] marts: +schema: marts +materialized: table # tables pour la BI finance: +materialized: table marketing: +materialized: table +tags: ['marts'] seeds: +schema: seeds +tags: ['seed']

3Optimisation Snowflake pour dbt

Question discriminante

Quels paramètres Snowflake optimisez-vous pour vos modèles dbt ?

-- Cluster Key sur les grandes tables marts ALTER TABLE PROD_DB.MARTS.FCT_ORDERS CLUSTER BY (order_date, region); -- Incremental model dbt optimisé {{ config( materialized='incremental', unique_key='order_id', cluster_by=['order_date'], on_schema_change='append_new_columns', snowflake_warehouse='TRANSFORM_WH_M' ) }} SELECT * FROM {{ ref('stg_orders') }} {% if is_incremental() %} WHERE order_date > (SELECT MAX(order_date) FROM {{ this }}) {% endif %}

4CI/CD : slim CI dbt sur Snowflake

Question discriminante

Comment mettez-vous en place le slim CI dbt pour limiter les coûts Snowflake en CI ?

# .github/workflows/dbt-ci.yml jobs: dbt_slim_ci: steps: - name: dbt build (models modifiés uniquement) run: | dbt build \ --select state:modified+ \ --defer \ --state ./prod-artifacts \ --target ci \ --exclude tag:slow env: SNOWFLAKE_ACCOUNT: ${{ secrets.SF_ACCOUNT }} SNOWFLAKE_USER: ${{ secrets.SF_USER }} SNOWFLAKE_PASSWORD: ${{ secrets.SF_PASSWORD }} - name: Upload artifacts uses: actions/upload-artifact@v4 with: name: dbt-artifacts path: target/manifest.json

5Maîtrise des coûts Snowflake + dbt

Question discriminante

Comment réduisez-vous les coûts Snowflake de vos pipelines dbt ?

6Gouvernance : documentation et lineage

Question discriminante

Comment assurez-vous que votre projet dbt reste maintenable dans le temps ?

7Grille par niveau

NiveauMaitriseSignal GONO-GO
ConfirméStructure staging/marts, tests, déploiement manuelA structuré un projet dbt en 3 layers, a configuré Snowflake warehousesMet toute la logique dans les marts sans staging
SeniorIncremental models, slim CI, coûts maîtrisés, gouvernanceA mis en place le slim CI, utilise des incremental models, monitore les coûtsNe sait pas ce qu est un incremental model, ne connaît pas le slim CI

Vous recrutez un Analytics Engineer dbt + Snowflake ?

Premier entretien gratuit. Rapport GO/NO-GO sous 48h.