Exploração do custo de computação

O custo total de computação consiste no uso geral de:

  • Warehouses virtuais (recursos de computação gerenciados pelo usuário)

  • Recursos sem servidor, como Clustering automático e Snowpipe que utilizam recursos de computação gerenciados por Snowflake

  • Camada de serviços de nuvem da arquitetura Snowflake

Este tópico descreve como obter uma visão dos custos históricos de computação usando Snowsight, ou escrevendo consultas cem exibições nos esquemas ACCOUNT_USAGE e ORGANIZATION_USAGE. A Snowsight permite obter informações de maneira rápida e fácil sobre custos a partir de um painel visual. Consultas em relação a exibições de uso permitem a pesquisa de dados de custos e podem ajudar a gerar relatórios e painéis personalizados.

Se você precisar de mais informações sobre como estes custos de computação são incorridos, consulte Explicação dos custos de computação.

Nota

A camada de serviços de nuvem consome créditos, mas nem todos esses créditos são realmente cobrados. O uso de serviços em nuvem será cobrado somente se o consumo diário de serviços de nuvem exceder 10% do uso diário de warehouses virtuais. Snowsight e a maioria das exibições mostram o número total de créditos consumidos por warehouses, recursos sem servidor e serviços de nuvem sem levar em conta esse ajuste diário aos serviços de nuvem. Para determinar quantos créditos foram realmente cobrados pelos custos de computação, execute consultas na exibição METERING_DAILY_HISTORY.

Visualização do uso de crédito para sua organização

Todos os recursos de computação (warehouses virtuais, sem servidor, serviços de nuvem) consomem créditos do Snowflake. Um usuário com os privilégios adequados pode usar a Snowsight para visualizar o custo total do uso de computação de qualquer dia, semana ou mês.

Para explorar os custos de computação:

  1. Entre em Snowsight.

  2. Mude para a função ACCOUNTADMIN.

  3. Navegue até Admin » Cost Management.

  4. Selecione um warehouse a ser utilizado para visualizar os dados de uso. Snowflake recomenda o uso de um warehouse XS para este fim.

  5. Selecione Consumption.

  6. Selecione Compute no menu suspenso Tipo de uso.

Nota

Se um usuário tiver a função ACCOUNTADMIN, mas não tiver a função ORGADMIN, ele só poderá visualizar os custos da conta atual. O filtro Account que permitiria mudar para uma conta diferente não aparece.

Como filtrar por tag

Você pode usar tags para atribuir o custo do uso de recursos a uma unidade lógica dentro de sua organização. Uma tag é um objeto Snowflake que pode ter um ou mais valores associados a ele. Um usuário com os privilégios adequados aplica um par tag/valor a cada recurso que é usado por um centro de custo ou outra unidade lógica (por exemplo, o ambiente de desenvolvimento, uma unidade de negócios ou linha de negócios). Depois que os recursos forem marcados, você pode isolar os custos com base em um par específico de tag/valor, permitindo que você atribua este custo a uma unidade lógica específica.

Para filtrar o painel Consumption para mostrar os custos associados a uma combinação específica de tag/valor:

  1. Em Snowsight, abra o painel Consumption.

  2. No menu suspenso Tags, selecione a tag.

  3. Selecione o valor da lista de valores da tag.

  4. Selecione Apply.

Por exemplo, você pode usar o menu suspenso para selecionar a tag COST_CENTER e o valor SALES para mostrar o uso associado aos recursos marcados com COST_CENTER = SALES enquanto exclui todos os outros usos do painel.

Você também pode exibir todos os recursos com uma tag, independentemente do valor dela. Use o menu suspenso para selecionar uma tag, depois escolha All em vez de um valor específico.

Visualização do consumo por tipo, serviço ou recurso

Ao visualizar o gráfico de barras que exibe o histórico de computação, você pode filtrar os dados By Type, By Service ou By Resource.

Por tipo

