Version: Beta
The Magnite Snowflake Data Clean Room allows you to match your first-party hashed email-based segments with Magnite’s identity graph to onboard digital ID-based segments for activation. The following provides a step-by-step SQL approach for Clients and Data Partners to onboard their data into Magnite via the Magnite Clean Room. This solution currently supports onboarding data for activation on Magnite.
To get started, reach out to your account team with the following information:
Your company name (name registered with Snowflake)
A point of contact and email address
Your Snowflake account locator
Your source table name (including database and schema)
The table schema must match the requirements in this document.
The type of data (first-party or third-party) you want to onboard
The data size
The number of user profiles
The average number of segments per profile
Expected frequency of updates
Expected size of updates
The region where the data is located
Note: Magnite requires data to be stored in US-east-1 or EU-west-1.
A member of our admin team will review the request. Once the request is approved and you’re ready to move forward, please share the table name with your account team so that Magnite can configure your company as a Snowflake Clean Room Collaborator and create a clean room between your company and Magnite. Once this is done, you’ll receive an email with your clean room name and template, allowing you to begin configuring your data for matching.
Important Notes:
The source table will need to be created before Magnite can create the clean room.
The Magnite Snowflake Data Clean Room is a provider-run clean room that aligns with Magnite's weekly graph refreshes and daily graph opt-outs. As a collaborator in the clean room, you will incur costs on query runs.
To learn more about operational costs, visit https://docs.snowflake.com/en/user-guide/cleanrooms/cleanroom-cost.
To learn more about provider-run tasks and billing, visit https://docs.snowflake.com/en/user-guide/cleanrooms/demo-flows/provider-run-analysis.
Join the Magnite Clean Room by using our Consumer SQL script.
Before running this script, ensure you have a correctly configured source table.
Field
Data Type
Required/Optional
Definition
Privacy
STORAGE_ID_TYPE
VARCHAR(255)
REQUIRED
The ID type that will be used to join against Magnite’s graph.
Magnite accepts:
HEM_SHA256
This is used for matching but is not ingested into Magnite.
STORAGE_ID
SHA256 Hashed Emails
SEGMENT_IDS
ARRAY(of Strings)
Required.
Array elements are Segment IDs.
We expect the array to have at least one segment.
This array has a 16MB limit.
This is used for matching and is ingested into Magnite.
UPDATE_TIMESTAMP
TIMESTAMP_TZ(9)
Timestamp of when the data was loaded into Snowflake.
INDIVIDUAL_ID
Optional
An ID that represents an individual in the customer's dataset
You must also have the following permission on your database table:
-- GRANT SELECT ON TABLE <your database>.<your schema>.<your tablename> TO ROLE SAMOOHA_APP_ROLE WITH GRANT OPTION;
-- GRANT SELECT ON TABLE <your database>.<your schema>.<your tablename> TO APPLICATION SAMOOHA_BY_SNOWFLAKE
You can check permissions by running:
-- SHOW GRANTS ON TABLE <your database>.<your schema>.<your tablename>
The Consumer SQL script guides you through nine steps to install and configure the clean room:
Set Snowflake role and warehouse. You will need the ‘samooha_app_role’ privilege assigned to your Snowflake account.
Set up the variables that will be used throughout this script. This includes setting the clean room name and template, both of which will be provided by Magnite, as well as setting your source table.
Install the clean room defined by Magnite.
Assign your database table to the Clean Room configuration.
Define private columns used in the join clause of the clean room template.
These data columns will not be ingested into Magnite post-clean room match.
Define public columns used in the select clause of the clean room template.
These data columns will be shared with Magnite.
Define public columns that will be shared with Magnite and stored in Magnite's Snowflake account, along with the matched results, for data onboarding.
Client values stored include:
INDIVIDUAL_ID (if provided)
Allow Magnite to run the activation template.
Allow Magnite to run the clean room activation to save the overlap results in Magnite's Snowflake account.
Please inform your account team when the clean room is installed.
Once installed, Magnite will confirm proper setup and schedule daily clean room runs that align with our graph refreshes. If you have concerns about a daily refresh by Magnite, please contact your account team so we can customize the refresh cadence.
Helpful activation notes
Updates to your data source table will be captured in the next scheduled clean room run initiated by Magnite.
Depending on your warehouse size and the amount of data you want to match, clean room runtimes can range from 5 minutes to ~1+ hours.
Snowflake recommends that customers start with XL. Clients can test different sizes and put a query resource monitor in place to determine the best size to use if you have concerns about using an XL. More information on that can be found here: https://docs.snowflake.com/en/user-guide/warehouses-considerations
Magnite requires a Snowflake taxonomy table view for data onboarding. The following outlines the requirements for the table.
NOTE: Please use the UpdatedTimestamp in both Views when your row gets updated/ added. This helps Magnite troubleshoot, monitor, and backfill if any issues arise when onboarding your data.
Taxonomy Table Requirements
Data type
Required/Optional Values
ClientName
Required
Data Provider, Publisher, or Advertiser Name
AccountId
VARCHAR(36)
Magnite Account ID associated with the client. (This is where the segment needs to go within Magnite.)
DataShareSettings
Values are Public or Private.
SegmentId
Segment ID(s) that are provided in the segment membership table.
SegmentName
Name of the segment.
SegmentDescription
Notes/metadata on the segment.
SegmentCPM
DOUBLE
Cost of the segment.
Platform
Magnite, Magnite Streaming, DV+, SpringServe
Active
BOOLEAN
True
False
UpdateTimestamp
TIMESTAMP
Timestamp of the update to Magnite
Once the data table is prepared, you can share views of your data with Magnite in three steps.
Step One: Check the Data Format
Before sharing data with Magnite, you must run the script linked below to ensure the data is in the correct format and meets the taxonomy table requirements.
Validating Your Views to Share with Magnite
Step Two: Enable Streams
A stream (change tracking) on the view must be enabled to understand table updates and inform data ingestion. For more information, see Snowflake’s Managing Streams documentation or contact your Magnite representative.
Step Three: Make the View Accessible to Magnite
To make the view accessible to Magnite, please create a share of each table and grant privileges to the shared objects using Magnite’s target Snowflake account name.
Updates to data shares are checked and ingested into Magnite daily.
If you’d like more information or need help with the onboarding process, please contact snowflake@magnite.com.