Anavsan Snowflake Cost Engineering Playbook · Practitioner's Reference
Anavsan Practitioner's Playbook
Snowflake Cost Engineering

The Complete
Snowflake
Cost Engineering
Playbook

A practitioner's reference covering all 11 Snowflake cost domains, 93 actionable optimizations, and how to build automated governance that actually sticks.

11 Cost domains covered end-to-end
93 Actionable optimizations with impact
60–70% of spend recoverable with right techniques
Contents
P2Cost Architecture — Where Money Goes
P3Virtual Warehouse Deep Dive
P4Serverless · Cloud Services · Storage
P5Cortex AI · SPCS · Data Transfer
P6dbt BI/Dashboard Workloads
P7Advanced Query Patterns & Governance Framework
P8Quick Reference — 93 Optimizations
P9Advanced Patterns & Query Engineering
P10Marketplace & Resource Monitors
P11Cost Spike Investigation Playbook
P12APEX — Automated Governance at Scale
11 Domains
Compute Serverless Cloud Svc Storage Data Transfer Cortex AI SPCS Marketplace Governance dbt BI & Dashboards
Anavsan · Snowflake Workload Governance Platform · 2026
www.anavsan.com · Practitioner's Playbook
Anavsan Cost Architecture
Where Your Money Goes

All 11 Snowflake Cost Domains

Every dollar spent in Snowflake falls into one of these 11 domains. Understanding each domain's billing mechanics is the prerequisite for any cost optimization effort.

60–70%
Virtual Warehouse Compute
Per-second billing, 60s minimum. Size doubles cost each tier (XS–6XL). Burns while RUNNING, even with zero queries.
10–20%
Serverless Compute
Snowpipe, Auto-Clustering, Search Optimization, Materialized Views, Dynamic Tables, Serverless Tasks. Rates: 1.25–2 credits/compute-hr.
5–15%
Storage
$23–40/TB/month. Time Travel multiplies by up to 90×. Fail-safe adds 7 days. Clones diverge and grow.
Variable
Cortex AI
Fastest growing domain. Credits per million tokens varies by model (0.13–5.1). Warehouse credits also consumed during execution.
Free / Billed
Cloud Services
Free if <10% of daily warehouse usage. Metadata operations, query compilation, SHOW/DESCRIBE calls — invisible until expensive.
$0.02–0.04/GB
Data Transfer / Egress
Charged per GB leaving Snowflake region. Cross-cloud costs more. Ingress is FREE. Large result sets returned to client count.
Node-hr
Snowpark Container Svc
Billed while nodes ACTIVE, even idle. System CPU pool defaults to 3-day auto-suspend. GPU pools have 600s default.
Provider
Marketplace & Sharing
Auto-fulfillment compute and egress billed to provider. Consumer pays their own query compute and native app compute.
KEY INSIGHT The Hidden Cost Multipliers
Time Travel
High-churn tables with 90-day retention can store 90× the active data size. Set to 1 day on staging tables.
60s Minimum
Every warehouse resume has a 60-second minimum charge. Short-task warehouses can waste 5–10× the actual query time.
AI Token Billing
AI_CLASSIFY charges labels × rows in tokens. Expensive models for simple tasks cost 10–50× more.
CROSS-CUTTING dbt & BI Workloads

dbt and BI tools span multiple domains simultaneously — they drive warehouse compute, cloud services overhead, and storage accumulation. They deserve dedicated optimization passes separate from your warehouse tuning.

See Pages 6–7 for domain-specific recommendations for dbt models, DAG efficiency, BI refresh patterns, and metadata polling reduction.

The Snowflake Cost Engineering Playbook · Anavsan · anavsan.com 2 of 12
Anavsan Domain 1 · Virtual Warehouse Compute (60–70% of total cost)
Biggest Cost Driver

Warehouse Compute — 13 Optimizations