Separa o consumo de recursos em computação (warehouses virtuais e recursos sem servidor) e serviços de nuvem. Para o propósito deste filtro, os serviços de nuvem são separados dos outros tipos de recursos de computação.

Por serviço

Separa o consumo de recursos em consumo de warehouse e o consumo por cada recurso sem servidor. Por exemplo, WAREHOUSE_METERING representa créditos consumidos pelos warehouses enquanto PIPE representa créditos consumidos pelo recurso Snowpipe sem servidor. O cálculo dos serviços de nuvem está incluído no consumo do armazém.

Por recurso

Separa o consumo de recursos pelo objeto do Snowflake que consumiu créditos. Por exemplo, cada warehouse é representado, assim como todas as tabelas que incorreram em custos sem servidor.

Consulta de dados para custos de computação

Snowflake fornece dois esquemas, ORGANIZATION_USAGE e ACCOUNT_USAGE, que contêm dados relacionados ao uso e ao custo. O esquema ORGANIZATION_USAGE fornece informações de custos para todas as contas da organização enquanto o esquema ACCOUNT_USAGE fornece informações semelhantes para uma única conta. Exibições nestes esquemas fornecem dados de uso granulares e prontos para análise e crie relatórios ou painéis personalizados.

A maioria das exibições nos esquemas ORGANIZATION_USAGE e ACCOUNT_USAGE contém o custo de recursos de computação em termos de créditos consumidos. Para explorar o custo de computação na moeda, em vez de créditos, escreva as consultas em relação a Exibição USAGE_IN_CURRENCY_DAILY. Esta exibição converte os créditos consumidos em custo na moeda utilizando o preço diário de um crédito.

As seguintes exibições fornecem informações de uso e custo relacionadas ao custo de computação.

Exibição

Recurso de computação

Descrição

Esquema

AUTOMATIC_CLUSTERING_HISTORY

Sem servidor

Créditos consumidos por clustering automático.

ORGANIZATION_USAGE ACCOUNT_USAGE

DATABASE_REPLICATION_USAGE_ HISTORY

Sem servidor

Créditos consumidos para replicação de banco de dados.

ACCOUNT_USAGE

LISTING_AUTO_FULFILLMENT_ REFRESH_DAILY

Warehouses

Créditos usados para atualizar dados preenchidos para outras regiões por preenchimento automático entre nuvens.

DATA_SHARING_USAGE

LISTING_AUTO_FULFILLMENT_ USAGE_HISTORY

Warehouses

Uso estimado associado ao preenchimento de produtos de dados para outras regiões usando o preenchimento automático entre nuvens. Consulte o SERVICE_TYPE de REPLICATION.

ORGANIZATION_USAGE

MATERIALIZED_VIEW_REFRESH_ HISTORY

Sem servidor

Créditos consumidos pela atualização das exibições materializadas.

ORGANIZATION_USAGE ACCOUNT_USAGE

METERING_DAILY_HISTORY

Warehouses

Sem servidor

Serviços de nuvem

Créditos consumidos por todos os recursos de computação (warehouses, sem servidor e serviços de nuvem) em um determinado dia.

Pode ser usado para determinar se os custos dos serviços de nuvem foram realmente faturados por um dia específico (ou seja, o consumo de crédito dos serviços de nuvem excedeu 10% do consumo do warehouse).

ORGANIZATION_USAGE ACCOUNT_USAGE

METERING_HISTORY

Warehouses

Sem servidor

Serviços de nuvem

Créditos consumidos por warehouses e serviços de nuvem por hora. Para ver quantos créditos um warehouse individual está consumindo, consulte a exibição WAREHOUSE_METERING_HISTORY.

ACCOUNT_USAGE

PIPE_USAGE_HISTORY

Sem servidor

Créditos consumidos pelo Snowpipe.

ORGANIZATION_USAGE ACCOUNT_USAGE

QUERY_ACCELERATION_HISTORY

Sem servidor

Créditos consumidos pelo Query Acceleration Service.

ACCOUNT_USAGE

