Bird
Raised Fist0
Snowflakecloud~30 mins

DataFrame API in Snowpark in Snowflake - Mini Project: Build & Apply

Choose your learning style10 modes available
DataFrame API in Snowpark
📖 Scenario: You are working with Snowflake's Snowpark to process and analyze sales data stored in a table. You want to use the DataFrame API to manipulate this data easily without writing complex SQL queries.
🎯 Goal: Build a Snowpark DataFrame pipeline that loads sales data, filters for sales above a certain amount, selects specific columns, and orders the results by sale date.
📋 What You'll Learn
Create a Snowpark DataFrame from the sales_data table
Add a filter to select sales where amount is greater than 1000
Select the columns sale_id, customer_id, and amount
Order the results by sale_date in descending order
💡 Why This Matters
🌍 Real World
Data analysts and engineers use Snowpark DataFrames to process large datasets in Snowflake without writing complex SQL, making data workflows easier and more maintainable.
💼 Career
Understanding Snowpark DataFrame API is valuable for roles involving cloud data engineering, data analysis, and building scalable data pipelines on Snowflake.
Progress0 / 4 steps
1
Create initial DataFrame from sales_data table
Create a Snowpark DataFrame called df by reading the table named sales_data using the session object session.
Snowflake
Hint

Use session.table("sales_data") to create the DataFrame.

2
Filter sales with amount greater than 1000
Add a filter to the DataFrame df to keep only rows where the amount column is greater than 1000. Assign the result back to df.
Snowflake
Hint

Use df.filter(df["amount"] > 1000) to filter the DataFrame.

3
Select specific columns
Select the columns sale_id, customer_id, and amount from the DataFrame df. Assign the result back to df.
Snowflake
Hint

Use df.select("sale_id", "customer_id", "amount") to select columns.

4
Order results by sale_date descending
Order the DataFrame df by the sale_date column in descending order. Assign the result back to df.
Snowflake
Hint

Use df.order_by(df["sale_date"].desc()) to order descending.

Practice

(1/5)
1. What does the filter() method do in Snowpark's DataFrame API?
easy
A. It adds new columns to the DataFrame.
B. It changes the column names of the DataFrame.
C. It selects rows that meet a specified condition.
D. It sorts the DataFrame by a column.

Solution

  1. Step 1: Understand the purpose of filter()

    The filter() method is used to keep only rows that satisfy a condition.
  2. Step 2: Compare with other methods

    Changing column names is done by withColumnRenamed(), adding columns by withColumn(), and sorting by orderBy().
  3. Final Answer:

    It selects rows that meet a specified condition. -> Option C
  4. Quick Check:

    filter() = select rows [OK]
Hint: Filter keeps rows matching condition, like a sieve [OK]
Common Mistakes:
  • Confusing filter() with select()
  • Thinking filter() changes columns
  • Using filter() to sort data
2. Which of the following is the correct way to select columns name and age from a DataFrame df in Snowpark?
easy
A. df.select('name', 'age')
B. df.filter('name', 'age')
C. df.orderBy('name', 'age')
D. df.withColumn('name', 'age')

Solution

  1. Step 1: Identify method to pick columns

    The select() method is used to choose specific columns from a DataFrame.
  2. Step 2: Check other methods

    filter() is for rows, orderBy() sorts rows, and withColumn() adds or modifies columns.
  3. Final Answer:

    df.select('name', 'age') -> Option A
  4. Quick Check:

    Select columns = select() [OK]
Hint: Use select() to pick columns, not filter() or orderBy() [OK]
Common Mistakes:
  • Using filter() to select columns
  • Trying to order columns instead of rows
  • Confusing withColumn() with select()
3. Given the following Snowpark code:
df = session.create_dataframe([(1, 'Alice'), (2, 'Bob'), (3, 'Carol')], schema=['id', 'name'])
df_filtered = df.filter(df['id'] > 1).select('name')
df_filtered.show()

What will be the output?
medium
A. Rows with names 'Bob' and 'Carol'
B. Rows with names 'Alice' only
C. Rows with ids 1, 2, and 3
D. Empty DataFrame

Solution

  1. Step 1: Understand the filter condition

    The filter keeps rows where id > 1, so rows with id 2 and 3 remain.
  2. Step 2: Select the 'name' column

    After filtering, only the 'name' column is selected, so output shows 'Bob' and 'Carol'.
  3. Final Answer:

    Rows with names 'Bob' and 'Carol' -> Option A
  4. Quick Check:

    Filter id>1 then select name = Bob, Carol [OK]
Hint: Filter first, then select columns to get desired rows [OK]
Common Mistakes:
  • Including 'Alice' who has id 1
  • Showing all columns instead of just 'name'
  • Expecting empty output
4. What is wrong with this Snowpark code snippet?
df = session.create_dataframe([(10, 'X'), (20, 'Y')], schema=['score', 'label'])
df_filtered = df.filter(df['score'] = 20)
df_filtered.show()
medium
A. Using show() instead of collect()
B. Missing parentheses around filter condition
C. Incorrect schema definition
D. Using single equals (=) instead of double equals (==) in filter condition

Solution

  1. Step 1: Check filter condition syntax

    The filter condition uses = which is assignment, not comparison. It should be ==.
  2. Step 2: Verify other parts

    Schema is correct, parentheses are fine, and show() is valid to display results.
  3. Final Answer:

    Using single equals (=) instead of double equals (==) in filter condition -> Option D
  4. Quick Check:

    Use == for comparison in filter [OK]
Hint: Use == for conditions, not = [OK]
Common Mistakes:
  • Using = instead of == in conditions
  • Thinking show() is invalid
  • Confusing schema errors with syntax errors
5. You want to create a new column age_group in a Snowpark DataFrame df that labels ages below 18 as 'minor' and 18 or above as 'adult'. Which code snippet correctly achieves this?
hard
A. df.select('age_group', F.when(df['age'] < 18, 'minor').otherwise('adult'))
B. df.withColumn('age_group', F.when(df['age'] < 18, 'minor').otherwise('adult'))
C. df.filter(df['age_group'] == 'minor')
D. df.orderBy('age_group')

Solution

  1. Step 1: Understand how to add a conditional column

    The withColumn() method adds or replaces a column. Using F.when().otherwise() sets values conditionally.
  2. Step 2: Check other options

    select() chooses columns but does not add new ones, filter() filters rows, and orderBy() sorts rows.
  3. Final Answer:

    df.withColumn('age_group', F.when(df['age'] < 18, 'minor').otherwise('adult')) -> Option B
  4. Quick Check:

    Add conditional column with withColumn + when [OK]
Hint: Use withColumn and when() to add conditional columns [OK]
Common Mistakes:
  • Using select() to add columns
  • Filtering instead of adding columns
  • Ordering instead of creating new columns
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard