Bien gestionado, Snowflake puede ser la plataforma de data cloud con mejor relación costo-beneficio del mercado. Sin embargo, a muchos clientes les cuesta controlar con confianza sus costos en Snowflake, justamente por la facilidad de uso de la plataforma y su amplia adopción dentro de las organizaciones.
En SELECT hemos trabajado con más de 100 empresas para ayudarlas a implementar estrategias de gestión y optimización de costos en Snowflake. Estas estrategias se agrupan en 6 áreas clave que, en nuestra opinión, deben ser la base de toda estrategia de gestión de costos en Snowflake. En este post profundizamos en esas 6 áreas y compartimos lecciones prácticas aprendidas con nuestros clientes.
1\. Visibilidad
Antes de poder incidir en tus costos, necesitas tener herramientas de visibilidad. Si no sabes qué está impulsando tu consumo en Snowflake ni cómo evolucionan esos elementos en el tiempo, no sabrás dónde enfocar tus esfuerzos.
Si eres quien gestiona los costos de Snowflake, deberías poder responder rápida y fácilmente las siguientes preguntas:
- ¿Cuál es nuestro gasto mensual promedio en Snowflake?
- ¿Qué porcentaje del valor contratado proyectamos consumir?
- ¿Cuánto gastas al año (en $, no en créditos) en cada virtual warehouse, serverless task, base de datos, etc.?
- ¿Cuál es el costo de cada query workload que corre en tu entorno?
- ¿Cuánto consumo genera cada usuario o equipo en tu cuenta?
- ¿Cómo ha cambiado cada uno de estos elementos en los últimos X días?
Cost Management en Snowsight
La sección de Cost Management dentro de Admin en Snowflake es un excelente punto de partida. Desde ahí podrás identificar:
- Costos a nivel de organización:
- Valor total del contrato
- Saldo restante
- Gasto total
- Consumo de créditos (no $) a nivel de cuenta:
- Por tipo de servicio
- Por recurso (es decir, virtual warehouse)
Vale la pena tener en cuenta que el consumo de créditos que aparece en la pestaña de consumo de Snowflake puede estar sobrestimado hasta en un 10%, ya que incluye créditos de Cloud Services. A los clientes solo se les cobra por el consumo de cloud services cuando supera el 10% de sus costos diarios de cómputo. La mayoría de los clientes no recibirá cargos por costos de cloud services, por lo que las cifras del screenshot anterior casi siempre estarán infladas. Conoce más aquí.
La necesidad de profundizar
La mayoría de los clientes de Snowflake termina superando la UI de Cost Management en admin y acaba invirtiendo recursos internos significativos en construir sus propios dashboards de monitoreo, o apoyándose en una plataforma de terceros confiable como SELECT.
Esto se reduce, al final, a una sola razón: la necesidad de profundizar. La UI de Cost Management hace un buen trabajo al mostrar un desglose de tu gasto y revelar cuáles son los principales generadores de consumo. En el screenshot anterior se ve que el warehouse principal concentra la mayor parte de los costos. Pero ¿por qué? ¿Qué dentro de ese warehouse está impulsando realmente esos costos?
Para mejorar la visibilidad de costos dentro de tus virtual warehouses, recomendamos calcular el costo de cada query y luego agregarlos en costos a nivel de workload usando la metadata de las queries. Esa metadata puede ser tags/comentarios personalizados que añades a tus queries, o provenir de herramientas como dbt o Looker. Una vez que la tengas, podrás entender fácilmente los verdaderos generadores de cómputo en cada uno de tus virtual warehouses:
Más allá de los virtual warehouses, hay otros servicios de Snowflake que pueden generar un consumo relevante, como Snowpipe, Automatic Clustering, Search Optimization y Query Acceleration. Para gestionar bien los costos necesitas visibilidad detallada de cada recurso de Snowflake y de cómo evoluciona su consumo en el tiempo. Y, sobre todo, debe estar a un clic de distancia.
Aquí tienes un ejemplo de dashboard que puedes construir para mostrar los costos de Automatic Clustering de una sola tabla.
Y otro ejemplo que muestra los costos de un único Snowpipe, junto con recomendaciones para reducir costos:

2\. Atribución
Una vez que tengas claros tus generadores de costos, vas a querer contar con formas flexibles de asignar esos costos a distintas áreas.
Algunas formas comunes de atribuir costos son:
- Usar los object tags de Snowflake para asignar virtual warehouses y otros recursos a equipos, departamentos o proyectos
- Sumar metadata a tus queries mediante query tags que identifiquen el equipo, proyecto o caso de uso al que pertenece la query
- Asignar manualmente los recursos a distintos grupos en tu herramienta de reporting
Cualquier herramienta de reporting de costos que construyas o adquieras debe permitirte asignar costos a distintos grupos de forma flexible y, luego, visualizar y seguir su uso fácilmente en el tiempo. Aquí tienes un ejemplo del gasto de nuestra cuenta de Snowflake desglosado por Usage Group:
Al analizar tus costos por departamento o proyecto suelen aparecer oportunidades o generadores de gasto que no se ven cuando se mira recurso por recurso.
3\. Controles
La visibilidad y la atribución te muestran cuánto estás gastando, pero también conviene implementar controles que eviten el gasto innecesario desde el principio. Hay cuatro tipos de controles que recomendamos considerar a los clientes de Snowflake como parte de su estrategia de gestión de costos.
Control de acceso
Snowflake cuenta con sólidas capacidades de control de acceso que permiten mantener controles muy finos sobre quién puede hacer qué dentro de la plataforma. El control de acceso suele ser una herramienta subestimada para controlar costos. Por ejemplo, limitar qué usuarios pueden ejecutar queries en virtual warehouses más grandes y costosos puede ser muy efectivo. De la misma manera, restringir la creación y modificación de warehouses evita que los usuarios levanten por accidente warehouses muy grandes que disparan un consumo innecesario.
Query Timeouts
Los query timeouts funcionan como una salvaguarda dentro de Snowflake, pensada para detener queries que excedan una duración predeterminada. Es una medida preventiva frente a gastos excesivos por ejecuciones de queries prolongadas. Cuando una query supera el umbral de timeout especificado, Snowflake la termina automáticamente.

Usar query timeouts de forma efectiva ayuda a controlar el impacto de queries descontroladas. Por defecto, Snowflake permite que las queries corran hasta dos días antes de cancelarlas, lo que puede acumular gastos importantes. Recomendamos implementar query timeouts en todos los warehouses para acotar el costo máximo que puede generar una sola query.
Resource Monitors
Al igual que los query timeouts, los resource monitors te permiten limitar el costo total que puede generar un warehouse. Puedes usarlos con dos propósitos:
- Recibir un correo cuando los costos alcancen cierto umbral
- Impedir que un warehouse gaste más de una cantidad específica en un período dado. Snowflake puede bloquear la ejecución de queries en un warehouse cuando supera su cuota.

La mayoría de los clientes no activa la función de apagado del warehouse (punto 2) por su potencial de interrumpir de forma significativa las operaciones del negocio y el trabajo diario de los empleados. Si no tienes capacidades de alertas ofrecidas por otra herramienta, usar resource monitors para recibir notificaciones de gasto excesivo en un warehouse (punto 1) es una práctica recomendada.
Presupuestos
Una de las mejores maneras de controlar costos es asignar un presupuesto a cada grupo de usuarios de Snowflake y hacerlo cumplir. Si a los usuarios, equipos o departamentos no se les dice cuánto pueden gastar, no tendrán incentivo para reducir su consumo ni para gastar con cuidado.
Los presupuestos ayudan a construir una cultura de conciencia de costos al dejar claro cuánto ha gastado cada equipo y cuánto más puede gastar.
4\. Alertas
Incluso con controles implementados, pueden aparecer picos inesperados en tu factura o cambios graduales en el gasto a lo largo del tiempo. Para adelantarte a estos problemas, recomendamos implementar dos tipos de mecanismos de alerta: alertas de anomalías y resúmenes de gasto programados.
Alertas de anomalías
Las alertas de anomalías deben configurarse para notificarte cuando el gasto supere un umbral predeterminado. Puedes configurarlas a nivel de cuenta, para un warehouse en particular o para un grupo de recursos/usuarios de Snowflake (por ejemplo, un Usage Group).
Como su nombre lo indica, el propósito de estas alertas es avisarte de comportamientos anómalos. ¿Se desplegó un nuevo job costoso? ¿Se habilitó Automatic Clustering en una tabla grande? ¿O alguien cambió el tamaño del warehouse?
Cuanto antes te enteres de estos cambios, más rápido podrás hacer los ajustes necesarios. El screenshot de abajo muestra un ejemplo de alerta de anomalía de gasto en Snowflake. En lo posible, conviene diseñar tus alertas para que entreguen al usuario todo el contexto necesario para identificar la causa del pico de gasto.
Resúmenes de gasto programados
Muchos cambios en tus patrones de gasto son más graduales y pueden pasar desapercibidos fácilmente. Para evitarlo, recomendamos configurar resúmenes de gasto programados. La idea es enviar una foto de tu uso de Snowflake con una cadencia fija (por ejemplo, semanal o mensual).
Entregar estos resúmenes en destinos populares como correo o Slack reduce la fricción para mantenerte al día con tu gasto. Estos resúmenes ayudan a los usuarios a detectar tendencias o workloads costosos que de otro modo pasarían inadvertidos. Si configuraste presupuestos, puedes incluir una proyección de cuánto se espera que gaste ese grupo de recursos.
5\. Insights
Si bien es importante entender cuáles son tus principales generadores de consumo, la mayoría de los usuarios quiere saber si está usando Snowflake de forma efectiva y qué puede hacer para optimizar su uso o reducir costos.
Si tú gestionas los costos de Snowflake, conviene invertir en herramientas y sistemas que automáticamente señalen oportunidades de optimización a los distintos usuarios de Snowflake en tu organización. Estos insights deberían destacar estrategias comunes de optimización de queries y reducción de costos, tales como:
- Identificar workloads que no están haciendo pruning de micro-partitions y escanean demasiada data
- Identificar warehouses sobredimensionados, o workloads que corren en el tamaño de warehouse equivocado
- Señalar tablas no usadas que no se han consultado y están acumulando costos innecesarios de almacenamiento
- Identificar workloads que fallan repetidamente
- Señalar queries con join keys mal configuradas que provocan exploding joins