Per-second billing with 60-second minimum per resume. Warehouse size doubles credit consumption at every tier. Credits burn while the warehouse is RUNNING, even with zero active queries.

-- Credit consumption by size (per hour)
-- XS=1 S=2 M=4 L=8 XL=16 2XL=32 3XL=64 4XL=128 5XL=256 6XL=512
SELECT warehouse_name, SUM(credits_used) total_credits,
  ROUND(AVG(avg_running), 2) avg_concurrency,
  ROUND(SUM(credits_used) * 3.0, 2) est_usd_cost
FROM SNOWFLAKE.ACCOUNT_USAGE.WAREHOUSE_METERING_HISTORY
WHERE start_time >= DATEADD('day', -30, CURRENT_TIMESTAMP())
GROUP BY 1 ORDER BY 2 DESC;
ProblemRecommendationImpact
Idle warehouses runningSet AUTO_SUSPEND=60s (ETL), 300s (interactive)15–40% savings
Oversized warehousesDownsize if avg execution <10s or low scan percentage50% per tier
Underused warehouses (<5% util)Consolidate compatible workloads onto fewer warehouses30–60% fewer idles
Wrong scaling policyEconomy policy for batch; Standard for interactive concurrencyAvoids over-scale
Queries spilling to disk/remoteUpsize warehouse OR optimize query first2–10× speed
Full table scans (no pruning)Add clustering keys on filter columns80–95% fewer partitions
No result cache utilizationEnable USE_CACHED_RESULT; fix non-deterministic functionsZero credits
24/7 WH for 8-hour workloadsSchedule suspend/resume with resource monitor or task65% savings
Runaway queries (no timeout)Set STATEMENT_TIMEOUT_IN_SECONDS=3600 per warehousePrevent runaway
Resume/suspend thrashingIncrease auto-suspend; batch tiny jobs togetherNo 60s penalty
No query-to-warehouse routingRoute complex queries to large WH, simple to small WHCost aligned
No attribution / query taggingImplement QUERY_TAG standard for all pipelinesChargeback↑
BI dashboard refresh stormsStagger refresh schedules; dedicate a BI-specific warehousePeak -40–60%
The Snowflake Cost Engineering Playbook · Anavsan · anavsan.com 3 of 12
Anavsan Domains 2–4 · Serverless · Cloud Services · Storage
D2Serverless Compute10–20% of spend
ProblemFixImpact
Tiny Snowpipe files (<100MB)Batch to 100–250MB before load30–50%↓
Over-clustering (wrong columns)Use low-cardinality filter columns only50–80%↓
MVs refreshing but unqueriedDrop where refresh cost > query savingsEliminate waste
Dynamic Table TARGET_LAG too shortSet maximum acceptable staleness10–15×↓
DT using FULL refresh modeSet REFRESH_MODE=INCREMENTAL10–100×↓
Many small serverless tasksConsolidate with longer intervalsLess overhead
SOS on tables without lookupsRemove Search Optimization from unused tablesEliminate waste
DTs not using DOWNSTREAMSet intermediate DTs to DOWNSTREAM dependencyFewer refreshes
D3Cloud ServicesFree until >10%
ProblemFixImpact
CS exceeding 10% threshold dailyReduce metadata-heavy operations, batch SHOW callsNo billed CS
BI tools polling every 30sClient-side caching; reduce refresh intervalsLess SHOW ops
File listing overhead (large stages)Use directory tables, partitioned external stagesBig savings
Many short-lag Dynamic TablesIncrease TARGET_LAG; use DOWNSTREAM chainingLess scheduling
D4Storage5–15% of spend
Time Travel trap: A high-churn 1TB table with 90-day retention can accumulate 90TB of Time Travel storage — billed at full rate. Set DATA_RETENTION_TIME_IN_DAYS=1 on staging tables immediately.
ProblemFixImpact
High TT on staging tablesDATA_RETENTION_TIME_IN_DAYS=1Up to 90×↓
Permanent tables for temp dataUse TRANSIENT for staging / work tablesNo failsafe
Uncleared internal stagesSet PURGE=TRUE or run REMOVE after load100% recovery
Abandoned tables (>90d no access)Audit ACCESS_HISTORY and drop unused tablesImmediate
High-churn tables with failsafeConvert to TRANSIENT + periodic backup strategy10–16×↓
Poor clustering depth (>4)Recluster where SYSTEM$CLUSTERING_DEPTH > 4Less overlap
Unused MV storage (0 queries 30d)Drop materialized views with no recent accessReclaim storage
-- Find tables with large Time Travel storage
SELECT table_name, table_schema,
  ROUND(active_bytes/1e9,2) active_gb,
  ROUND(time_travel_bytes/1e9,2) tt_gb