REPLICATION_USAGE_HISTORY

Sem servidor

Créditos consumidos e número de bytes transferidos durante a replicação do banco de dados. Se possível, use a exibição DATABASE_REPLICATION_USAGE_HISTORY em vez disso.

ORGANIZATION_USAGE ACCOUNT_USAGE

REPLICATION_GROUP_USAGE_ HISTORY

Sem servidor

Créditos consumidos e número de bytes transferidos durante a replicação para um grupo de replicação específico.

ACCOUNT_USAGE

SEARCH_OPTIMIZATION_HISTORY

Sem servidor

Créditos consumidos pelo serviço de otimização de pesquisa.

ACCOUNT_USAGE

SERVERLESS_TASK_HISTORY

Sem servidor

Créditos consumidos por tarefas.

ACCOUNT_USAGE

SNOWPIPE_STREAMING_FILE_ MIGRATION_HISTORY

Sem servidor

Créditos consumidos pela computação do Snowpipe Streaming (não inclui os custos do cliente).

ACCOUNT_USAGE

USAGE_IN_CURRENCY_DAILY

Warehouses

Sem servidor

Serviços de nuvem

O consumo diário de crédito por todos os recursos de computação junto com o custo desse uso na moeda da organização.

ORGANIZATION_USAGE

WAREHOUSE_METERING_HISTORY

Warehouses

Serviços de nuvem

Uso de crédito por hora de cada warehouse, incluindo o custo dos serviços de nuvem associados à utilização do warehouse.

ORGANIZATION_USAGE ACCOUNT_USAGE

Nota

As exibições e funções de tabela do Snowflake Information Schema também fornecem dados de uso relacionados ao custo. Embora o esquema ACCOUNT_USAGE seja preferido, o Information Schema pode ser mais rápido em algumas circunstâncias.

Consultas de exemplo

As consultas a seguir se aprofundam nos dados das exibições ACCOUNT_USAGE para obter informações sobre os custos de computação.

Nota

As consultas executadas em exibições no esquema do Account Usage podem ser modificadas para obter uma visão do custo para toda a organização, utilizando a exibição correspondente no esquema de Organization Usage. Por exemplo, ambos os esquemas incluem uma exibição WAREHOUSE_METERING_HISTORY.

Clique no nome de uma consulta abaixo para ver o exemplo completo de SQL.

Computação para warehouses
Computação para serviços de nuvem
Computação de Clustering automático
Computação para otimização de pesquisa
Computação para exibições materializadas
Computação por Query Acceleration Service
Computação para Snowpipe
Custos de computação e de cliente para Snowpipe Streaming
Computação por tarefas
Computação para replicação
Computação para ferramentas de parceiros

Computação para warehouses

Consulta: Média por hora de gasto do Snowflake (em todos os warehouses) durante os últimos m dias

Esta consulta mostra o consumo total de crédito por hora para ajudar a entender as tendências de consumo (picos, vales) ao longo dos últimos m dias. Isto ajuda a identificar as horas do dia em que há picos no consumo.

SELECT start_time,
  warehouse_name,
  credits_used_compute
FROM snowflake.account_usage.warehouse_metering_history
WHERE start_time >= DATEADD(day, -m, CURRENT_TIMESTAMP())
  AND warehouse_id > 0  -- Skip pseudo-VWs such as "CLOUD_SERVICES_ONLY"
ORDER BY 1 DESC, 2;

-- by hour
SELECT DATE_PART('HOUR', start_time) AS start_hour,
  warehouse_name,
  AVG(credits_used_compute) AS credits_used_compute_avg
FROM snowflake.account_usage.warehouse_metering_history
WHERE start_time >= DATEADD(day, -m, CURRENT_TIMESTAMP())
  AND warehouse_id > 0  -- Skip pseudo-VWs such as "CLOUD_SERVICES_ONLY"
GROUP BY 1, 2
ORDER BY 1, 2;
Copy
Consulta: Consumo de crédito por warehouse durante um período específico

