ducklens
Warehouse Fit Report · snowflake
2026-03-03 to 2026-05-29 (88d) · 14,524 queries · 3 warehouses

What fits on one machine

43%of your Snowflake bill is query compute that fits on one DuckDB machine

$30,791/yr movable of a $72,178/yr invoice · 75% of attributed query compute · 95% of queries

Recommendation1 MOVE1 SPLIT1 KEEPof 3 warehouses
$72,178
bill analyzed / yr
$30,791
movable to DuckDB / yr
$9,720
runs at (box + storage) / yr

Where your Snowflake bill goes

$72,178/yr, every dollar colored by what to do with it. A cost dashboard stops at the first column.

Movable to DuckDB$30,791/yr · 43%
Must stay (residual)$10,168/yr · 14%
Idle warehouse time$24,525/yr · 34%
Serverless / cloud services$6,693/yr · 9%

Gross annual saving

$17,911 – $24,232 / yr

central $21,072 run-rate delta: migrate $30,791/yr of compute, run it at ~$9,720/yr. Excludes one-time migration, dual-running, egress, at-rest storage, ops.

Hybrid split

Each warehouse scored on its own bill: MOVE wholesale, SPLIT the movable queries off, or KEEP as is.

WarehouseFitSpend/yrVerdictTop blocker
BI_SERVING_WH100%$19,769MOVE·
DBT_WH74%$14,386SPLITremote-spill (working set exceeded local disk)
AD_HOC_WH6%$6,804KEEPremote-spill (working set exceeded local disk)

Before a MOVE, clear: inbound/outbound Secure Data Shares · RBAC/row-access/masking policies · downstream BI & reverse-ETL · Streams/Tasks/Dynamic Tables · data residency/compliance.

What must stay, and why

ReasonSpend/yrQueries
remote-spill (working set exceeded local disk)$7,264532
large local spill (working set > target RAM)$2,904259

Top blockers

The costliest queries keeping a warehouse on Snowflake.

QueryWarehouseReasonSpend/yr
f1507602381c… SELECT c_name, c_custkey, o_orderkey, o_orderdate, o_totalprice, sum(l_quantity) FROM custAD_HOC_WHlarge local spill (working set > target RAM)$41
36cfacc884b3… SELECT nation, o_year, sum(amount) AS sum_profit FROM ( SELECT n_name AS nation, extract(yAD_HOC_WHremote-spill (working set exceeded local disk)$41
bda808953134… SELECT c_name, c_custkey, o_orderkey, o_orderdate, o_totalprice, sum(l_quantity) FROM custAD_HOC_WHremote-spill (working set exceeded local disk)$41
c49489a55bfc… SELECT c_name, c_custkey, o_orderkey, o_orderdate, o_totalprice, sum(l_quantity) FROM custAD_HOC_WHlarge local spill (working set > target RAM)$41
648e84dd182e… SELECT c_name, c_custkey, o_orderkey, o_orderdate, o_totalprice, sum(l_quantity) FROM custAD_HOC_WHremote-spill (working set exceeded local disk)$41
2f3f09ed0533… SELECT s_name, count(*) AS numwait FROM supplier, lineitem l1, orders, nation WHERE s_suppAD_HOC_WHremote-spill (working set exceeded local disk)$41
a5afa2b8e9df… SELECT s_name, count(*) AS numwait FROM supplier, lineitem l1, orders, nation WHERE s_suppAD_HOC_WHlarge local spill (working set > target RAM)$41
4a8a45e5bac9… SELECT nation, o_year, sum(amount) AS sum_profit FROM ( SELECT n_name AS nation, extract(yAD_HOC_WHremote-spill (working set exceeded local disk)$41

If the box were bigger

Fit recomputed at other machine sizes; only spill is RAM-dependent.

Box RAMFit % of query computeMovable $/yr
8 GB (target)75%$30,791
64 GB82%$33,695
128 GB82%$33,695
256 GB82%$33,695
512 GB82%$33,695

Assumptions

8 GB RAM + NVMe box at $800/mo (an r6id.4xlarge-class instance, reserved, incl. ops headroom) + object-storage reads at $0.50/TiB, full re-read assumed (no cache credit). Pricing basis: $3.00/credit (enterprise). The ±15% band is illustrative, not a confidence interval.

Caveats