Snowflake Budgets: Can They Help You Control Costs?
Snowflake has made a concerted effort in recent months to help customers understand how to optimize their data cloud spending. I’ve reviewed their recent advice and also the customer stories they have presented. Now, Snowflake will soon release budgeting features that will help you track spending.
In this article, I will introduce you to Snowflake Budgets and then discuss why it is a good start, but an incomplete approach to controlling costs.
Introducing Snowflake Budgets
It is a very simple concept: Budgets allow you to set a spending limit, expressed as Snowflake credits, on your account overall or on a customized group of objects. When you get close to exceeding your budget, Snowflake will alert you via email. You would then take some kind of action to reduce credit usage, or you would warn your business stakeholders of the possible overspending.
People have asked me about Snowflake’s new “budgeting tool” as if it were some new product. I don’t think of it as a product per se, since Budgets is essentially just more usage metadata in the SNOWFLAKE database and a new chart in Snowsight. It’ll be there whether you use it or not. As of this writing, Budgets is still in Preview mode and thus not supported by Snowflake for production use.
Budget Types
Snowflake gives you 2 budget choices: Account and Custom. Both budgets monitor the same objects to track your credit usage:
- Tables
- Materialized Views
- Schemas
- Databases
- Warehouses
- Pipes
- Tasks
If you enable Account Budgets, you will automatically track the 7 objects listed above for a particular Snowflake account. If you don’t want to track all 7, you can create a Custom Budget and pick only the ones you want. Either way, your budget time period is monthly only–there is no way to do weekly or quarterly budgets.
Enabling Budgets is easy to do. It is a few clicks in Snowsight or you can even programmatically set them up with SQL. Of course, you will need to know the spending limit for your Account or the group of objects you might choose in a Custom Budget. Also, if you are embarking on a FinOps journey, you will hopefully have your Snowflake accounts lined-up with the way your finance department views your spending. Or, if you are concerned only with very specific objects, such as a “problematic” set of materialized views, a Custom Budget can track down to the object level.
Budget Tracking
Once you have created a Budget, you then use Snowsight to see your spending progress. If you set an alert threshold, you will also get an email notification when you exceed that threshold. In this example, you can see that we are only 10 days into the month and are headed for a budget crisis, projected to be well above the alert threshold, shown as a dashed line (screenshot from Snowflake documentation):
This raises an important question: if you saw this and you knew you were in for a budget-busting month, what exactly should you do about it? I appreciate being forewarned, but this doesn’t really solve any problem. It merely warns of the impending doom. In this respect, it is pretty much the same as all the other “Snowflake Optimizers” out there like CapitalOne Slingshot. It can observe and report, but it cannot act.
Taking Action on Snowflake Budgets
If you want to take concrete action to reduce costs and stay within budget, there’s no magic for Snowflake or any other pay-as-you-go product. You must use it as little as possible, and when you are using it, you need to keep it as small as possible. Snowflake even gives you the information on what exactly you should optimize. The problem is, someone needs to actually do the work. Given how busy and complicated life is for the data team, it is hard to find the time to do this right.
At Keebo, we think that “someone” should be a robot–in particular, our patented AI technology. Keebo is the only fully-automated Snowflake optimizer. Unlike the observe and report tools that are everywhere, Keebo analyzes over 70 usage metadata fields and makes the right optimization at the right time–automatically saving you credits directly. And we will adapt 24×7 to changing conditions. This screenshot shows the optimizations we are doing in real time of just the auto-suspend settings for one week of a customer’s warehouse:
For Snowflake, we also optimize and set warehouse size and multi-cluster parameters automatically.
Snowflake Budgets are a great place to start tracking your spending. But I hope you’ll take a look at Keebo, too, for the actual money-saving optimizations. You can offload optimization work to our AI to get those budget projections trending downward or get more work done on the same budget. For example, Keebo customer Payjoy saved 21% on their Snowflake credits even though they increased their query load by 37%. You’ll have Keebo set up in 30 minutes and pay based on what you save. It’s why we are the data team’s best friend.