📖 Scenario: You work at a company that receives daily sales data files in a cloud storage bucket. You want to automatically load these files into Snowflake as soon as they arrive, without manual intervention.
🎯 Goal: Build a Snowpipe configuration that automatically loads new files from a cloud storage stage into a Snowflake table using event-driven loading.
📋 What You'll Learn
Create a Snowflake table named sales_data with columns id (integer), product (string), and amount (float).
Create a named external stage called sales_stage pointing to the cloud storage bucket s3://my_s3_bucket/sales/.
Create a Snowpipe named sales_pipe that loads data from sales_stage into sales_data.
Configure the Snowpipe to use event notifications for automatic loading.
💡 Why This Matters
🌍 Real World
Automatically loading data files into Snowflake as soon as they arrive in cloud storage saves time and reduces manual work.
💼 Career
Many data engineering roles require setting up automated data ingestion pipelines using Snowpipe and cloud storage event notifications.
Progress0 / 4 steps
1
Create the sales_data table
Write a SQL statement to create a table called sales_data with columns id as INTEGER, product as STRING, and amount as FLOAT.
Snowflake
Hint
Use CREATE OR REPLACE TABLE followed by the table name and column definitions.
2
Create the external stage sales_stage
Write a SQL statement to create or replace an external stage called sales_stage that points to the cloud storage location s3://my_s3_bucket/sales/.
Snowflake
Hint
Use CREATE OR REPLACE STAGE with the URL parameter for the S3 bucket path.
3
Create the Snowpipe sales_pipe
Write a SQL statement to create or replace a Snowpipe named sales_pipe that loads data from the stage sales_stage into the table sales_data using the COPY INTO command.
Snowflake
Hint
Use CREATE OR REPLACE PIPE with a COPY INTO statement referencing the stage and table.
4
Configure event notifications for automatic loading
Write a SQL statement to alter the pipe sales_pipe to enable event-driven loading by setting AUTO_INGEST = TRUE.
Snowflake
Hint
Use ALTER PIPE with SET AUTO_INGEST = TRUE to enable event notifications.
Practice
(1/5)
1. What is the main purpose of Snowpipe in Snowflake?
easy
A. To manually run SQL queries on data
B. To automatically load data when new files arrive in cloud storage
C. To create visual dashboards from data
D. To backup Snowflake databases
Solution
Step 1: Understand Snowpipe's role
Snowpipe is designed to automate data loading triggered by new files in cloud storage.
Step 2: Compare options
Options A, C, and D describe other tasks not related to Snowpipe's automatic loading feature.
Final Answer:
To automatically load data when new files arrive in cloud storage -> Option B
Quick Check:
Snowpipe = automatic data loading [OK]
Hint: Snowpipe triggers loading automatically on new files [OK]
Common Mistakes:
Confusing Snowpipe with manual query execution
Thinking Snowpipe creates dashboards
Assuming Snowpipe is for backups
2. Which Snowpipe option enables event-driven automatic loading?
easy
A. MANUAL_TRIGGER = TRUE
B. AUTO_LOAD = FALSE
C. AUTO_INGEST = TRUE
D. EVENT_NOTIFY = OFF
Solution
Step 1: Identify the correct Snowpipe setting
The setting AUTO_INGEST = TRUE enables event-driven automatic loading in Snowpipe.
Step 2: Eliminate incorrect options
Options A, B, and D either disable loading or do not exist as valid Snowpipe settings.
Hint: AUTO_INGEST = TRUE turns on event-driven loading [OK]
Common Mistakes:
Using AUTO_LOAD instead of AUTO_INGEST
Confusing manual trigger with automatic
Turning event notifications off
3. Given this Snowpipe command:
CREATE PIPE my_pipe AUTO_INGEST = TRUE AS COPY INTO my_table FROM @my_stage FILE_FORMAT = (TYPE = 'CSV');
What happens when a new CSV file is added to @my_stage?
medium
A. The file is automatically loaded into my_table
B. The file is ignored until manual load is triggered
C. An error occurs because AUTO_INGEST is not supported
D. The file is deleted from the stage
Solution
Step 1: Analyze the pipe creation
The pipe is created with AUTO_INGEST = TRUE, meaning it listens for new files in the stage and loads them automatically.
Step 2: Understand the COPY INTO command
The COPY INTO command loads data from the stage files into my_table using CSV format.
Final Answer:
The file is automatically loaded into my_table -> Option A
Quick Check:
New file + AUTO_INGEST = TRUE triggers load [OK]
Hint: AUTO_INGEST = TRUE pipes auto-load new files [OK]
Common Mistakes:
Thinking manual load is needed
Believing AUTO_INGEST is unsupported
Assuming files get deleted automatically
4. You created a Snowpipe with AUTO_INGEST = TRUE but new files are not loading automatically. What is a likely cause?
medium
A. Cloud storage event notifications are not configured properly
B. The pipe was created without specifying a table
C. AUTO_INGEST must be set to FALSE for automatic loading
D. Snowpipe does not support CSV file formats
Solution
Step 1: Check event notification setup
Snowpipe requires cloud storage event notifications to trigger automatic loading when AUTO_INGEST = TRUE.
Step 2: Review other options
The pipe was created without specifying a table is invalid because pipe creation requires a target table. AUTO_INGEST must be set to FALSE for automatic loading is wrong since AUTO_INGEST = TRUE enables automatic loading. Snowpipe does not support CSV file formats is false; CSV is supported.
Final Answer:
Cloud storage event notifications are not configured properly -> Option A
Quick Check:
Missing event notifications block auto-load [OK]
Hint: Check cloud event notifications for AUTO_INGEST pipes [OK]
Common Mistakes:
Setting AUTO_INGEST to FALSE expecting auto-load
Ignoring cloud event notification setup
Thinking CSV format is unsupported
5. You want to set up Snowpipe to load JSON files automatically into a table. Which sequence of steps is correct?
hard
A. Create a file format for CSV, create a pipe with AUTO_INGEST=TRUE, then upload JSON files
B. Create a pipe first, then create a stage and file format after uploading files
C. Upload files to the table directly, then create a pipe with AUTO_INGEST=FALSE
D. Create a file format for JSON, create a stage, create a pipe with AUTO_INGEST=TRUE, then upload files to the stage
Solution
Step 1: Prepare file format and stage
Define a JSON file format and create a stage to hold files before loading.
Step 2: Create pipe with AUTO_INGEST=TRUE
Create the pipe referencing the stage and file format, enabling automatic loading on new files.
Step 3: Upload JSON files to the stage
Uploading files triggers Snowpipe to load data automatically into the target table.
Final Answer:
Create a file format for JSON, create a stage, create a pipe with AUTO_INGEST=TRUE, then upload files to the stage -> Option D