FROM SNOWFLAKE.ACCOUNT_USAGE.TABLE_STORAGE_METRICS
WHERE time_travel_bytes > active_bytes
ORDER BY time_travel_bytes DESC LIMIT 20;
The Snowflake Cost Engineering Playbook · Anavsan · anavsan.com 4 of 12
Anavsan Domains 5–7 · Cortex AI · Container Services · Data Transfer
D5Cortex AI ServicesFastest growing
AI_CLASSIFY billing trap: Charges labels × rows in tokens. 10 labels on 1M rows = 10M token equivalents. Minimize label count and descriptions.
ProblemFixImpact
Expensive models for simple tasksUse smaller models (mistral-7b, llama3-8b)10–50×↓
Verbose system promptsMinimize prompt length; efficient instructions30–60% token cut
Large WH for AI functionsUse MEDIUM or smaller; AI is not WH-bound4–8× WH savings
No per-user AI credit budgetSet monthly credit limits per role/userPrevent blowouts
Row-by-row AI processingBatch calls; process in bulk during off-peakThroughput↑
Duplicate AI processing (same input)Cache results for repeated identical inputsNo re-work
Over-provisioned Cortex SearchSuspend inactive search services immediatelyEliminate idle
RAG over-fetching contextReduce retrieval K; filter relevance threshold30–50% gen cut
D7Data Transfer / Egress$0.02–0.04/GB
ProblemFixImpact
Cross-region COPY INTOUse same-region staging bucketsEliminate egress
Over-frequent cross-region replicationReduce schedule for stable databasesLess transfer
No ECO for multi-region listingsEnable Egress Cost Optimizer — pay onceLarge savings
Large result sets to clientFilter/aggregate before returning; use stagesEgress↓
D6Container Services (SPCS)Per node-hour
System CPU pool default: Auto-suspend is 3 DAYS. An idle notebook that runs for 72 hours will be billed for all 72 hours at full node rate. Reduce to 600 seconds immediately.
ProblemFixImpact
Pools running 24/7Set AUTO_SUSPEND_SECS, MIN_NODES=0Active billing
GPU for non-GPU workloadsUse CPU instance families instead5–10× savings
Notebooks left running idleIdle timeout policy + user educationKill idle cost
System CPU pool 3-day suspendReduce to AUTO_SUSPEND_SECS=600No 3-day idle bill
Persistent services vs. jobsConvert long-running services to jobsPer execution
Over-provisioned MAX_NODESSet based on actual observed peak concurrencyPrevent blowout
-- Detect Cortex AI spend by function
SELECT query_tag, COUNT(*) calls,
  SUM(credits_attributed_compute) credits
FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY
WHERE query_text ILIKE '%ai_%'
  AND start_time >= DATEADD('day',-7,NOW())
GROUP BY 1 ORDER BY 3 DESC;
The Snowflake Cost Engineering Playbook · Anavsan · anavsan.com 5 of 12
Anavsan Domains 9–10 · dbt Workloads · BI & Dashboard Optimization
Pipeline & Analytics Layer

dbt & BI Dashboard Cost Patterns