Esta consulta mostra o consumo total de crédito para cada warehouse durante um período específico. Isto ajuda a identificar os warehouses que estão consumindo mais créditos do que outros e warehouses específicos que estão consumindo mais créditos do que o previsto.

-- Credits used (all time = past year)
SELECT warehouse_name,
  SUM(credits_used_compute) AS credits_used_compute_sum
FROM snowflake.account_usage.warehouse_metering_history
GROUP BY 1
ORDER BY 2 DESC;

-- Credits used (past N days/weeks/months)
SELECT warehouse_name,
  SUM(credits_used_compute) AS credits_used_compute_sum
FROM snowflake.account_usage.warehouse_metering_history
WHERE start_time >= DATEADD(day, -m, CURRENT_TIMESTAMP())
GROUP BY 1
ORDER BY 2 DESC;
Copy
Consulta: Uso do warehouse acima da média de m dias

Esta consulta retorna o consumo médio diário de crédito agrupado por semana e por warehouse. Ele pode ser usado para identificar anomalias no consumo de crédito para warehouses por semanas a partir do ano passado.

WITH cte_date_wh AS (
  SELECT TO_DATE(start_time) AS start_date,
    warehouse_name,
    SUM(credits_used) AS credits_used_date_wh
  FROM snowflake.account_usage.warehouse_metering_history
  GROUP BY start_date, warehouse_name
)

SELECT start_date,
  warehouse_name,
  credits_used_date_wh,
  AVG(credits_used_date_wh) OVER (PARTITION BY warehouse_name ORDER BY start_date ROWS m PRECEDING) AS credits_used_m_day_avg,
  100.0*((credits_used_date_wh / credits_used_m_day_avg) - 1) AS pct_over_to_m_day_average
FROM cte_date_wh
  QUALIFY credits_used_date_wh > 100  -- Minimum N=100 credits
    AND pct_over_to_m_day_average >= 0.5  -- Minimum 50% increase over past m day average
ORDER BY pct_over_to_m_day_average DESC;
Copy

Computação para serviços de nuvem

Consulta: serviços de nuvem faturados

O uso de serviços de nuvem é cobrado somente se o consumo diário dos serviços de nuvem exceder 10% do uso diário de warehouses virtuais. Esta consulta retorna quanto do consumo de serviços de nuvem foi realmente cobrado em um determinado dia, ordenado pelo valor faturado mais alto.

SELECT
    usage_date,
    credits_used_cloud_services,
    credits_adjustment_cloud_services,
    credits_used_cloud_services + credits_adjustment_cloud_services AS billed_cloud_services
FROM snowflake.account_usage.metering_daily_history
WHERE usage_date >= DATEADD(month,-1,CURRENT_TIMESTAMP())
    AND credits_used_cloud_services > 0
ORDER BY 4 DESC;
Copy
Consulta: custo total dos serviços de nuvem por tipo de consulta

Esta consulta retorna o total de créditos consumidos para serviços de nuvem por um determinado tipo de consulta.

SELECT query_type,
  SUM(credits_used_cloud_services) AS cs_credits,
  COUNT(1) num_queries
FROM snowflake.account_usage.query_history
WHERE true
  AND start_time >= TIMESTAMPADD(day, -1, CURRENT_TIMESTAMP)
GROUP BY 1
ORDER BY 2 DESC
LIMIT 10;
Copy
Consulta: custo dos serviços de nuvem para consultas de um determinado tipo

Esta consulta retorna o total de créditos consumidos para serviços de nuvem por todas as consultas de um tipo específico. Substitua 'COPY' se você quiser se concentrar em um tipo diferente de consulta e day se você quiser explorar um período mais longo ou mais curto.

SELECT *
FROM snowflake.account_usage.query_history
WHERE true
  AND start_time >= TIMESTAMPADD(day, -1, CURRENT_TIMESTAMP)
  AND query_type = 'COPY'
