Each client sees only its data
Row-level security tied to roles, with portfolio reporting still possible.
Snowflake for marketing data
Snowflake is our default warehouse for agency and ad data work, mostly because separating storage from compute suits reporting workloads that spike hard at month end. We architect it, model it in dbt, and keep the credit bill predictable.
What you get
Row-level security tied to roles, with portfolio reporting still possible.
Right-sized warehouses, short auto-suspend and resource monitors.
Aggregate layers, so reports never scan raw event tables.
Cost attributed by team, client or workload.
The problem
Snowflake makes it trivially easy to spend money. A warehouse left on auto-resume with a long suspend timer bills for idle time all month. Dashboards querying raw tables re-scan the same rows hundreds of times a day because nobody built an aggregate layer. And multi-tenant agency setups get access wrong in the risky direction: separate databases per client that then cannot be reported on together, or one shared schema with no row-level enforcement at all.
What we implement on Snowflake
How we work
Model the workload first: query patterns, concurrency and month-end peaks
Set up databases, roles and access before loading data, since retrofitting security is painful
Build the dbt layer with tests and an aggregate tier for reporting
Add resource monitors and cost attribution, then review the first full month together
What we use
FAQ
Both work well, and the decision is rarely about features. BigQuery is a strong default if you are already on GCP and lean on GA4 exports, and its per-query pricing suits spiky, unpredictable use. Snowflake fits better where you need fine-grained multi-tenant access control, predictable warehouse-based cost and cross-cloud flexibility. We model your actual volumes both ways rather than defending a favorite.
Mostly by removing waste rather than restricting use: right-sized warehouses with short auto-suspend, separate warehouses per workload so a heavy backfill cannot slow reporting, aggregate tables behind dashboards, and resource monitors with alerts. Idle compute and dashboards scanning raw tables are the two biggest line items on almost every bill we review.
Yes, through row-level security policies tied to roles rather than separate databases per client. That keeps client isolation strict while still allowing portfolio-wide reporting, which per-client databases make effectively impossible.
This page is about Snowflake itself for marketing and ad data: ingestion, agency multi-tenancy and reporting cost. Our marketing data warehouse page covers the full build across every ad platform, on Snowflake, BigQuery or Redshift.
Related
dbt on Snowflake, BigQuery or Redshift: every ad platform modeled, tested and documented.
Learn moreGA4 export modeling, Google Ads transfers and query costs that stay flat.
Learn moreTested dbt models, reliable DAGs and CI for data.
Learn moreWhite-label client reports across Amazon, Walmart, Google, Meta and TikTok, built automatically.
Learn moreTell us how you use Snowflake today and what the bill looks like. We'll tell you where the waste is and what to model first.