Snowflake n est pas juste un data warehouse SQL. En entretien Senior, on eval...
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.
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-- 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();-- 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)| Niveau | Maitrise | Signal GO | NO-GO |
|---|---|---|---|
| Confirme | Streams basiques, Tasks, Time Travel, Zero-Copy Clone | A configure un Stream + Task pour du CDC, a utilise Time Travel | Ne sait pas ce qu est un Stream Snowflake |
| Senior | Dynamic Tables, Snowpark, optimisation couts, architecture avancee | A deploye des Dynamic Tables, utilise Snowpark, optimise les couts warehouse | N a jamais touche a Snowpark ni aux Dynamic Tables |
Premier entretien gratuit. Rapport GO/NO-GO sous 48h.