ORDER BY credits_used_cloud_services DESC
LIMIT 10;
Copy
Consulta: Warehouses com alto uso de serviços de nuvem

Esta consulta mostra os warehouses que não estão usando tempo suficiente para cobrir a parte de computação dos serviços de nuvem. Isto proporciona um ponto de partida para investigações adicionais, isolando warehouses com uma alta taxa de uso de serviços de nuvem (>10% dos créditos totais). Os candidatos à investigação incluem problemas com clonagem, listagem de arquivos em S3, ferramentas de parceiros, definição de parâmetros de sessão etc.

SELECT
  warehouse_name,
  SUM(credits_used) AS credits_used,
  SUM(credits_used_cloud_services) AS credits_used_cloud_services,
  SUM(credits_used_cloud_services)/SUM(credits_used) AS percent_cloud_services
FROM snowflake.account_usage.warehouse_metering_history
WHERE TO_DATE(start_time) >= DATEADD(month,-1,CURRENT_TIMESTAMP())
    AND credits_used_cloud_services > 0
GROUP BY 1
ORDER BY 4 DESC;
Copy
Consulta: utilização de serviços de nuvem ordenados por parte do tempo de consulta

Esta consulta retorna todas as consultas executadas no último minuto e as ordena por partes do tempo total de execução da consulta (por exemplo, tempo de compilação vs. tempo de espera em fila).

SELECT *
FROM snowflake.account_usage.query_history
WHERE true
  AND start_time >= TIMESTAMPADD(minute, -60, CURRENT_TIMESTAMP)
ORDER BY compilation_time DESC,
  execution_time DESC,
  list_external_files_time DESC,
  queued_overload_time DESC,
  credits_used_cloud_services DESC
LIMIT 10;
Copy

Computação de Clustering automático

Consulta: Histórico de custos de Clustering automático (por dia, por objeto)

Esta consulta fornece uma lista de tabelas com Clustering automático e o volume de créditos consumidos através do serviço nos últimos 30 dias, separados por dia. Qualquer irregularidade no consumo do crédito ou consumo consistentemente alto são sinais para investigações adicionais.

SELECT TO_DATE(start_time) AS date,
  database_name,
  schema_name,
  table_name,
  SUM(credits_used) AS credits_used
FROM snowflake.account_usage.automatic_clustering_history
WHERE start_time >= DATEADD(month,-1,CURRENT_TIMESTAMP())
GROUP BY 1,2,3,4
ORDER BY 5 DESC;
Copy
Consulta: Histórico de Clustering automático e média de m dias

Esta consulta mostra a média de créditos diários consumidos pelo Clustering automático agrupados por semana durante o último ano. Ela pode ajudar a identificar anomalias nas médias diárias ao longo do ano, assim você pode investigar mais a fundo os picos ou mudanças inesperadas no consumo.

WITH credits_by_day AS (
  SELECT TO_DATE(start_time) AS date,
    SUM(credits_used) AS credits_used
  FROM snowflake.account_usage.automatic_clustering_history
  WHERE start_time >= DATEADD(year,-1,CURRENT_TIMESTAMP())
  GROUP BY 1
  ORDER BY 2 DESC
)

SELECT DATE_TRUNC('week',date),
      AVG(credits_used) AS avg_daily_credits
FROM credits_by_day
GROUP BY 1
ORDER BY 1;
Copy

Computação para otimização de pesquisa

Consulta: Histórico de custos de otimização de pesquisa (por dia, por objeto)

Esta consulta fornece uma lista completa de tabelas com otimização de pesquisa e o volume de créditos consumidos através do serviço durante os últimos 30 dias, separados por dia. Qualquer irregularidade no consumo do crédito ou consumo consistentemente alto são sinais para investigações adicionais.

SELECT TO_DATE(start_time) AS date,
  database_name,
  schema_name,
  table_name,
  SUM(credits_used) AS credits_used
