AccueilBlogTest technique Snowflake avance : Streams, Tasks, Dynamic Tables
Guide recrutement data

Test technique Snowflake avance : Streams, Tasks, Dynamic Tables

Snowflake n est pas juste un data warehouse SQL. En entretien Senior, on eval...

Data Builder·Juin 2025·7 min·Data Engineer · Analytics Engineer
Sommaire
  1. Streams et CDC
  2. Tasks et orchestration
  3. Dynamic Tables
  4. Zero-Copy Cloning
  5. Snowpark Python
  6. Optimisation des couts
  7. Grille

Snowflake n est pas juste un data warehouse SQL. En entretien Senior, on evalue Streams pour le CDC, Tasks pour l orchestration legere, et Snowpark pour le Python dans Snowflake.

1Streams : CDC natif dans Snowflake

Question discriminante

Qu est-ce qu un Stream Snowflake ? Quelle est la difference entre APPEND_ONLY et DEFAULT ?

-- Creer un stream sur une table source CREATE STREAM orders_stream ON TABLE orders APPEND_ONLY = FALSE; -- capture INSERT + UPDATE + DELETE -- Consommer le stream dans un merge MERGE INTO orders_target AS t USING ( SELECT order_id, customer_id, amount, METADATA$ACTION, -- INSERT ou DELETE METADATA$ISUPDATE -- True si c est un update FROM orders_stream WHERE METADATA$ACTION = 'INSERT' ) AS s ON t.order_id = s.order_id WHEN MATCHED THEN UPDATE SET t.amount = s.amount WHEN NOT MATCHED THEN INSERT (order_id, customer_id, amount) VALUES (s.order_id, s.customer_id, s.amount); -- Le stream se vide automatiquement apres consommation

2Tasks : orchestration native Snowflake

-- Task planifiee toutes les heures CREATE OR REPLACE TASK refresh_aggregates WAREHOUSE = 'ETL_WH' SCHEDULE = 'USING CRON 0 * * * * UTC' AS INSERT INTO daily_revenue SELECT DATE(order_date), SUM(amount) FROM orders WHERE order_date >= DATEADD('day', -1, CURRENT_DATE) GROUP BY 1; ALTER TASK refresh_aggregates RESUME; -- Task declenchee par un stream (quand nouvelles donnees) CREATE TASK process_new_orders WAREHOUSE = 'ETL_WH' WHEN SYSTEM$STREAM_HAS_DATA('orders_stream') AS CALL process_orders_proc();

3Dynamic Tables : incremental automatique

4Zero-Copy Cloning

-- Cloner une base entiere en quelques secondes, sans copier les donnees CREATE DATABASE prod_clone CLONE production; -- Utilise pour : tests de migration, environnements de dev, snapshots rapides -- Time Travel : requeter les donnees passees SELECT * FROM orders AT(TIMESTAMP => '2025-01-01 12:00:00'::TIMESTAMP_TZ); SELECT * FROM orders BEFORE(STATEMENT => 'last_query_id'); -- Undrop : restaurer une table supprimee DROP TABLE orders; UNDROP TABLE orders; -- fonctionne dans la fenetre Time Travel (7-90 jours)

5Snowpark Python : Python dans Snowflake

6Optimisation des couts Snowflake

7Grille par niveau

NiveauMaitriseSignal GONO-GO
ConfirmeStreams basiques, Tasks, Time Travel, Zero-Copy CloneA configure un Stream + Task pour du CDC, a utilise Time TravelNe sait pas ce qu est un Stream Snowflake
SeniorDynamic Tables, Snowpark, optimisation couts, architecture avanceeA deploye des Dynamic Tables, utilise Snowpark, optimise les couts warehouseN a jamais touche a Snowpark ni aux Dynamic Tables

Vous recrutez un profil data ?

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