D9dbt WorkloadsCross-cutting
Problem PatternRecommended FixImpact
Full refresh on large models every runConvert to config(materialized='incremental')80–95% less compute
DAG over-materializationUse ephemeral models; reduce intermediate tablesStorage+compute↓
Duplicate transformations across modelsConsolidate shared logic into a single base modelLess redundancy
Cascade rebuild on parent model changeUse incremental + is_incremental() guardNo cascade
dbt tests running on prod warehouseRoute test targets to smaller dedicated WH50%+ WH savings
SCD2 snapshots running too frequentlyReduce frequency/scope to necessary tables onlyLess compute
dbt jobs conflicting with BI refresh peakOffset dbt schedule from BI refresh windowsLess contention
D10BI & Dashboard WorkloadsCross-cutting
Problem PatternRecommended FixImpact
Dashboard refresh storms at top of hourStagger refresh schedules across time slotsReduce peak 40–60%
Tableau / Power BI extract refreshes repeatingSwitch to live connection where data freshness allowsData pulled↓
BI tool metadata polling every 30sConnection pooling; increase poll intervalsLess Cloud Svc
Low cache hit rate on dashboardsFix dynamic NOW()/CURRENT_TIMESTAMP in filtersCache hits↑
Oversized dedicated BI warehouseRight-size WH; monitor utilization% per dashboardRight-sized
No BI query tagging or attributionTag BI queries via QUERY_TAG per dashboard/teamChargeback↑
Quick win: Most BI cost overruns trace to three causes — refresh storm scheduling, extract-mode tools pulling full tables, and dynamic timestamp filters breaking result cache. Fix these three first for immediate savings.
The Snowflake Cost Engineering Playbook · Anavsan · anavsan.com 6 of 12
Anavsan Domain 11 · Advanced Query Patterns · Governance Framework
Senior Practitioner Layer

Advanced Query Anti-Patterns & Governance

D11Advanced Query & Modeling10 patterns
Anti-PatternRoot FixImpact
SELECT * on wide tables with 100+ columnsSelect only required columns explicitly in every query30–80% scan↓
VARIANT / OBJECT parsed at query timeFlatten JSON at ingest; persist as typed columns2–5× faster
Window functions over very large partitionsTighten PARTITION BY scope; pre-filter where possibleProportional↓
Micro-partition skew on large fact tablesRebuild table with even distribution keyBetter pruning
Mixed ETL / BI / ad-hoc on one warehouseIsolate by workload class into dedicated warehousesNo contention
Identical queries missing result cacheStandardize patterns; remove dynamic timestampsZero credits
Shadow IT / unowned pipeline resourcesAudit via QUERY_HISTORY; assign ownership tagsGovernance↑
Unintended Cartesian product / cross joinAdd explicit JOIN conditions; validate with EXPLAINCan 10–100× compute
Correlated subquery executing per rowRewrite as explicit JOIN or CTE with single pass2–10× faster
Warm credits >20% of total consumptionRight-size AUTO_SUSPEND per arrival pattern15–20% savings
Attribution & Chargeback Framework
  • → Tag every pipeline with QUERY_TAG to enable team-level chargeback
  • → Map warehouses to cost centres using resource monitor labels
  • → Build a workload ownership registry before any automated governance
  • → Set resource monitors on all warehouses — including development
  • → Review credit consumption weekly; act on top-5 cost drivers each sprint
Governance rule: Every warehouse should have an owner, a cost centre tag, and a resource monitor. If any of the three is missing, cost attribution breaks down immediately.
Shadow IT & Orphan Resource Detection
  • → Use ACCOUNT_USAGE.ACCESS_HISTORY to detect orphaned resources
  • → Query WAREHOUSE_METERING_HISTORY for warehouses with zero queries but non-zero credits
  • → Identify tables with no reads in 90+ days; archive or drop after review
  • → Track role-level spend: personal roles in prod are a shadow IT signal
  • → Automate weekly orphan report via Snowflake Tasks to Slack/email
