Snowflake.
Cloud data warehousing on Snowflake — virtual warehouses, micro-partitions, time travel, streams, tasks, and cost control.
Beginner
Start here — no prior experience needed
Snowflake Architecture and Your First Queries
Create a warehouse, a database and a table, then see why separating storage from compute means two teams can query the same data without competing.
Virtual Warehouses: Sizing, Scaling, and Cost
Scale up for one slow query, scale out for many concurrent ones — with credit maths, auto-suspend, and resource monitors that stop a runaway bill.
Loading Data: Stages and COPY INTO
Get files into tables with stages, file formats and COPY INTO — including validation, error handling, and why re-running a load does not duplicate rows.
Time Travel and Zero-Copy Cloning
Query a table as it was before a bad update, UNDROP what you deleted, and clone a whole database in seconds without paying for a second copy.
Semi-Structured Data: VARIANT, JSON, and FLATTEN
Store JSON in a VARIANT column, read it with path notation, explode arrays with LATERAL FLATTEN, and know when to promote a field to a real column.
Intermediate
For developers with core concepts down
Micro-Partitions, Pruning, and Clustering
Why one filter scans the whole table and another scans 2% of it — reading partition metadata, measuring pruning, and deciding whether a clustering key is worth its cost.
Streams and Tasks
Capture changes with a stream, consume them exactly once, and schedule the work with tasks — including task DAGs and the suspend that stops everything silently.
Roles, Masking, and Secure Data Sharing
Build a role hierarchy that survives a new schema, hide columns with masking policies, filter rows per role, then share data with another account without copying it.
Advanced
Production-grade patterns for experienced engineers
Query Profiling and Cost Attribution
Read the query profile to find the expensive operator, fix exploding joins and spilling, and attribute credits to the team that spent them with query tags.
Dynamic Tables
Declare the result you want and a freshness target, and Snowflake keeps it up to date incrementally — replacing most stream-and-task pipelines with one statement.