Magnite Snowflake Data Clean Room User Guide

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.

Getting Started

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

Joining the Magnite Clean Room

Join the Magnite Clean Room by using our Consumer SQL script.

Prerequisites

Source Table 

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

VARCHAR(255)

REQUIRED

SHA256 Hashed Emails

This is used for matching but is not ingested into Magnite.

SEGMENT_IDS

ARRAY(of Strings)

REQUIRED

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)

REQUIRED

Timestamp of when the data was loaded into Snowflake.

This is used for matching and is ingested into Magnite.

INDIVIDUAL_ID

VARCHAR(255)

Optional

An ID that represents an individual in the customer's dataset


This is used for matching and is ingested into Magnite.


Grant Permissions

  • 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>

Installing and Configuring the Clean Room

The Consumer SQL script guides you through nine steps to install and configure the clean room:

  1. Set Snowflake role and warehouse. You will need the ‘samooha_app_role’ privilege assigned to your Snowflake account.

  2. 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. 

  3. Install the clean room defined by Magnite.

  4. Assign your database table to the Clean Room configuration.

  5. 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.

  6. Define public columns used in the select clause of the clean room template.

    • These data columns will be shared with Magnite.

  7. 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: 

      • SEGMENT_IDS

      • UPDATE_TIMESTAMP

      • INDIVIDUAL_ID (if provided)

  8. Allow Magnite to run the activation template.

  9. 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. 

Membership Activation

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.

Taxonomy Delivery

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

Field

Data type

Required/
Optional Values

Definition

ClientName

VARCHAR(255)

Required

Data Provider, Publisher, or Advertiser Name 

AccountId

VARCHAR(36)

Required

Magnite Account ID associated with the client. (This is where the segment needs to go within Magnite.)

DataShareSettings

VARCHAR(36)

Required

Values are Public or Private.

SegmentId

VARCHAR(36)

Required

Segment ID(s) that are provided in the segment membership table.

SegmentName

VARCHAR(255)

Required

Name of the segment. 

SegmentDescription

VARCHAR(255)

Optional

Notes/metadata on the segment. 

SegmentCPM

DOUBLE

Optional

Cost of the segment.

Platform

VARCHAR(255)

Required

Magnite, Magnite Streaming, DV+, SpringServe

Active

BOOLEAN

Required

  • True

  • False

UpdateTimestamp

TIMESTAMP

Required

Timestamp of the update to Magnite

Sharing Table Views

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.

Taxonomy Data Ingestion

Updates to data shares are checked and ingested into Magnite daily. 

Questions

If you’d like more information or need help with the onboarding process, please contact snowflake@magnite.com.