Snowflake and BigQuery bill on opposite meters
Snowflake charges for compute TIME: a virtual warehouse burns credits every second it's running, whatever size you picked, whether or not it's actually processing a query at that instant. BigQuery's default pricing charges for BYTES: a query costs the same whether it takes one second or one minute, and everything comes down to how much data it scanned. Two data warehouses, two completely different ways to overspend.
That split matters for where the waste actually hides. On Snowflake, the number to watch is how much of a warehouse's billed time was spent idling or resuming rather than running a query. On BigQuery's on-demand model, the number to watch is how many bytes a query scanned that it didn't need to. Neither platform's own console makes that number obvious at a glance, which is exactly why the config change is easy to miss until the bill has already grown.
How the calculator works
The Snowflake panel prices two warehouses (a primary one and a smaller dev/test one) by their size, active hours, resumes, and auto-suspend timeout, splitting the result into query-active compute, idle-before-suspend waste, and resume-minimum makeup, since tightening auto-suspend trades one against the other. Cloud services credits and storage (with Time Travel and the fixed 7-day Fail-safe window both retaining extra bytes) round out the total. Because Snowflake doesn't publish a $/credit or $/TB list price, both are required inputs, priced at your own rate rather than a guess.
The BigQuery panel prices on-demand scanning against an Editions reservation at your own slot shape, and shows the crossover: the scan volume where the two cost the same. Storage is priced at both the logical (uncompressed) and physical (compressed) billing option, since switching only pays off above a certain compression ratio.
Below both panels, a ranked set of levers computes what each concrete fix is worth at your own numbers. They don't all stack: requiring a partition filter and pruning columns both cut the same underlying scanned-byte total, so applying both saves less than adding them suggests.