FROM snowflake.account_usage.search_optimization_history
WHERE start_time >= DATEADD(month,-1,CURRENT_TIMESTAMP())
GROUP BY 1,2,3,4
ORDER BY 5 DESC;
Copy
Consulta: Histórico de otimização de pesquisa e média de m dias

Esta consulta mostra a média de créditos diários consumidos pela otimização de pesquisa agrupados por semana durante o último ano. Ela pode ajudar a identificar anomalias nas médias diárias ao longo do ano, assim você pode investigar mais a fundo os picos ou mudanças inesperadas no consumo.

WITH credits_by_day AS (
  SELECT TO_DATE(start_time) AS date,
    SUM(credits_used) AS credits_used
  FROM snowflake.account_usage.search_optimization_history
  WHERE start_time >= DATEADD(year,-1,CURRENT_TIMESTAMP())
  GROUP BY 1
  ORDER BY 2 DESC
)

SELECT DATE_TRUNC('week', date),
  AVG(credits_used) as avg_daily_credits
FROM credits_by_day
GROUP BY 1
ORDER BY 1;
Copy

Computação para exibições materializadas

Consulta: Histórico de custos das exibições materializadas (por dia, por objeto)

Esta consulta fornece uma lista completa de exibições materializadas e o volume de créditos consumidos através do serviço durante os últimos 30 dias, separados por dia. Qualquer irregularidade no consumo do crédito ou consumo consistentemente alto são sinais para investigações adicionais.

SELECT TO_DATE(start_time) AS date,
  database_name,
  schema_name,
  table_name,
  SUM(credits_used) AS credits_used
FROM snowflake.account_usage.materialized_view_refresh_history
WHERE start_time >= DATEADD(month,-1,CURRENT_TIMESTAMP())
GROUP BY 1,2,3,4
ORDER BY 5 DESC;
Copy
Consulta: Histórico de exibições materializadas e média de m dias

Esta consulta mostra a média de créditos diários consumidos pelas exibições materializadas agrupados por semana durante o último ano. Ela pode ajudar a identificar anomalias nas médias diárias ao longo do ano, assim você pode investigar mais a fundo os picos ou mudanças inesperadas no consumo.

WITH credits_by_day AS (
  SELECT TO_DATE(start_time) AS date,
    SUM(credits_used) AS credits_used
  FROM snowflake.account_usage.materialized_view_refresh_history
  WHERE start_time >= DATEADD(year,-1,CURRENT_TIMESTAMP())
  GROUP BY 1
  ORDER BY 2 DESC
)

SELECT DATE_TRUNC('week',date),
  AVG(credits_used) AS avg_daily_credits
FROM credits_by_day
GROUP BY 1
ORDER BY 1;
Copy

Computação por Query Acceleration Service

Consulta: Custo do Query Acceleration Service por warehouse

Esta consulta retorna o número total de créditos utilizados por cada warehouse em sua conta para o Query Acceleration Service (mês até a data):

SELECT warehouse_name,
       SUM(credits_used) AS total_credits_used
  FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_HISTORY
  WHERE start_time >= DATE_TRUNC(month, CURRENT_DATE)
  GROUP BY 1
  ORDER BY 2 DESC;
Copy

Computação para Snowpipe e Snowpipe Streaming

Consulta: Uso cumulativo de entrada de dados (Snowpipe e “Cópia”)

Esta consulta retorna um resumo diário acumulado de todos os carregamentos para cada tabela no Snowflake mostrando o tamanho médio do arquivo, o total de linhas, o volume total e o método de ingestão (cópia ou Snowpipe). Se o tamanho do arquivo for muito pequeno ou grande para uma ingestão ideal, pode ser necessária uma investigação/otimização adicional. Ao mapear o volume para o consumo de crédito, é possível determinar quais tabelas estão consumindo mais créditos por TB carregado.

