Skip to main content

How to get started: Snowflake x Ataccama ❄️⚙️

How to get started: Snowflake x Ataccama ❄️⚙️
Cansu
Community Manager
Forum|alt.badge.img+3
  • Community Manager
  • 677 replies

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:

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

Show content
  1. 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>;
  1. Create role

CREATE ROLE IF NOT EXISTS <pushdown_role>;

  1. Assign role to user

GRANT ROLE <pushdown_role> TO USER <sample_user>;

GRANT ROLE <pushdown_role> TO USER <another_user>;

  1. Grant access to database

GRANT USAGE ON DATABASE <working_db> TO ROLE <pushdown_role>;

  1. 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>;

  1. 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 👇

!-->

Did this topic help you find an answer to your question?

0 replies

Be the first to reply!

Reply


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings