Heard about Ataccama x Snowflake pushdown and wondering how to leverage it?
You’re in the right place. In this guide, we’ll walk through what Snowflake pushdown is, why it matters, and how to get started with it using Ataccama.
What is Snowflake pushdown?
Run processing directly in Snowflake by enabling pushdown. Pushdown allows Ataccama to offload data processing tasks directly to Snowflake—right where your data lives. That means faster performance, better security, and less infrastructure overhead.
Why use pushdown processing?
Enabling pushdown unlocks multiple benefits:
- 🚀 Performance: Evaluate millions of records in seconds. No need to pull large datasets into external servers for processing.
- 🔐 Security: Processing is executed inside Snowflake. Results (and invalid samples, if configured) are returned—no external data transfers required, all processes run on secured and governed Snowflake warehouses.
- 🖥️ Infrastructure: Leverage your existing Snowflake environment—no need to set up or maintain new processing servers.
- 📈 Scalability: Pushdown enables efficient scaling by using Snowflake’s compute capabilities without additional Ataccama infrastructure.
How to start using the Snowflake pushdown?
Step 1: Set Up Your Snowflake Environment
If you haven’t set up Snowflake yet, here are a few helpful resources to guide you through the basics:
- Warehouse Setup Walkthrough
- Users, Roles, and Privileges
- Databases and Schemas
- Snowflake Quick Start Guide
Step 2: Create a Working Database in Snowflake Once your environment is ready, the next step is to create a working database. This will allow Ataccama to transfer the functions it needs to process your data.
Note: This step should be done directly in Snowflake before you proceed with Ataccama configuration.
We recommend using Snowflake Worksheets for this. Simply click on + Worksheet in the UI and run the following SQL script:
Snowflake + Worksheet
- Create working database and stage
CREATE DATABASE IF NOT EXISTS <working_db>;
CREATE STAGE IF NOT EXISTS _ATC_ONE_STAGE;
- GRANT ROLE <read_data_role> TO ROLE <pushdown_role>;
- Create role
CREATE ROLE IF NOT EXISTS <pushdown_role>;
- Assign role to user
GRANT ROLE <pushdown_role> TO USER <sample_user>;
GRANT ROLE <pushdown_role> TO USER <another_user>;
- Grant access to database
GRANT USAGE ON DATABASE <working_db> TO ROLE <pushdown_role>;
- Grant access to schema
GRANT USAGE ON SCHEMA public TO ROLE <pushdown_role>;
GRANT CREATE TABLE ON SCHEMA public TO ROLE <pushdown_role>;
GRANT CREATE SEQUENCE ON SCHEMA public TO ROLE <pushdown_role>;
GRANT CREATE FUNCTION ON SCHEMA public TO ROLE <pushdown_role>;
*GRANT CREATE STAGE ON SCHEMA public TO ROLE <pushdown_role>;
- Grant access to stage
GRANT READ ON STAGE _ATC_ONE_STAGE TO ROLE <pushdown_role>;
GRANT WRITE ON STAGE _ATC_ONE_STAGE TO ROLE <pushdown_role>;
*If there are permissions issues, it is recommended to add this grant.
This is our recommended approach based on best practices with using worksheets within Snowflake.
In Snowflake, select + Worksheet, and follow these instructions. The following script creates the working database and grants access to defined user roles.
✅ Best Practices for Setting Up Your Working Environment
- Working Database Name: Replace
<working_db>
with a meaningful name. This database temporarily stores Ataccama domain lookups and other operational data. It can be deleted when no longer needed. Multiple users can share the same working database, as long as they have access. - Schemas (from v16.1+): You can now define a custom schema for pushdown processing—no more relying on the default
public
schema. - Roles: Assign specific Snowflake roles (e.g.,
<pushdown_role>
) to define access control. - Users: Use
<sample_user>
and<another_user>
placeholders to represent actual Snowflake user accounts.
Ataccama will use a database/schema for operational needs. It is used for lookup storage and Ataccama requires access to a named stage in schema which is used as a storage for Ataccama UDFs (needed for DQ evaluation). Snowflake SQL are missing functional pieces and Ataccama uses these UDFs to supply those missing parts.
Once you’ve completed this setup, you’re ready to integrate pushdown processing into your Ataccama workflows.
Got questions or tips of your own? Share them with us in the comments below 👇
!-->