SnowLens installs directly into your Snowflake account as two free apps: an anomaly dashboard with 9 detectors, and a warehouse sizing advisor that recommends the right size and cluster count from your own usage history — nothing is ever sent outside your environment.
SnowLens reads only Snowflake's own metadata views. Your data never leaves your account, ever.
Runs on Streamlit-in-Snowflake, which is built into every Snowflake account. Nothing to deploy.
Both apps, all 9 detectors, sizing recommendations, cost attribution — no payment, no signup, no expiry.
One SQL script removes every object SnowLens created. No residue, no lock-in.
SnowLens installs as two Streamlit apps sharing one stage, one warehouse, and one least-privilege role. They answer different questions.
What went wrong? 9 detectors covering slow queries, failures, disk spill, queuing, credit spikes, idle warehouses, and workload cost outliers — each with a plain-English recommendation.
Is each warehouse the right size? Analyses spill, queuing, scan volume and concurrency per warehouse, then recommends a size and cluster count with ready-to-review ALTER WAREHOUSE statements.
SnowLens ships with 9 detection rules covering query performance and warehouse cost. Every flagged event comes with a plain-English recommendation and a specific next step.
Flags queries that exceed a configurable threshold (10s / 20s / 30s / 60s). Optional SELECT-only filter to ignore ETL/DML workloads.
Catches queries manually stopped or cancelled by a timeout — often a sign of runaway workloads or misconfigured timeouts.
Surfaces non-cancellation query failures — syntax errors, permission issues, resource limits, and other runtime errors.
Finds queries that ran out of memory and spilled to disk. Classifies local vs remote spill and flags remote spill as high risk.
Detects warehouses where queries queue due to concurrency overload (>60s cumulative). Recommends multi-cluster warehouses.
Compares each warehouse's hourly credit usage to its own rolling baseline. Flags hours where usage spikes more than 2 standard deviations above average.
Catches warehouses burning credits with zero queries running — forgotten warehouses, misconfigured auto-suspend, or orphaned resources.
Identifies warehouses sized larger than their workload needs by comparing average bytes scanned against warehouse size tier.
Finds workloads (by query tag or role) that are cost outliers compared to your other workloads — using credit attribution data.
Groups credit usage by QUERY_TAG, detected dbt model, or role — giving you a clear breakdown of who's spending what. Works with any orchestration tool (Airflow, Matillion, dbt, cron).
Most teams size a warehouse once, then never revisit it. The Sizing Advisor reads your actual usage history and tells you which warehouses are undersized, oversized, or fighting for concurrency — with the reasoning behind every call.
Share of queries spilling to remote storage. The strongest undersizing signal — remote spill is dramatically slower than memory or local SSD.
The 90th-percentile scan per query, used instead of the mean so a handful of large queries can't mask an otherwise small workload.
Signals concurrency pressure, which is fixed by scaling out to more clusters — not up to a bigger size. The advisor keeps these separate.
Hours that burned credits with zero queries running, pointing directly at an AUTO_SUSPEND that's set too high.
Remote spill > 2% of queries, or local spill > 15%.
p90 scan < 100 MB, above Small, and spill under 1%.
Cumulative queue time > 60s — handled independently of size.
The evidence doesn't justify a change. No churn for its own sake.
Every recommendation carries a confidence level based on how many queries backed it,
a plain-English explanation of why, and an estimated credits/hour delta. The app generates
ALTER WAREHOUSE statements for you to review —
it never executes them.
Most observability tools require sending your query logs to an external SaaS. SnowLens is different by design.
Queries ACCOUNT_USAGE.QUERY_HISTORY and WAREHOUSE_METERING_HISTORY — Snowflake's own internal views, not your business tables.
Streamlit-in-Snowflake runs in an isolated environment. SnowLens makes no calls to external APIs or analytics services.
The app runs on a warehouse in your account. Typically a few cents per session on an XS warehouse.
The installer creates a dedicated role with only the permissions the app needs. It cannot access objects outside its own schema.
Three steps. All done inside Snowsight. No CLI, no cloud console, no infrastructure.
Download the ZIP from the button below. It contains three SQL scripts and three source files covering both apps. No other dependencies.
↓ Download SnowLensOpen a new Snowsight worksheet as ACCOUNTADMIN. Paste and run sql/01_setup.sql. This provisions a dedicated warehouse, database, stage, and role — nothing touches your existing objects.
In Snowsight, navigate to Data → Databases → SNOWLENS_FULL → APP → Stages → SNOWLENS_STAGE and upload all three files from the src/ folder: streamlit_app.py, sizing_advisor.py, and environment.yml. Then run sql/02_create_app.sql, which creates both apps.
Done. Open Projects → Streamlit in Snowsight, where you'll find SNOWLENS_APP (9 detectors) and SNOWLENS_SIZING_ADVISOR (sizing recommendations).
ALTER WAREHOUSE statements for you to read and run yourself. Nothing is executed on your behalf. Sizing is empirical — the advisor only sees what already happened, so change one warehouse at a time and re-measure.SNOWFLAKE.ACCOUNT_USAGE schema — Snowflake's own internal metadata about query history and warehouse usage. It does not query any of your business tables, and it does not have visibility into the actual content of your queries beyond what Snowflake stores in ACCOUNT_USAGE (query text snippets, timing, credit consumption).sql/99_uninstall.sql as ACCOUNTADMIN. It drops the database, warehouse, and role in three lines. Every object SnowLens created is gone with no residue.Download the ZIP, run two SQL scripts in Snowsight, and both apps are live.
Your data stays inside your account — always.
Questions? Email vizcanvas@gmail.com