6\. Automatizaciones
Mostrar insights a los usuarios es un componente necesario de cualquier estrategia de gestión de costos en Snowflake, ya que muchas optimizaciones deben implementarse manualmente. Dicho esto, muchos empleados en tu organización suelen estar ocupados con otras iniciativas del negocio y no tendrán tiempo para implementar los cambios necesarios.
Siempre que sea posible, conviene aplicar las optimizaciones de Snowflake de forma automática y continua. Algunos ejemplos:
- Ajustar automáticamente la configuración de los virtual warehouses para mejorar la eficiencia de utilización
- Crear políticas automatizadas de eliminación de data (por ejemplo, borrar tablas o bases de datos/esquemas no productivos después de X semanas)
- Dar de baja dashboards o data assets en desuso que viven sobre Snowflake y generan consumo
Construir y mantener estas automatizaciones puede requerir recursos de ingeniería significativos, pero suele traducirse en ahorros importantes. El screenshot a continuación muestra un ejemplo de la funcionalidad de Automated Savings de SELECT, que ajusta de forma automática y continua los virtual warehouses para optimizar la eficiencia de utilización.

Lecciones aprendidas
En este post cubrimos los 6 componentes clave de una estrategia efectiva de gestión de costos en Snowflake. Nos consideramos afortunados de haber tenido la oportunidad de trabajar con más de 100 empresas para ayudarlas a implementar estas estrategias. Además de lo compartido arriba, estas son algunas lecciones adicionales que hemos aprendido en el camino:
Expande tu estrategia de gestión de costos de forma incremental
Construir las herramientas necesarias para una estrategia efectiva de gestión de costos toma bastante tiempo. Si tienes claro que vas a hacerlo in-house, te recomendamos empezar por desarrollar visibilidad granular de costos y reportes de uso. No se pueden tomar decisiones estratégicas de costos hasta tener un buen entendimiento de los generadores de uso.
Una vez que tengas visibilidad básica, puedes empezar a pensar en tu estrategia de atribución de costos, o implementar controles y alertas para mantenerte al tanto de tu uso.
Empieza por las oportunidades de optimización más fáciles
Antes de construir cualquier automatización, conviene atacar primero la fruta al alcance de la mano. Hemos escrito extensamente sobre distintas estrategias de optimización de costos que puedes aplicar en tu cuenta. Dar de baja data assets en desuso, reducir la frecuencia de ejecución y achicar warehouses suele traducirse en un 10-20% de ahorros inmediatos.
Descentralizar la gestión de costos es la única solución escalable
Tras haber trabajado con muchas organizaciones grandes, hemos visto de primera mano lo difícil que puede ser para los equipos centrales de plataforma de datos vigilar costos y hacer cumplir buenas prácticas en una base amplia de usuarios de Snowflake.
En cambio, intenta construir una cultura de conciencia de costos y responsabilidad compartida. Hay que empoderar a los usuarios de toda la organización con las herramientas, procesos y conocimientos necesarios para usar Snowflake de forma efectiva. Una vez que los usuarios (a) entienden cómo sus acciones impactan el uso de Snowflake y (b) tienen una forma de baja fricción para saber cómo optimizar, será mucho más probable que pasen a la acción.
Recursos adicionales
Esperamos que este post te haya resultado útil. Si buscas más material sobre gestión de costos y optimización de queries en Snowflake, puedes revisar los siguientes recursos:
- Snowflake Cost Optimization: 15 estrategias probadas para reducir costos
- Snowflake Query Optimization: 16 tips para que tus queries corran más rápido
- The Analytics Engineering Podcast: Optimización de costos en cloud warehouses
- The Missing Manual: Todo lo que necesitas saber sobre la optimización de Snowflake | SELECT
- Extiende el runway: un deep dive a los costos de un data warehouse
- Precios de Snowflake explicados | Guía del modelo de facturación 2024
Ian Whitestone · Co-founder y CEO de SELECT
Ian es Co-founder y CEO de SELECT, una plataforma SaaS de gestión y optimización de costos para Snowflake. Antes de fundar SELECT, Ian pasó 6 años liderando equipos full stack de data science e ingeniería en Shopify y Capital One. En Shopify, lideró los esfuerzos para optimizar su data warehouse y aumentar la observabilidad de costos.