Dataobservability
Blog / Guides 9 min read

Data Observability on Snowflake - A Setup Guide

June 2026 · Dataobservability

SNOWFLAKE · PROD
247 tables |
Break a monitor:

Alerted #data-eng 0.8s ago.

Downstream impact · consumers at risk

INCIDENT #1042 OPEN · owner @you

Live console · pick a break, watch it get caught

Data observability on Snowflake means continuously monitoring the freshness, volume, schema, quality, and lineage of your Snowflake tables so you catch broken pipelines before they reach a dashboard. The practical concern most Snowflake teams have is compute cost, since scanning every table burns credits. The answer is metadata-first monitoring that reads ACCOUNT_USAGE and INFORMATION_SCHEMA instead of querying table data, which keeps the cost tiny while still covering all 5 pillars. Setup is read-only and takes about 15 minutes.

Why Snowflake teams need observability

Snowflake makes it easy to load and transform large volumes of data, which also makes it easy for problems to slip through unnoticed. A late upstream load, a silently renamed column, a dbt model that ran but produced half the rows it should have, or a join that started fanning out can all ship bad numbers downstream without throwing an error. The query succeeds, the dashboard refreshes, and nobody knows the number is wrong until a stakeholder asks why revenue looks off.

Observability closes that gap by watching the tables themselves. Instead of trusting that a green pipeline run means good data, you continuously check whether each table arrived on time, has the expected row count, kept its schema, and matches its normal patterns. This is the core of data quality monitoring applied to a Snowflake account.

The compute-cost concern, and how metadata-first avoids it

The first question every Snowflake team asks is reasonable: if a monitoring tool scans all my tables on a schedule, won't it run up my credit bill? With a naive approach, yes. Running COUNT and profiling queries against every table every hour would mean keeping a warehouse spun up constantly.

Metadata-first monitoring avoids this. Snowflake already records almost everything you need in metadata views, and reading metadata is far cheaper than scanning data.

  • ACCOUNT_USAGE exposes row counts, bytes, last-altered timestamps, query history, and access history across the whole account, with no need to touch the underlying tables.
  • INFORMATION_SCHEMA gives per-database table and column metadata, including schema definitions, for fast structural checks.
  • Query and access history let lineage be derived from how tables are actually read and written, instead of parsing every query by hand.

Because freshness and volume checks read the last-altered timestamp and recorded row count rather than running SELECT COUNT(*), the compute footprint stays small. Metadata-first keeps compute cost tiny even across thousands of tables, and you only run a heavier data query when you deliberately ask for deeper profiling on a specific table.

How to set up data observability on Snowflake

The setup is read-only and follows a clear order. You can do this in roughly 15 minutes.

  1. Connect read-only. Create a dedicated monitoring role with read access to ACCOUNT_USAGE (via the SNOWFLAKE database) and the schemas you want to watch. The role never needs write access, so there is no risk to your data. Grant USAGE on a small warehouse for the occasional deeper query.
  2. Auto-generate monitors from dbt. If you run dbt, point the tool at your manifest so it reads your models and tests. It maps your project to Snowflake tables and creates freshness, volume, and schema monitors automatically, which means you do not hand-build a monitor per table. This is the fastest path to coverage for dbt data observability.
  3. Set freshness SLAs. For each important table, define when it should be updated, for example "loaded by 6am on weekdays." Learned baselines handle the normal variation, and the SLA tells the system what "late" actually means for your business so you only get paged for genuine misses.
  4. Route alerts by severity. Send critical breaks on revenue or executive tables to PagerDuty or an on-call channel, and lower-priority signals to a Slack thread the owning team reviews during the day. Tie correlated alerts to a single incident so one root cause does not produce twenty notifications.
  5. Use lineage to scope impact. When a monitor fires, data lineage tools show you which downstream models, dashboards, and tables are affected, so you can find the root cause upstream and tell stakeholders exactly what to trust until it is fixed.

What gets covered across the 5 pillars

A complete setup watches all 5 pillars of data observability against your Snowflake account. The table below maps each pillar to what it checks and which metadata it reads.

Pillar What it checks Source
Freshness Did the table update on time Last-altered timestamp in ACCOUNT_USAGE
Volume Is the row count in its normal range Recorded row count, learned baseline
Schema Did columns or types change unexpectedly INFORMATION_SCHEMA
Quality Null rates, uniqueness, and distribution drift Targeted profiling queries
Lineage How tables depend on each other Query and access history

A practical first week

Start narrow and expand. Connect the read-only role, generate monitors from your dbt project, and let the baselines learn for a few days so freshness and volume thresholds settle to your real patterns. Then add freshness SLAs to your highest-stakes tables, wire severity routing, and confirm that lineage resolves correctly by opening one alert and tracing it downstream.

Once that loop works, broaden coverage to more schemas. Because the system is metadata-first, adding tables does not meaningfully raise your credit usage, so there is little reason to monitor only a subset. This is the model behind data observability for Snowflake: full coverage at low cost.

What it costs you

Two costs matter here: the Snowflake compute the monitoring consumes, and the price of the tool itself. The compute side stays low by design, since reading metadata is cheap and deep profiling runs only on demand. On the tool side, Dataobservability publishes transparent pricing so you can size a plan to your number of tables without a sales call. Together that keeps the total cost of running observability on Snowflake predictable.

Get started

Connect your warehouse with a read-only role, generate monitors from dbt, set freshness SLAs on the tables that matter, and route alerts by severity. Within about 15 minutes you will have coverage across all 5 pillars, and within a week the baselines will have tuned themselves to your account. The result is that you find broken pipelines before your stakeholders do, without watching your credit bill climb.

Catch broken data before your stakeholders do

Connect your warehouse and get all five pillars monitoring in 15 minutes. Transparent pricing, no credit card.