Common finding: In most Snowflake accounts, 15–30% of active warehouses have no identifiable owner. Governance tooling like APEX surfaces these within hours of connection.
The Snowflake Cost Engineering Playbook · Anavsan · anavsan.com 7 of 12
Anavsan Quick Reference — 93 Optimizations at a Glance
Master Reference

Optimization Count by Domain

13
Warehouse
Compute
12
Serverless
Compute
5
Cloud
Services
8
Storage
12
Cortex AI
+Advanced
43
SPCS · dbt · BI
· Transfer · MV
Highest-Impact Compute Wins 5 picks
Idle WH running between jobs
AUTO_SUSPEND=60s for batch WH
15–40%↓
WH oversized for workload
Drop 1 size tier if avg exec <10s
50% per tier
Full table scan (no clustering)
Add cluster key on filter columns
80–95%↓
Same query not cache-hitting
Fix dynamic timestamps/functions
Zero credits
24/7 WH for scheduled jobs
Schedule suspend/resume via task
65% savings
Storage Quick Wins 4 picks
Staging tables with 90-day TT
DATA_RETENTION_TIME_IN_DAYS=1
Up to 90×↓
PERMANENT for temp/stage data
Convert to TRANSIENT tables
No failsafe
Internal stages not purged
PURGE=TRUE on COPY INTO
100% recovery
Abandoned tables (>90d unused)
Query ACCESS_HISTORY; drop or archive
Immediate
Cortex AI Cost Controls 4 picks
claude/mistral-large for simple tasks
Switch to mistral-7b or llama3-8b
10–50×↓
No per-user AI budget limits
Resource monitors by role/user
Prevent blowouts
Row-by-row AI calls in pipelines
Batch + off-peak processing
Throughput↑
Idle Cortex Search service
Suspend when not serving queries
Eliminate idle
dbt Top Optimizations 4 picks
Non-incremental large models
materialized='incremental'
80–95%↓
Over-materialized intermediates
Use ephemeral models
Less storage
dbt tests on prod warehouse
Dedicated small test warehouse
50%+ WH savings
dbt + BI running simultaneously
Offset dbt schedule by 30–60min
Reduce concurrency
Serverless Quick Wins 3 picks
Tiny Snowpipe files (<100MB)
Batch to 100–250MB before load
30–50%↓
DT TARGET_LAG too short
Set max acceptable staleness
10–15×↓
DT with FULL refresh mode
REFRESH_MODE=INCREMENTAL
10–100×↓
SPCS Emergency Fixes 2 picks
System CPU pool 3-day suspend
AUTO_SUSPEND_SECS=600
Avoid 72hr idle bill
Notebooks left open
Idle timeout policy + user training
Kill idle cost
The Snowflake Cost Engineering Playbook · Anavsan · anavsan.com 8 of 12
Anavsan Advanced Patterns · Query Engineering · Cortex AI Advanced
Senior Practitioner Techniques

Advanced Cost Engineering Patterns

Advanced Query Patterns
Anti-PatternRoot FixImpact
Redundant computation across 3+ modelsSingle intermediate materializationNo dup credits
Query perf regression over timeDecompose: growth vs. decay vs. contentionStops drift
Functionally identical queries (cache miss)Standardize patterns for cache hitsZero credits
VARIANT/OBJECT parsed at runtimeFlatten at ingest time into typed columns2–5× faster execution
Window functions on huge partitionsTighten PARTITION BY clauseProportional↓
Micro-partition skew on large tablesRebuild table with even distributionBetter pruning
Warm credits >20% of totalRight-size auto-suspend per arrival pattern15–20% savings
-- Find queries with partition over-scan
SELECT query_id, query_text,
  partitions_scanned, partitions_total,
  ROUND(partitions_scanned/partitions_total*100,1) pct_scanned,
  ROUND(credits_used_cloud_services,4) credits
FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY
WHERE partitions_scanned > partitions_total * 0.5
  AND start_time >= DATEADD('day',-7,NOW())
ORDER BY credits DESC LIMIT 25;
Cortex AI Advanced (8 Patterns)
ProblemFixImpact
RAG over-fetching contextReduce retrieval K; filter relevance threshold30–50% tokens↓
Embeddings regenerated for unchanged dataCache embeddings; regenerate only on changeNo reprocessing
Cortex Analyst model too broadScope to relevant tables/columns per question type40–60% tokens↓
AI agents firing on noiseAdd outcome validation; reduce trigger frequencyNo wasted runs
Fine-tuning when few-shot worksTry prompting/few-shot first before fine-tuningNo training cost
Cortex Search over-rebuildingMatch refresh cadence to actual data churn rate50–80% rebuild↓
Document AI reprocessing unchanged docsTrack doc hashes; skip on no changeEliminate waste
No per-tenant AI attribution (ISV)Implement tenant-level token trackingMargin analysis
Governance & Attribution
  • → Tag every pipeline with QUERY_TAG to enable team-level chargeback
  • → Use ACCOUNT_USAGE.ACCESS_HISTORY to detect shadow IT and orphaned resources
  • → Build a workload ownership registry before deploying any automated governance tooling
  • → Set resource monitors on all warehouses — even development ones — with a weekly reset
The Snowflake Cost Engineering Playbook · Anavsan · anavsan.com 9 of 12
Anavsan Domain 8 · Marketplace & Data Sharing · Resource Monitors
Often Overlooked Cost Drivers

Marketplace, Sharing & Resource Controls

D8Marketplace & Data SharingVariable billing
Problem PatternRecommended FixImpact
Marketplace app running 24/7 warehouseCheck app WH config; set auto-suspend to 60sLarge savings
Cross-region marketplace deliveryUse same-region provider account; enable ECOEliminates egress
Listing with AUTO_FULFILLMENT enabledDisable auto-fulfillment on low-demand listingsNo idle compute
Provider replicating to all regionsLimit replication to regions with active consumersEgress cost down
Shared DB queried without local cacheMaterialize frequently-joined shared data locallyNo remote scan
Unused marketplace trials still activeAudit and terminate inactive app trials monthlyRemove idle cost
Provider billing: As a data provider you pay for compute that powers queries on your listing. Monitor DATA_SHARING_USAGE.LISTING_CONSUMPTION_DAILY to see which consumers drive your provider costs.
Resource Monitor Setup
Monitor TypeConfigurationBenefit
Account-level monitorMonthly credit quota; alerts at 75/90/100%Global safety net
Per-warehouse monitorIndividual quota per WH aligned to workloadTeam-level control
Dev / sandbox warehousesWeekly reset + suspend-at-100% to hard-capNo runaway dev
Cortex AI heavy rolesRole-level monitor on AI-heavy roles monthlyAI budget control
Alert routingRoute alerts to Slack or email via TasksFast response
-- Account-level resource monitor
CREATE OR REPLACE RESOURCE MONITOR account_guard
  WITH CREDIT_QUOTA = 5000
  FREQUENCY = MONTHLY START_TIMESTAMP = IMMEDIATELY
  TRIGGERS
    ON 75 PERCENT DO NOTIFY
    ON 90 PERCENT DO NOTIFY
    ON 100 PERCENT DO SUSPEND;
Critical gap: Most accounts have no account-level monitor. A single runaway loop or recursive CTE with no STATEMENT_TIMEOUT can exhaust months of credits in hours.
The Snowflake Cost Engineering Playbook · Anavsan · anavsan.com 10 of 12
Anavsan Emergency Diagnosis · Cost Spike Investigation · SQL Toolkit
When Things Go Wrong

Cost Spike Investigation Playbook

Step 1 — Identify the Spike Window
-- Daily credit consumption -- spot the anomaly
SELECT DATE_TRUNC('day',start_time) dt,
  ROUND(SUM(credits_used),2) daily_credits