SELECT TO_DATE(last_load_time) AS load_date,
  status,
  table_catalog_name AS database_name,
  table_schema_name AS schema_name,
  table_name,
  CASE
    WHEN pipe_name IS NULL THEN 'COPY'
    ELSE 'SNOWPIPE'
  END AS ingest_method,
  SUM(row_count) AS row_count,
  SUM(row_parsed) AS rows_parsed,
  AVG(file_size) AS avg_file_size_bytes,
  SUM(file_size) AS total_file_size_bytes,
  SUM(file_size)/POWER(1024,1) AS total_file_size_kb,
  SUM(file_size)/POWER(1024,2) AS total_file_size_mb,
  SUM(file_size)/POWER(1024,3) AS total_file_size_gb,
  SUM(file_size)/POWER(1024,4) AS total_file_size_tb
FROM snowflake.account_usage.copy_history
GROUP BY 1,2,3,4,5,6
ORDER BY 3,4,5,1,2;
Copy
Consulta: Histórico de custo do Snowpipe (por dia, por objeto)

Esta consulta fornece uma lista completa de canais e o volume de créditos consumidos através do serviço durante os últimos 30 dias, separados por dia. Qualquer irregularidade no consumo do crédito ou consumo consistentemente alto são sinais para investigações adicionais.

SELECT TO_DATE(start_time) AS date,
  pipe_name,
  SUM(credits_used) AS credits_used
FROM snowflake.account_usage.pipe_usage_history
WHERE start_time >= DATEADD(month,-1,CURRENT_TIMESTAMP())
GROUP BY 1,2
ORDER BY 3 DESC;
Copy
Consulta: Histórico do Snowpipe e média de m dias

Esta consulta mostra a média de créditos diários consumidos pelo Snowpipe agrupados por semana durante o último ano. Ela pode ajudar a identificar anomalias nas médias diárias ao longo do ano, assim você pode investigar mais a fundo os picos ou mudanças inesperadas no consumo.

WITH credits_by_day AS (
  SELECT TO_DATE(start_time) AS date,
    SUM(credits_used) AS credits_used
  FROM snowflake.account_usage.pipe_usage_history
  WHERE start_time >= DATEADD(year,-1,CURRENT_TIMESTAMP())
  GROUP BY 1
  ORDER BY 2 DESC
)

SELECT DATE_TRUNC('week',date),
  AVG(credits_used) AS avg_daily_credits
FROM credits_by_day
GROUP BY 1
ORDER BY 1;
Copy
Consulta: Custo total do Snowpipe Streaming

Esta consulta lista o uso de crédito atual para o Snowpipe Streaming, incluindo custos de computação e de cliente do Snowpipe Streaming.

SELECT start_time,
  end_time,
  SUM(credits_used) AS total_credits,
  name,
  IFF(CONTAINS(name,':'),'streaming client cost', 'streaming compute cost') AS streaming_cost_type
FROM SNOWFLAKE.ACCOUNT_USAGE.METERING_HISTORY
WHERE service_type ='SNOWPIPE_STREAMING'
GROUP BY ALL;
Copy

Computação por tarefas

Consulta: Custo total da tarefa

Esta consulta lista o uso atual de crédito para todas as tarefas sem servidor:

SELECT start_time,
  end_time,
  task_id,
  task_name,
  credits_used,
  schema_id,
  schema_name,
  database_id,
  database_name
FROM snowflake.account_usage.serverless_task_history
ORDER BY start_time, task_id;
Copy

Computação para replicação

Consulta: Custo da replicação da conta

Esta consulta lista os créditos usados por um grupo de replicação ou failover para replicação de conta no mês corrente:

SELECT start_time, 
  end_time, 
  replication_group_name, 
  credits_used, 
  bytes_transferred
FROM snowflake.account_usage.replication_group_usage_history
WHERE start_time >= DATE_TRUNC('month', CURRENT_DATE());
Copy
Consulta: Histórico de custos de replicação de banco de dados (por dia, por objeto)

Esta consulta fornece uma lista completa de bancos de dados replicados e o volume de créditos consumidos através do serviço de replicação nos últimos 30 dias, separados por dia. Qualquer irregularidade no consumo do crédito ou consumo consistentemente alto são sinais para investigações adicionais.

