This is part 1 in a series of cost management for the Snowflake data platform. Stay tuned for new articles!
Once projects start to gain traction and users start to onboard projects, resource consumption starts to increase. We think it is of utmost importance to communicate the way cost accumulates over a period of time, and how both developers and end-users can take ownership of their Snowflake bill.
Thankfully, there’s a report for that
By default, only the ACCOUNTADMIN role is able to consult the Monitor Usage and Billing History tab in the Snowflake console. For the others, it remains invisible. Thankfully there’s a privilege we can grant to a role so members get access to that tab as well.
That privilege is the Monitor Usage privilege. It is configured on account level, so we need to assume the ACCOUNTADMIN privilege before we can grant it.
In the example below, we grant access to everyone in the DBA Snowflake role.
// Assume the accountadmin role
USE ROLE ACCOUNTADMIN;
// Grant the privilege
GRANT MONITOR USAGE ON ACCOUNT TO ROLE DBA;
That’s it. Anyone in the DBA role is now able to access the billing and usage tab in Snowflake.
// Assume the DBA role
USE ROLE DBA;
// Anyone in the DBA role should now be able to access the billing tab.
How we use it
One way to put this in practice is to work through a role hierachy. whereas your standard analyst users are assigned to the e.g. REPORTING role, make a parent role (e.g. PRODUCTOWNER) and assign the MONITOR USAGE privilege to that role.
Now, product owners are able to validate deliveries as well as track and trace cost accumulation.