Brolly Academy | Snowflake
Snowflake Tutorial
Set Up a Trial, Create Warehouses, Load Data Through Stages, Query JSON, Use Roles, Tasks and Snowpark (2026)
A hands-on Snowflake tutorial for beginners: open a free trial, learn your way around Snowsight, and build a small ShopKart sales project step by step with warehouses, stages, COPY INTO, JSON, Time Travel, cloning, roles, streams, tasks, a little Snowpark Python and cost controls.
A hands-on Snowflake tutorial for beginners: set up a free trial, create warehouses, load data with stages, query JSON, use roles, tasks and Snowpark.
By Brolly Academy Team · Brolly Academy · Updated 24 October 2026

Table of Contents
1. Snowflake tutorial at a glance
2. What you will build: the ShopKart sales project
3. Before you start: what you need
4. Set up your free Snowflake trial
6. Lesson 1: Create a warehouse, database and schema
7. Lesson 2: Create a table and load a CSV through a stage
8. Lesson 3: Query your data and use the result cache
9. Lesson 4: Time Travel and zero-copy cloning in brief
10. Lesson 5: Semi-structured JSON with VARIANT and FLATTEN
11. Lesson 6: Roles and grants
12. Lesson 7: Streams and tasks basics
13. Lesson 8: A small Snowpark Python step
14. Lesson 9: Cost control with auto-suspend and a resource monitor
15. Mini project: ShopKart sales end to end
16. Common mistakes beginners make
17. 30-day Snowflake practice plan
Quick answer
This Snowflake tutorial walks you through nine short lessons in a free trial account, and by the end you will have built a working "ShopKart sales" project that loads a CSV, queries it, handles JSON, protects data with Time Travel, controls access with roles, automates a load with a stream and a task, and keeps costs in check. You only need basic SQL and a browser. Each lesson has a short SQL block you can paste into a Snowsight worksheet, plus a note on what to check. Plan about one evening per lesson, or one weekend for the whole tutorial.
- Lessons 1 to 3: warehouse, database and schema; stage plus COPY INTO; queries and the result cache
- Lessons 4 to 6: Time Travel and cloning; JSON with VARIANT and FLATTEN; roles and grants
- Lessons 7 to 9: streams and tasks; a small Snowpark Python step; auto-suspend and resource monitors
- Mini project: ShopKart sales, end to end, using everything above
- After the tutorial: a 30-day practice plan table to make the skills stick
Key takeaways
- Snowflake separates storage from compute, so you create a virtual warehouse (compute) first and pay only while it runs.
- Loading data is a two-step habit: put files in a stage, then run COPY INTO a table.
- Time Travel and zero-copy cloning let you undo mistakes and make test copies in seconds.
- Set a small warehouse, a 60-second auto-suspend and a resource monitor on day one, so a trial never burns credits overnight.
- Practise with one project you understand, such as ShopKart sales, instead of copying random snippets.
1. Snowflake tutorial at a glance
Short answer: The tutorial has a setup step, a quick Snowsight tour, nine lessons and one mini project, and each lesson takes 30 to 60 minutes.
This is a hands-on build, not a roadmap. For the roadmap, read how to learn Snowflake; for deeper SQL, the Snowflake SQL tutorial; and if you are new to the platform, what Snowflake does.
2. What you will build: the ShopKart sales project
Short answer: You will build a small sales analytics setup for a fictional Indian e-commerce store called ShopKart, with order data from a CSV, click events in JSON, a daily summary table and an analyst role.
ShopKart is made up for this tutorial. It sells electronics, fashion and grocery items in Hyderabad, Bengaluru, Pune and Chennai. The flow:
- An orders CSV lands in a stage and COPY INTO loads it (Lesson 2).
- SQL answers "revenue by city" and "top categories" (Lesson 3).
- Time Travel and a clone protect the data (Lesson 4).
- JSON click events go into a VARIANT column (Lesson 5).
- An analyst role gets read-only access (Lesson 6).
- A stream and a task build a daily city summary (Lesson 7).
- Snowpark Python and a resource monitor finish it (Lessons 8 and 9).
Learn these words first. You will see them in every lesson and in most Snowflake job descriptions.
3. Before you start: what you need
Short answer: You need basic SQL (SELECT, WHERE, GROUP BY, joins), a laptop with a modern browser and an email address; Python is optional and only used in Lesson 8.
You do not need cloud experience, Linux or Python to finish this tutorial. If you are a fresher from B.Tech, BCA, B.Sc or MCA, practise simple SELECT and GROUP BY queries first. If you are an SQL developer, ETL or Informatica developer, or a DBA, you already know most of the SQL; focus on what is new: warehouses, stages, VARIANT, Time Travel and RBAC.
Our Snowflake prerequisites guide covers the exact SQL level, whether you need AWS or Azure, and a short readiness exercise. Keep a notepad file and save every SQL block you run with a one-line note; it becomes your revision sheet.
4. Set up your free Snowflake trial
Short answer: Sign up for a 30-day Snowflake trial, choose an India region if you are in India (AWS Mumbai or Azure Central India in Pune), log in to Snowsight and confirm you can run a simple query.
According to Snowflake's trial account documentation (October 2026), a trial lasts 30 days from sign-up and ends earlier if you use up the free balance. After that, the account is suspended until you add a card and upgrade, and any unused balance expires. Snowflake's trial sign-up page offered US$400 of free usage for 30 days when it was checked in October 2026; treat that as subject to change. Trials also leave out some features, such as hybrid tables, Snowflake Openflow and external network access, and AI features stay disabled until you add a credit card.
Snowflake lists two India regions (Snowflake documentation, October 2026): AWS Asia Pacific (Mumbai), ap-south-1, and Azure Central India (Pune). There is no Google Cloud region in India. For learning, either works.
Our Snowflake account setup guide covers every sign-up screen. Once you are in, open a SQL worksheet and run:
-- Simplified example: check your session
SELECT CURRENT_ACCOUNT(), CURRENT_REGION(), CURRENT_ROLE(), CURRENT_WAREHOUSE();
If the last column is empty, you have no warehouse yet. Lesson 1 fixes that.
5. A quick tour of Snowsight
Short answer: Snowsight is Snowflake's web interface, where you write SQL in worksheets, browse databases, check query history, and manage warehouses, users and costs.
Menu labels move between releases, so learn the areas, not button names:
- Worksheets and workspaces: write and run SQL or Python. Check the role and warehouse picker at the top before you run anything.
- Data or catalog area: browse databases, schemas, tables and stages, preview data and upload files to a named stage.
- Monitoring area: query history. Click a query to open its Query Profile.
- Admin area: warehouses, users, roles and cost management (Lesson 9).
- Notebooks: cell-based Python, SQL and Markdown notebooks for later.
Two tips: the role you pick decides what you can see, so a "missing" table usually means the wrong role. And Snowsight creates new warehouses at X-Large by default, while CREATE WAREHOUSE defaults to X-Small (Snowflake documentation, October 2026), so create your learning warehouse with SQL.
6. Lesson 1: Create a warehouse, database and schema
Short answer: Create an X-Small warehouse with a 60-second auto-suspend, then a database and a schema for ShopKart, and set them as your current context.
A virtual warehouse is compute. Storage (your tables) lives separately, and you pay for each on its own. According to the warehouses overview (Snowflake documentation, October 2026), credits per hour double at each size: X-Small uses 1 credit per hour, Small 2, Medium 4, Large 8, and so on up to 6X-Large at 512. Billing is per second, with a 60-second minimum each time a warehouse starts. Auto-suspend and auto-resume are on by default. New standard warehouses now default to Gen2 in regions where it is available, and Mumbai and Central India are not on the exclusion list.
-- Simplified example: Lesson 1
USE ROLE SYSADMIN;
CREATE WAREHOUSE IF NOT EXISTS learn_wh
WAREHOUSE_SIZE = XSMALL
AUTO_SUSPEND = 60
AUTO_RESUME = TRUE
INITIALLY_SUSPENDED = TRUE;
CREATE DATABASE IF NOT EXISTS shopkart_db;
CREATE SCHEMA IF NOT EXISTS shopkart_db.raw;
USE WAREHOUSE learn_wh;
USE SCHEMA shopkart_db.raw;
SYSADMIN is the system role for creating warehouses and databases. AUTO_SUSPEND = 60 stops the warehouse after 60 idle seconds (the SQL default is 600), and INITIALLY_SUSPENDED = TRUE means no billing until your first query. A table's full name is database.schema.table, for example shopkart_db.raw.orders. Run SHOW WAREHOUSES to confirm learn_wh is X-Small. For sizes, multi-cluster warehouses and Gen2 in depth, read our virtual warehouse in Snowflake guide.
7. Lesson 2: Create a table and load a CSV through a stage
Short answer: Create an orders table and a file format, upload the CSV to a named internal stage, test it with VALIDATION_MODE, then load it with COPY INTO.
First, save this fictional data as orders.csv on your laptop:
order_id,order_date,city,category,quantity,amount
1001,2026-10-01,Hyderabad,Electronics,1,15999.00
1002,2026-10-01,Bengaluru,Fashion,3,2397.00
1003,2026-10-02,Pune,Grocery,10,1250.50
1004,2026-10-02,Chennai,Electronics,2,8998.00
1005,2026-10-03,Hyderabad,Grocery,6,780.00
1006,2026-10-03,Bengaluru,Electronics,1,45999.00
1007,2026-10-04,Pune,Fashion,2,1798.00
1008,2026-10-04,Hyderabad,Fashion,1,1499.00
Now create the table, a CSV file format that skips the header row, and a named stage. A named stage is a database object you can reuse and grant on, which is why Snowflake recommends it for regular loads.
-- Simplified example: Lesson 2, objects
CREATE OR REPLACE TABLE orders (
order_id NUMBER, order_date DATE, city VARCHAR,
category VARCHAR, quantity NUMBER, amount NUMBER(10,2));
CREATE OR REPLACE FILE FORMAT csv_ff TYPE = CSV SKIP_HEADER = 1;
CREATE OR REPLACE STAGE shopkart_stage
FILE_FORMAT = (FORMAT_NAME = 'csv_ff');
Next, put the file into the stage. PUT cannot run from a Snowsight worksheet, so use one of two options (Snowflake documentation, October 2026):
- Snowsight upload: open the shopkart_stage stage in the data area and upload orders.csv.
- Snowflake CLI or a driver: run PUT, for example PUT file:///home/you/orders.csv @shopkart_stage; with an absolute path. PUT gzips the file by default.
Snowflake CLI is the preferred command-line client; SnowSQL is a legacy client in maintenance mode, with version 1.5.x supported until 16 April 2028. Internal stages come in three kinds: a user stage, a table stage and named stages like this one. PUT works only with internal stages; for external stages on Amazon S3, Azure or Google Cloud Storage, you use the cloud provider's own tools.
Then test and load:
-- Simplified example: Lesson 2, load
COPY INTO orders FROM @shopkart_stage
PATTERN = '.*orders.*'
VALIDATION_MODE = RETURN_ERRORS;
COPY INTO orders FROM @shopkart_stage
PATTERN = '.*orders.*'
ON_ERROR = ABORT_STATEMENT;
SELECT COUNT(*) FROM orders;
The first COPY only checks the file and returns errors. The second loads it. ABORT_STATEMENT, the bulk-load default, stops the load on the first bad row. COPY skips files it has already loaded into the table unless you add FORCE = TRUE, so a second run will not double your rows. You should see 8 rows.
Go deeper with stages in Snowflake (stage types, storage integrations, directory tables), our COPY INTO lab and Snowpipe for automatic loading.
8. Lesson 3: Query your data and use the result cache
Short answer: Run a few business queries on the orders table, run one of them again, and confirm in the Query Profile that the second run reused the stored result.
-- Simplified example: Lesson 3
SELECT city, SUM(amount) AS revenue, COUNT(*) AS orders
FROM orders GROUP BY city ORDER BY revenue DESC;
SELECT category, SUM(quantity) AS units
FROM orders GROUP BY category ORDER BY units DESC;
SELECT order_date, SUM(amount) AS daily_revenue
FROM orders GROUP BY order_date ORDER BY order_date;
Run the first query again, exactly as written, then open its Query Profile from query history.
According to Snowflake's page on using persisted query results (October 2026), a result is kept for 24 hours, each reuse resets that window, and a result is purged 31 days after the first run. Reuse needs the same query text (case and aliases count), unchanged data, no functions such as RANDOM, and the right privileges. It is on by default; to time a query honestly, switch it off:
-- Simplified example: test without the result cache
ALTER SESSION SET USE_CACHED_RESULT = FALSE;
Switch USE_CACHED_RESULT back to TRUE afterwards. For tuning, read Snowflake query optimization.
9. Lesson 4: Time Travel and zero-copy cloning in brief
Short answer: Make a deliberate mistake, query the table as it was five minutes earlier, restore it with a clone, make a full dev copy of the database, and undo a DROP with UNDROP.
Time Travel keeps old versions of your data for a retention period. The default is 1 day on all accounts. Standard Edition allows 0 or 1 day, while Enterprise and higher allow up to 90 days for permanent objects (Snowflake documentation, October 2026). After Time Travel ends, Fail-safe holds the data for 7 more days, but only Snowflake Support can attempt a recovery from it.
Wait at least five minutes after Lesson 2, so the table existed five minutes ago, then run:
-- Simplified example: Lesson 4
UPDATE orders SET amount = 0; -- the "mistake"
SELECT SUM(amount) FROM orders AT(OFFSET => -60*5);
CREATE OR REPLACE TABLE orders_restored CLONE orders AT(OFFSET => -60*5);
SELECT SUM(amount) FROM orders_restored;
CREATE OR REPLACE TABLE orders CLONE orders_restored;
CREATE DATABASE IF NOT EXISTS shopkart_dev CLONE shopkart_db;
DROP TABLE orders_restored;
UNDROP TABLE orders_restored;
Besides an offset, AT and BEFORE also accept a timestamp or a query's statement ID.
A clone is "zero-copy": it points at the same stored data and only stores new data when you change something. That makes a full dev copy of shopkart_db nearly instant. Note that recreating orders from the clone gives it a fresh history, so do the stream in Lesson 7 after this step. UNDROP fails if an object with the same name already exists.
We go deeper in two existing labs: Snowflake Time Travel and zero-copy cloning.
10. Lesson 5: Semi-structured JSON with VARIANT and FLATTEN
Short answer: Store raw JSON in a VARIANT column, read fields with the colon path syntax and a cast, and turn a JSON array into rows with LATERAL FLATTEN.
ShopKart's app sends click events as JSON. Each event has a user, a city and an array of items in the cart. A VARIANT column can hold any JSON document without a fixed schema.
-- Simplified example: Lesson 5
CREATE OR REPLACE TABLE events (raw VARIANT);
INSERT INTO events
SELECT PARSE_JSON('{"user":"u101","city":"Hyderabad",
"items":[{"sku":"P1","qty":2},{"sku":"P7","qty":1}]}');
INSERT INTO events
SELECT PARSE_JSON('{"user":"u202","city":"Pune",
"items":[{"sku":"P3","qty":4}]}');
SELECT e.raw:user::string AS user_id,
e.raw:city::string AS city,
f.value:sku::string AS sku,
f.value:qty::number AS qty
FROM events e, LATERAL FLATTEN(INPUT => e.raw:items) f;
raw:user walks into the JSON and ::string casts the value to plain text. FLATTEN returns one row per array element, and f.value is each item. You get three rows: two for u101 and one for u202. In real projects you load JSON files with a JSON file format and COPY INTO, as in Lesson 2.
11. Lesson 6: Roles and grants
Short answer: Create a read-only shopkart_analyst role, give it USAGE on the warehouse, database and schema plus SELECT on tables, and grant the role to SYSADMIN and to your user.
Snowflake uses role-based access control. You never grant table access straight to a person in normal practice; you grant privileges to a role, then the role to users. The system roles you will meet first (Snowflake documentation, October 2026):
-- Simplified example: Lesson 6
USE ROLE USERADMIN;
CREATE ROLE IF NOT EXISTS shopkart_analyst;
USE ROLE SECURITYADMIN;
GRANT USAGE ON WAREHOUSE learn_wh TO ROLE shopkart_analyst;
GRANT USAGE ON DATABASE shopkart_db TO ROLE shopkart_analyst;
GRANT USAGE ON SCHEMA shopkart_db.raw TO ROLE shopkart_analyst;
GRANT SELECT ON ALL TABLES IN SCHEMA shopkart_db.raw TO ROLE shopkart_analyst;
GRANT SELECT ON FUTURE TABLES IN SCHEMA shopkart_db.raw TO ROLE shopkart_analyst;
GRANT ROLE shopkart_analyst TO ROLE SYSADMIN;
GRANT ROLE shopkart_analyst TO USER your_user_name;
Replace your_user_name with your login, switch to the new role and test: SELECT on orders should work, while UPDATE or CREATE TABLE should fail. ALL TABLES covers existing tables and FUTURE TABLES covers new ones. Granting the role to SYSADMIN follows Snowflake's advice that custom roles should roll up to SYSADMIN.
Also set up multi-factor authentication on your login. Snowflake's phased rollout ends single-factor password sign-in for human users, with the final phase scheduled for August to October 2026 (dates Snowflake calls estimates; trial accounts are excluded).
12. Lesson 7: Streams and tasks basics
Short answer: Create a stream on the orders table to capture new rows, then a task that runs on a schedule and, only when the stream has data, adds those rows to a daily city summary.
A stream records changes to a table since it was last consumed. A task runs SQL on a schedule, or a stored procedure. Together they make a simple change-data pipeline without any outside tool.
-- Simplified example: Lesson 7
USE ROLE SYSADMIN;
USE SCHEMA shopkart_db.raw;
CREATE OR REPLACE TABLE daily_city_sales
(sale_date DATE, city VARCHAR, revenue NUMBER(12,2));
CREATE OR REPLACE STREAM orders_stream ON TABLE orders APPEND_ONLY = TRUE;
CREATE OR REPLACE TASK load_daily_sales
WAREHOUSE = learn_wh
SCHEDULE = '60 MINUTES'
WHEN SYSTEM$STREAM_HAS_DATA('orders_stream')
AS
INSERT INTO daily_city_sales
SELECT order_date, city, SUM(amount)
FROM orders_stream GROUP BY order_date, city;
ALTER TASK load_daily_sales RESUME;
Points to notice:
- APPEND_ONLY = TRUE tracks inserts only. A standard stream also tracks updates and deletes through columns such as METADATA$ACTION.
- A new task starts suspended. Nothing runs until RESUME; EXECUTE TASK runs it once for testing.
- The stream's offset moves forward when a DML statement reads it and commits, so each order is summarised once.
- Serverless option: leave out WAREHOUSE and Snowflake manages the compute.
Test it: insert one new order, run EXECUTE TASK load_daily_sales, then query daily_city_sales. If you hit a privilege error in your personal trial, run this lesson as ACCOUNTADMIN. When done, run ALTER TASK load_daily_sales SUSPEND. A real pipeline would MERGE into the summary; our streams and tasks lab covers MERGE, late events and monitoring.
13. Lesson 8: A small Snowpark Python step
Short answer: Open a Python worksheet in Snowsight, read the orders table as a Snowpark DataFrame, filter and group it, and return the result as a table; the work runs inside Snowflake, not on your laptop.
Snowpark gives you DataFrame libraries for Python, Java and Scala. DataFrame operations are lazy: your code builds a plan, Snowflake turns it into SQL, and nothing runs until an action such as collect or show, (Snowflake documentation, October 2026). The data stays in Snowflake. In a Snowsight Python worksheet, the handler is called main, receives a Session object and needs a running warehouse:
# Simplified example: Lesson 8, Snowsight Python worksheet
import snowflake.snowpark as snowpark
from snowflake.snowpark.functions import col, sum
def main(session: snowpark.Session):
orders = session.table("SHOPKART_DB.RAW.ORDERS")
result = (
orders.filter(col("CATEGORY") == "Electronics")
.group_by(col("CITY"))
.agg(sum("AMOUNT").alias("ELECTRONICS_REVENUE"))
)
return result
Keep the return type as Table, the default for a DataFrame. A missing-packages error usually means the Anaconda terms have not been acknowledged for the account yet (an admin task in Snowsight). For UDFs, procedures and setup outside Snowsight, read Snowpark in Snowflake.
14. Lesson 9: Cost control with auto-suspend and a resource monitor
Short answer: Keep the warehouse X-Small with a 60-second auto-suspend, add a resource monitor that notifies at 80% and suspends at 100% of a small credit quota, and learn how Snowflake bills you.
Snowflake's bill has three parts: compute, storage and data transfer (Snowflake documentation, October 2026). Compute is credits used times the price per credit. In Snowflake's Service Consumption Table effective 15 October 2026, on-demand list prices in AWS US East (N. Virginia) were $2, $3, $4 and $6 per credit for Standard, Enterprise, Business Critical and Virtual Private Snowflake, and on-demand storage was $23 per TB per month. Prices vary by cloud, region and edition, so check your own region before you plan a budget.
A resource monitor tracks warehouse credits and can notify or suspend when a quota is reached. Only ACCOUNTADMIN can create one. It does not cover serverless or AI services; Snowflake points to budgets for those.
-- Simplified example: Lesson 9
USE ROLE ACCOUNTADMIN;
CREATE OR REPLACE RESOURCE MONITOR learn_monitor
WITH CREDIT_QUOTA = 20
TRIGGERS ON 80 PERCENT DO NOTIFY
ON 100 PERCENT DO SUSPEND;
ALTER WAREHOUSE learn_wh SET RESOURCE_MONITOR = learn_monitor;
ALTER WAREHOUSE learn_wh SET AUTO_SUSPEND = 60;
ALTER WAREHOUSE learn_wh SUSPEND;
The quota of 20 credits is just a learning value. SUSPEND lets running queries finish, while SUSPEND_IMMEDIATE cancels them. Suspend the warehouse at the end of each study session; a suspended warehouse uses no credits. Also keep tasks suspended when not testing, and check Snowsight's cost pages weekly.
15. Mini project: ShopKart sales end to end
Short answer: Rebuild everything in one clean schema from a single script: objects, load, JSON events, summary, role, stream and task, Snowpark check and a monitor, then write a short README for your portfolio.
The lessons teach commands; rebuilding them as one project teaches order and reasons. Work in a new schema, shopkart_db.project:
- Plan: write three business questions, such as revenue by city per day, top categories in Hyderabad and most-carted SKUs.
- Build and load: create the file format, stage and tables, make 100 to 200 fictional orders in a spreadsheet, validate, then COPY INTO.
- JSON: insert at least 10 events and build a view over the FLATTEN query.
- Answer: write one query per question and save the outputs.
- Protect and secure: clone the schema, practise a Time Travel restore, and prove the analyst role cannot write.
- Automate: add the stream and task, insert five new orders, run the task once and check the summary.
- Python and cost: match one query in Snowpark, attach the monitor and suspend everything.
- Document: write a README with the questions, a numbered data flow and two lessons learned.
Save it as numbered SQL files (setup, load, analysis, protect and secure, automate) plus the Python file and README. In interviews you can then explain why you chose a named stage, what COPY does with already-loaded files, how you recovered bad data and how you capped credits. For 20 more ideas, see Snowflake projects.
16. Common mistakes beginners make
Short answer: Most beginner problems come from the wrong role or warehouse in the worksheet, big warehouses left running, skipped validation, and Time Travel offsets that point before a table existed.
- Wrong context: start scripts with USE ROLE, USE WAREHOUSE and USE SCHEMA.
- Working as ACCOUNTADMIN all day: it hides privilege problems you will meet at work.
- UI warehouses at X-Large: 16 credits per hour against X-Small's 1.
- Long auto-suspend: the 600-second default burns credits while you read.
- PUT in a worksheet: it fails; use the Snowsight upload or Snowflake CLI.
- Reloading with FORCE = TRUE: COPY skips loaded files for a reason; forcing can duplicate rows.
- Time Travel offset too far back: pointing before the table existed gives an error.
- Tasks left running or never resumed: a new task waits for RESUME, and a resumed one keeps running.
- No cast on JSON: without ::string, values keep JSON quotes and comparisons behave oddly.
- Granting on ALL TABLES only: add FUTURE TABLES so new tables are covered.
17. 30-day Snowflake practice plan
Short answer: Spend days 1 to 10 on the nine lessons, days 11 to 20 on the ShopKart project and deeper labs, and days 21 to 30 on revision, a second project and interview practice, at about 1 to 2 hours a day.
This plan assumes you finish the tutorial in the first week and then repeat it with variations. Adjust the pace to your schedule; working professionals often do it on weekends.
Snowflake's own Hands-On Essentials track on learn.snowflake.com fits well in the last week: the courses are free, many of the badges are free, labs are auto-graded, and you can share badges on LinkedIn (Snowflake, October 2026). If you want the full topic list in course order, our Snowflake syllabus guide maps the modules week by week.
18. What to learn after this Snowflake tutorial
Short answer: Next, add dbt and one cloud platform, practise interview questions, and consider SnowPro Core once you have a few months of hands-on time.
In 14 Snowflake job descriptions we read on 25 October 2026, every one asked for SQL, 9 named dbt and 9 named Python, and Snowpipe, streams and tasks, Time Travel, RBAC and resource monitors came up repeatedly. None accepted 0 years of experience (the lowest ask was 2 to 5 years), so freshers usually enter through data engineer, SQL or ETL developer, or analyst roles and add Snowflake on the job. A Naukri search for "snowflake" showed about 25,910 results across India and 4,969 in Hyderabad on 25 October 2026; these are keyword matches, not a count of open Snowflake jobs.
A sensible order after this tutorial:
- dbt: model your ShopKart data as staging and mart models.
- One cloud: learn S3 or Azure Blob storage so you can build an external stage.
- Dynamic tables and Cortex: try dynamic tables and Cortex AI Functions such as AI_CLASSIFY (AI features need a card on file, and availability varies by region).
- Iceberg and MCP: read about Apache Iceberg tables and Snowflake's managed MCP server (generally available since 4 November 2025) later.
- Interview practice: work through Snowflake interview questions.
For certification, SnowPro Core is exam COF-C03: 100 questions, 115 minutes and a pass mark of 750 on a 0 to 1000 scale. The fee is $175, or $140 for exams taken in India, and certifications are valid for 2 years (learn.snowflake.com, October 2026). Snowflake suggests 6 or more months of hands-on experience first. Our Snowflake certification guide explains the full path.
19. How Brolly Academy helps
Short answer: Brolly Academy's 45-day Snowflake course turns this kind of self-study into a guided programme with a trainer, projects and interview preparation, in classroom, live online or video formats.
If you prefer learning with a mentor and a batch, the Snowflake Training in Hyderabad course covers the same foundations as this tutorial and goes further. Here is what the course page lists (October 2026):
- Duration and modes: 45 days, with classroom, live online and a self-paced video recording plan. Weekday, weekend, morning and evening batches are listed.
- Fees: Video ₹8,999, Online ₹17,999 and Classroom ₹22,999, with EMI available.
- Trainer: Mr. Bala Krishna, with 13+ years in data warehousing, SQL and Snowflake.
- Syllabus: 15 modules, including architecture, warehouses, data loading with stages and COPY INTO, Snowpipe, JSON and semi-structured data, tasks and streams, secure data sharing, cloning, Time Travel and Fail-safe, caching and performance, resource monitoring and masking, and Python integration through the Snowflake Python connector.
- Projects: 6 projects, including sales data analysis dashboards, an ETL pipeline, a Customer 360 view and e-commerce analytics.
- Certificate: a Brolly Academy Snowflake course completion certificate. SnowPro exams are run by Snowflake and their fees are separate.
You also get resume help, mock interviews and placement assistance, as listed on the course page. You can join a free demo class before you enrol.
Build your first Snowflake project with a mentor
Finished the tutorial and want structured practice? Brolly Academy's 45-day Snowflake course in Hyderabad and online adds a trainer, six projects, mock interviews and resume support to the hands-on basics. Book a free demo class to see the classroom, live online or video plan that fits your schedule.
Frequently asked questions
What is a Snowflake tutorial?
A Snowflake tutorial is a guided, hands-on walkthrough where you run real commands in a Snowflake account. This one uses nine short lessons in a free trial: create a warehouse and database, load a CSV through a stage, query it, use Time Travel and cloning, handle JSON, set up roles, build a stream and a task, try Snowpark Python and add cost controls. It ends with a ShopKart sales mini project you can show in interviews.
Is this Snowflake tutorial good for beginners?
Yes, this tutorial is written for beginners who know basic SQL. Each lesson has a short SQL block, an explanation of every line and a check to confirm it worked. You do not need cloud, Linux or Python experience. Freshers from B.Tech, BCA, B.Sc or MCA can follow it, and SQL, ETL and DBA professionals can move faster because they already know most of the SQL.
Can I learn Snowflake for free?
Yes, you can practise Snowflake for free with the 30-day trial, which ends earlier if you use up the free balance. Snowflake's trial page offered US$400 of free usage in October 2026, though that can change. Snowflake's Hands-On Essentials courses on learn.snowflake.com are free and many of the badges are free too. The only cost to watch is the SnowPro exam fee if you choose to certify later.
Do I need to know SQL before starting this tutorial?
You need basic SQL: SELECT, WHERE, GROUP BY, ORDER BY and simple joins. Every lesson in this tutorial is written in SQL except one Snowpark Python step. If you cannot write a GROUP BY query yet, spend a few days on SQL first, then take a short readiness exercise before Lesson 1. You do not need cloud or Linux skills to start.
Do I need Python to learn Snowflake?
No, Python is optional for learning Snowflake. Only Lesson 8 uses it, and the code is ten lines that read a table, filter it and group it. That said, Python appeared in 9 of the 14 Snowflake job descriptions we read in October 2026, so it is worth adding after you are comfortable with SQL, warehouses, stages and loading.
How long does it take to finish this Snowflake tutorial?
Each lesson takes about 30 to 60 minutes, so the nine lessons fit in about 6 to 10 hours, or one long weekend. The ShopKart mini project adds a few more evenings. Our 30-day practice plan spreads the lessons, the project, deeper labs and interview practice across a month at about 1 to 2 hours a day, which is a realistic pace for students and working professionals.
How do I create a free Snowflake trial account in India?
Sign up for the 30-day trial and choose an India region: AWS Asia Pacific (Mumbai) or Azure Central India (Pune). Snowflake has no Google Cloud region in India. After activating the account, log in to Snowsight and run a simple query to check your session. Note that trials leave out features such as hybrid tables and Openflow, and AI features stay off until you add a card.
What is Snowsight?
Snowsight is Snowflake's web interface. You use it to write SQL and Python in worksheets, browse databases, schemas, tables and stages, upload files to a named stage, check query history and Query Profiles, and manage warehouses, users, roles and costs. Always check the role and warehouse selected at the top of a worksheet before running anything, because the role decides which objects you can see.
What is a virtual warehouse in Snowflake?
A virtual warehouse is the compute cluster that runs your queries and loads. It is separate from storage, so you can start, stop and resize it without touching your data. Credits per hour double at each size, from 1 for X-Small to 512 for 6X-Large. Billing is per second with a 60-second minimum each time it starts, and auto-suspend stops it when idle.
What warehouse size should a beginner use?
Use X-Small for learning. It uses 1 credit per hour, the lowest of any size, and handles small practice datasets easily. Create it with SQL, because Snowsight creates new warehouses at X-Large by default, which uses 16 credits per hour. Set AUTO_SUSPEND to 60 seconds and AUTO_RESUME to TRUE, and attach a resource monitor so a mistake cannot drain your trial.
How do I load a CSV file into Snowflake?
Create a table and a CSV file format, create a named stage, upload the file to the stage through Snowsight or with PUT from Snowflake CLI, then run COPY INTO the table. Test first with VALIDATION_MODE = RETURN_ERRORS, which checks the file without loading it. COPY skips files it has already loaded into that table unless you add FORCE = TRUE.
What is a stage in Snowflake?
A stage is a location where data files sit before you load them into tables. Internal stages live inside Snowflake: a user stage, a table stage and named stages, which are reusable database objects. External stages point to cloud storage such as Amazon S3, Azure or Google Cloud Storage. This tutorial uses a named internal stage called shopkart_stage.
Why does PUT not work in a Snowsight worksheet?
PUT cannot run from Snowsight worksheets, so it fails there by design. To get a local file into an internal stage, either use the upload option on the stage in Snowsight or run PUT through Snowflake CLI with the snow sql command, or through a driver. PUT also cannot upload to external stages; for those you use the cloud provider's own tools.
What is the result cache in Snowflake?
The result cache stores the result of a query so an identical query can reuse it without running again. Snowflake keeps a persisted result for 24 hours, resets that window on each reuse, and purges it 31 days after the first run. Reuse needs the same query text, unchanged data and the right privileges. You can switch it off for a session with USE_CACHED_RESULT.
What is Time Travel in Snowflake?
Time Travel lets you query or restore data as it was at an earlier point, using AT or BEFORE with an offset, timestamp or statement ID, plus UNDROP for dropped objects. The default retention is 1 day. Standard Edition allows 0 or 1 day, and Enterprise and higher allow up to 90 days for permanent objects. After that, Fail-safe holds data for 7 days for Snowflake Support only.
What is zero-copy cloning?
Zero-copy cloning creates a copy of a table, schema or database that points at the same stored data instead of duplicating it. New storage is used only when you change the clone or the original. That makes it quick to create a dev or test copy, such as the shopkart_dev database in this tutorial. You can also combine a clone with Time Travel to restore data from an earlier point.
How do I query JSON in Snowflake?
Store the JSON in a VARIANT column, then read fields with the colon path syntax, such as raw:city, and cast them with ::string or ::number. To turn a JSON array into rows, use LATERAL FLATTEN with INPUT pointing at the array, and read each element through the value column. Insert JSON with INSERT ... SELECT PARSE_JSON, or load JSON files with COPY INTO.
What are roles and grants in Snowflake?
Snowflake uses role-based access control: you grant privileges to roles, then grant roles to users. A read-only analyst role needs USAGE on the warehouse, database and schema plus SELECT on the tables. Add FUTURE TABLES so new tables are covered too. System roles include ACCOUNTADMIN, SECURITYADMIN, USERADMIN, SYSADMIN and PUBLIC, and custom roles should roll up to SYSADMIN.
What are streams and tasks in Snowflake?
A stream records changes to a table since it was last read, and a task runs SQL or a stored procedure on a schedule. Together they build simple pipelines: the task checks SYSTEM$STREAM_HAS_DATA and, when there are new rows, inserts or merges them into a target table. A new task starts suspended, so you must resume it, and you should suspend it when not testing.
Is Snowpark part of a beginner Snowflake tutorial?
A small Snowpark step is useful, but it is not the core of a beginner tutorial. Snowpark lets you write DataFrame code in Python, Java or Scala that runs inside Snowflake, and its operations are lazy until an action runs. This tutorial includes one Python worksheet that filters and groups the orders table, which is enough to understand the idea before you study Snowpark properly.
How do I avoid high costs in a Snowflake trial?
Use one X-Small warehouse created with SQL, set AUTO_SUSPEND to 60 seconds, attach a resource monitor that notifies at 80% and suspends at 100% of a small quota, and suspend tasks when you are not testing. Suspend the warehouse at the end of each session. A suspended warehouse uses no credits. Remember that resource monitors do not cover serverless or AI services.
How much does Snowflake cost after the trial?
Snowflake bills compute in credits, plus storage and data transfer. In Snowflake's Service Consumption Table effective 15 October 2026, on-demand credits in AWS US East cost $2, $3, $4 and $6 for Standard, Enterprise, Business Critical and Virtual Private Snowflake, and storage was $23 per TB per month. Prices vary by cloud, region and edition, so always check your own region.
What projects can I build after this tutorial?
Start with the ShopKart sales mini project in this tutorial: a CSV load, JSON events, a daily summary built with a stream and a task, an analyst role, a Snowpark check and a resource monitor, documented in a README. Then build a second project on a public dataset you find interesting. Keep each project small, documented and easy to explain in an interview.
Is SnowPro Core needed after finishing this tutorial?
No, it is not required, but it is a good later goal. SnowPro Core is exam COF-C03, with 100 questions in 115 minutes, a 750 pass mark, and a fee of $175, or $140 in India. Snowflake suggests 6 or more months of hands-on experience first. In the 14 job descriptions we read in October 2026, most did not ask for a SnowPro certification.
Does Brolly Academy offer a guided Snowflake course?
Yes, Brolly Academy offers a 45-day Snowflake course in classroom, live online and video formats, with fees of ₹8,999 for video, ₹17,999 online and ₹22,999 classroom. It has 15 modules, 6 projects and a Brolly completion certificate, taught by Mr. Bala Krishna, who has 13+ years of experience. SnowPro exam fees are separate, and you can attend a free demo class first.
Learn with Brolly Academy
Review the syllabus, practical projects and batch timings, and book a free demo before you enrol.
Related Articles
Continue Your Learning
Snowflake Training in Hyderabad
45-day course covering Snowflake architecture, warehouses, data loading, security, performance and real-time projects, in classroom, live online and recorded plans.
View Coursedbt Course
Learn dbt, the transformation tool most Snowflake job descriptions ask for, to build tested, documented data models.
View CourseDatabricks Course
Add the lakehouse side of modern data engineering with Databricks, Spark and Delta Lake, often used alongside Snowflake.
View Course