SELECT TO_DATE(start_time) AS date,
  database_name,
  SUM(credits_used) AS credits_used
FROM snowflake.account_usage.database_replication_usage_history
WHERE start_time >= DATEADD(month,-1,CURRENT_TIMESTAMP())
GROUP BY 1,2
ORDER BY 3 DESC;
Copy
Consulta: Histórico da replicação de banco de dados e média de m dias

Esta consulta mostra a média de créditos diários consumidos pela replicação agrupados por semana durante o último ano. Isto ajuda a identificar quaisquer anomalias na média diária, de maneira que você pode investigar quaisquer picos ou mudanças no consumo.

WITH credits_by_day AS (
  SELECT TO_DATE(start_time) AS date,
    SUM(credits_used) AS credits_used
  FROM snowflake.account_usage.database_replication_usage_history
  WHERE start_time >= DATEADD(year,-1,CURRENT_TIMESTAMP())
  GROUP BY 1
  ORDER BY 2 DESC
)

SELECT DATE_TRUNC('week',date),
  AVG(credits_used) AS avg_daily_credits
FROM credits_by_day
GROUP BY 1
ORDER BY 1;
Copy

Computação para ferramentas de parceiros

Consulta: Consumo de crédito por ferramentas de parceiros

Esta consulta identifica quais das ferramentas/soluções do parceiro do Snowflake (por exemplo, BI, ETL etc.) estão consumindo o maior número de créditos. Isto pode ajudar a identificar soluções de parceiros que estão consumindo mais créditos do que o previsto, o que pode ser um ponto de partida para investigações adicionais.

-- This Is Approximate Credit Consumption By Client Application
WITH
  client_hour_execution_cte AS (
    SELECT
      CASE
        WHEN client_application_id LIKE 'Go %' THEN 'Go'
        WHEN client_application_id LIKE 'Snowflake UI %' THEN 'Snowflake UI'
        WHEN client_application_id LIKE 'SnowSQL %' THEN 'SnowSQL'
        WHEN client_application_id LIKE 'JDBC %' THEN 'JDBC'
        WHEN client_application_id LIKE 'PythonConnector %' THEN 'Python'
        WHEN client_application_id LIKE 'ODBC %' THEN 'ODBC'
        ELSE 'NOT YET MAPPED: ' || CLIENT_APPLICATION_ID
      END AS client_application_name,
      warehouse_name,
      DATE_TRUNC('hour',start_time) AS start_time_hour,
      SUM(execution_time)  AS client_hour_execution_time
    FROM snowflake.account_usage.query_history qh
      JOIN snowflake.account_usage.sessions se
        ON se.session_id = qh.session_id
    WHERE warehouse_name IS NOT NULL
      AND execution_time > 0
      AND start_time > DATEADD(month,-1,CURRENT_TIMESTAMP())
    GROUP BY 1,2,3
  ),
  hour_execution_cte AS (
    SELECT start_time_hour,
      warehouse_name,
      SUM(client_hour_execution_time) AS hour_execution_time
    FROM client_hour_execution_cte
    GROUP BY 1,2
  ),
  approximate_credits AS (
    SELECT A.client_application_name,
      C.warehouse_name,
      (A.client_hour_execution_time/B.hour_execution_time)*C.credits_used AS approximate_credits_used
    FROM client_hour_execution_cte A
      JOIN hour_execution_cte B
        ON A.start_time_hour = B.start_time_hour and B.warehouse_name = A.warehouse_name
      JOIN snowflake.account_usage.warehouse_metering_history C
        ON C.warehouse_name = A.warehouse_name AND C.start_time = A.start_time_hour
  )

SELECT client_application_name,
  warehouse_name,
  SUM(approximate_credits_used) AS approximate_credits_used
FROM approximate_credits
GROUP BY 1,2
ORDER BY 3 DESC;
Copy