FROM SNOWFLAKE.ACCOUNT_USAGE.WAREHOUSE_METERING_HISTORY
WHERE start_time >= DATEADD('day',-30,NOW())
GROUP BY 1 ORDER BY 1;
Step 2 — Identify the Warehouse
-- Which warehouse drove the spike?
SELECT warehouse_name,
  ROUND(SUM(credits_used),2) credits,
  COUNT(*) intervals
FROM SNOWFLAKE.ACCOUNT_USAGE.WAREHOUSE_METERING_HISTORY
WHERE start_time BETWEEN 'SPIKE_START' AND 'SPIKE_END'
GROUP BY 1 ORDER BY 2 DESC;
Step 3 — Find the Offending Queries
-- Top credit queries in the spike window
SELECT query_id, user_name, warehouse_name,
  ROUND(credits_used_cloud_services,4) credits,
  ROUND(execution_time/1000,1) exec_secs,
  LEFT(query_text,80) preview
FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY
WHERE start_time BETWEEN 'SPIKE_START' AND 'SPIKE_END'
  AND warehouse_name = 'TARGET_WH'
ORDER BY credits DESC LIMIT 20;
Step 4 — Identify the User / Role
-- Who drove spend in the anomaly period?
SELECT user_name, role_name,
  COUNT(*) queries,
  ROUND(SUM(credits_used_cloud_services),2) total
FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY
WHERE start_time BETWEEN 'SPIKE_START' AND 'SPIKE_END'
GROUP BY 1,2 ORDER BY 4 DESC LIMIT 15;
Step 5 — Check for Runaway Loops
-- High-frequency repeated queries
SELECT LEFT(query_text,60) pattern, user_name,
  COUNT(*) executions,
  ROUND(AVG(execution_time)/1000,1) avg_secs,
  ROUND(SUM(credits_used_cloud_services),3) total
FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY
WHERE start_time BETWEEN 'SPIKE_START' AND 'SPIKE_END'
GROUP BY 1,2 HAVING executions > 30
ORDER BY total DESC LIMIT 10;
Spike Type Decision Tree
Which ACCOUNT_USAGE view to investigate?
Compute spike — WAREHOUSE_METERING_HISTORY + QUERY_HISTORY
Storage spike — TABLE_STORAGE_METRICS + STORAGE_USAGE
Serverless spike — SERVERLESS_TASK_HISTORY + DYNAMIC_TABLE_REFRESH_HISTORY
Cortex AI spike — CORTEX_USAGE_HISTORY (token usage by function)
SPCS spike — COMPUTE_POOL_EVENTS + container node-hour billing
The Snowflake Cost Engineering Playbook · Anavsan · anavsan.com 11 of 12
Anavsan
Running these 93 optimizations manually?

Let APEX detect,
route, and track
every one of them.

APEX monitors all 11 Snowflake cost domains in real time, automatically routes anomalies to the right owner, and generates verified savings reports — without adding headcount or engineering toil.

AI Anomaly Detection
ML-based detection across all 11 domains. Not just warehouse thresholds — storage, Cortex AI, SPCS, and serverless too.
Automated Routing
Every detected issue is mapped to a workload owner and routed with context — no manual triage required.
Verified Savings Proof
Before/after credit delta reports that hold up to CFO scrutiny. ROI dashboard built in from day one.
93 Recommendations Built In
Every optimization in this playbook is encoded as an APEX detection rule — with confidence scores and risk assessment.
dbt + BI Coverage
Model-level and DAG-level cost attribution for dbt. BI refresh storm detection and metadata polling alerts.
Live in 24 Hours
Read-only Snowflake data share. No agents. No code changes. First anomalies surface within hours of connection.
© 2026 Anavsan, Inc. · contactus@anavsan.com · www.anavsan.com
Practitioner's Playbook · Snowflake Cost Engineering · anavsan.com/apex