Account Usage

No banco de dados SNOWFLAKE, os esquemas ACCOUNT_USAGE e READER_ACCOUNT_USAGE permitem consultar metadados de objetos, bem como dados históricos de uso, para sua conta e todas as contas de leitor (se houver) associadas à conta.

Neste tópico:

Visão geral dos esquemas Account Usage

ACCOUNT_USAGE:

Exibições que mostram metadados de objetos e métricas de uso para sua conta.

Em geral, essas exibições espelham as exibições e funções de tabela correspondentes no Snowflake Snowflake Information Schema, mas com as seguintes diferenças:

  • Registros de objetos descartados incluídos em cada exibição.

  • Maior tempo de retenção para dados históricos de uso.

  • Latência de dados.

Para obter mais detalhes, consulte Diferenças entre Account Usage e Information Schema (neste tópico). Para obter mais detalhes sobre cada exibição, consulte Exibições do ACCOUNT_USAGE (neste tópico).

READER_ACCOUNT_USAGE:

Exibições que mostram metadados de objetos e métricas de uso para todas as contas de leitor que foram criadas para sua conta (como um provedor de Secure Data Sharing).

Essas exibições são um pequeno subconjunto das exibições do ACCOUNT_USAGE que se aplicam às contas de leitor, com exceção da exibição RESOURCE_MONITORS, que está disponível apenas no READER_ACCOUNT_USAGE. Além disso, cada exibição neste esquema contém uma coluna adicional READER_ACCOUNT_NAME para filtrar os resultados por conta de leitor.

Para obter mais detalhes sobre cada exibição, consulte Exibições do READER_ACCOUNT_USAGE (neste tópico).

Observe que essas exibições ficam vazias se nenhuma conta de leitor tiver sido criada para sua conta.

Diferenças entre Account Usage e Information Schema

As exibições do Account Usage e as exibições correspondentes (ou funções de tabela) no Snowflake Information Schema utilizam estruturas e convenções de nomenclatura idênticas, mas com algumas diferenças importantes, como descrito nesta seção:

Diferença

Account Usage

Information Schema

Inclui objetos descartados

Sim

Não

Latência dos dados

De 45 minutos a 3 horas (varia de acordo com a exibição)

Nenhum

Retenção de dados históricos

1 ano

De 7 dias a 6 meses (varia de acordo com a exibição/função de tabela)

Para obter mais detalhes, consulte as seções seguintes.

Registros de objetos descartados

Exibições do Account Usage incluem registros para todos os objetos que foram descartados. Muitas das exibições para tipos de objetos contêm uma coluna adicional DELETED que exibe o carimbo de data/hora em que o objeto foi descartado.

Além disso, como os objetos podem ser descartados e recriados com o mesmo nome, para diferenciar os registros de objetos que têm o mesmo nome, as exibições do Account Usage incluem colunas de ID, quando apropriado, que exibem as IDs internas geradas e atribuídas a cada registro pelo sistema.

Se uma coluna para um nome de objeto (por exemplo, a coluna TABLE_NAME) é NULL, esse objeto foi descartado. Neste caso, as colunas para os nomes e IDs dos objetos pai (por exemplo, as colunas DATABASE_NAME e SCHEMA_NAME) também são NULL.

Observe que em algumas exibições, a coluna para o nome do objeto ainda pode conter o nome do objeto, mesmo que o objeto tenha sido descartado.

Latência dos dados

Devido ao processo de extração dos dados do armazenamento interno de metadados do Snowflake, as exibições do Account Usage têm alguma latência natural:

  • Para a maioria das exibições, a latência é de 2 horas (120 minutos).

  • Para as demais exibições, a latência varia entre 45 minutos e 3 horas.

Para obter mais detalhes, consulte a lista de exibições para cada esquema (neste tópico). Observe também que todos estes são períodos máximos de tempo; a latência real para uma determinada exibição quando a exibição é consultada pode ser menor.

Em contraste, as exibições/funções de tabela no Snowflake Information Schema não têm latência.

Retenção de dados históricos

Algumas exibições de Account Usage fornecem métricas históricas de uso. O período de retenção para essas exibições é 1 ano (365 dias).

Em contraste, as exibições e funções de tabela correspondentes no Snowflake Information Schema têm períodos de retenção muito mais curtos, variando de 7 dias a 6 meses, dependendo da exibição.

Exibições de ACCOUNT_USAGE

O esquema ACCOUNT_USAGE contém as seguintes exibições:

Exibição

Tipo

Latência [1]

Edição [3]

Notas

ACCESS_HISTORY

Histórico

3 horas

Enterprise Edition (ou superior)

Dados retidos por 1 ano.

AGGREGATE_ACCESS_HISTORY

Histórico

3 horas

Enterprise Edition (ou superior)

Dados retidos por 1 ano.

AGGREGATE_QUERY_HISTORY

Histórico

3 horas

AGGREGATION_POLICIES

Objeto

2 horas

ALERT_HISTORY

Histórico

3 horas

Dados retidos por 1 ano.

AUTOMATIC_CLUSTERING_HISTORY

Histórico

3 horas

Dados retidos por 1 ano.

CLASS_INSTANCES

Objeto

3 horas

Dados retidos por 1 ano.

CLASSES

Objeto

3 horas

Dados retidos por 1 ano.

COLUMNS

Objeto

90 minutos

COMPLETE_TASK_GRAPHS

Histórico

45 minutos

Dados retidos por 1 ano.

COPY_HISTORY

Histórico

2 horas [2]

Dados retidos por 1 ano.

DATA_CLASSIFICATION_LATEST

Objeto

3 horas

Enterprise Edition (ou superior)

Dados retidos enquanto a tabela existir.

DATABASES

Objeto

3 horas

DATABASE_REPLICATION_USAGE_HISTORY

Histórico

3 horas

Dados retidos por 1 ano.

DATABASE_STORAGE_USAGE_HISTORY

Histórico

3 horas

Dados retidos por 1 ano.

DATA_TRANSFER_HISTORY

Histórico

2 horas

Dados retidos por 1 ano.

ELEMENT_TYPES

Objeto

90 minutos

EVENT_USAGE_HISTORY

Histórico

3 horas

Dados retidos por 1 ano.

EXTERNAL_ACCESS_HISTORY

Histórico

2 horas

Dados retidos por 1 ano.

FIELDS

Objeto

90 minutos

FILE_FORMATS

Objeto

2 horas

FUNCTIONS

Objeto

2 horas

GRANTS_TO_ROLES

Objeto

2 horas

GRANTS_TO_USERS

Objeto

2 horas

HYBRID_TABLES

Objeto

3 horas

HYBRID_TABLE_USAGE_HISTORY

Histórico

3 horas

Dados retidos por 1 ano.

INDEX_COLUMNS

Objeto

3 horas

INDEXES

Objeto

3 horas

LOAD_HISTORY

Histórico

90 minutos [2]

Dados retidos por 1 ano.

LOCK_WAIT_HISTORY

Histórico

3 horas

Dados retidos por 1 ano.

LOGIN_HISTORY

Histórico

2 horas

Dados retidos por 1 ano.

MASKING_POLICIES

Objeto

2 horas

MATERIALIZED_VIEW_REFRESH_HISTORY

Histórico

3 horas

Enterprise Edition (ou superior)

Dados retidos por 1 ano.

METERING_DAILY_HISTORY

Histórico

3 horas

Dados retidos por 1 ano.

METERING_HISTORY

Histórico

3 horas

Dados retidos por 1 ano.

NETWORK_POLICIES

Objeto

2 horas

NETWORK_RULE_REFERENCES

Objeto

2 horas

NETWORK_RULES

Objeto

2 horas

OBJECT_DEPENDENCIES

Histórico

3 horas

PASSWORD_POLICIES

Objeto

2 horas

PIPES

Objeto

2 horas

PIPE_USAGE_HISTORY

Histórico

3 horas

Dados retidos por 1 ano.

POLICY_REFERENCES

Objeto

2 horas

PROCEDURES

Objeto

2 horas

PROJECTION_POLICIES

Objeto

2 horas

QUERY_ACCELERATION_ELIGIBLE

Histórico

3 horas

Enterprise Edition (ou superior)

Dados retidos por 1 ano.

QUERY_ACCELERATION_HISTORY

Histórico

3 horas

Dados retidos por 1 ano.

QUERY_HISTORY

Histórico

45 minutos

Dados retidos por 1 ano.

REFERENTIAL_CONSTRAINTS

Objeto

2 horas

REPLICATION_GROUP_REFRESH_HISTORY

Histórico

3 horas

Dados retidos por 1 ano.

REPLICATION_GROUP_USAGE_HISTORY

Histórico

3 horas

Dados retidos por 1 ano.

REPLICATION_USAGE_HISTORY

Histórico

3 horas

Dados retidos por 1 ano.

ROLES

Objeto

2 horas

ROW_ACCESS_POLICIES

Objeto

2 horas

SCHEMATA

Objeto

2 horas

SEARCH_OPTIMIZATION_HISTORY

Histórico

3 horas

Enterprise Edition (ou superior)

Dados retidos por 1 ano.

SEQUENCES

Objeto

2 horas

SERVERLESS_TASK_HISTORY

Histórico

3 horas

Dados retidos por 1 ano.

SERVICES

Objeto

3 horas

Dados retidos por 1 ano.

SESSION_POLICIES

Objeto

2 horas

SESSIONS

Histórico

3 horas

Dados retidos por 1 ano.

SNOWPARK_CONTAINER_SERVICES_HISTORY

Histórico

3 horas

Dados retidos por 1 ano.

SNOWPIPE_STREAMING_CLIENT_HISTORY

Histórico

2 horas

Dados retidos por 1 ano.

SNOWPIPE_STREAMING_FILE_MIGRATION_HISTORY

Histórico

12 horas

Dados retidos por 1 ano.

STAGES

Objeto

2 horas

STAGE_STORAGE_USAGE_HISTORY

Histórico

2 horas

Dados retidos por 1 ano.

STORAGE_USAGE

Histórico

2 horas

Utilização combinada em todas as tabelas do banco de dados e estágios internos. Dados retidos por 1 ano.

TABLES

Objeto

90 minutos

TABLE_CONSTRAINTS

Objeto

2 horas

TABLE_STORAGE_METRICS

Objeto

90 minutos

TAG_REFERENCES

Objeto

2 horas

TAGS

Objeto

2 horas

TASK_HISTORY

Histórico

45 minutos

TASK_VERSIONS

Objeto

3 horas

USERS

Objeto

2 horas

VIEWS

Objeto

90 minutos

WAREHOUSE_EVENTS_HISTORY

Histórico

3 horas

Dados retidos por 1 ano.

WAREHOUSE_LOAD_HISTORY

Histórico

3 horas

Dados retidos por 1 ano.

WAREHOUSE_METERING_HISTORY

Histórico

3 horas

Dados retidos por 1 ano.

[1] Todos os tempos de latência são aproximados; em alguns casos, a latência real pode ser menor.

[2] A latência das exibições de uma determinada tabela pode ser de até 2 dias se ambas as condições a seguir forem verdadeiras: 1. Menos de 32 instruções DML foram adicionadas à tabela fornecida desde a última atualização em LOAD_HISTORY ou COPY_HISTORY. 2. Menos de 100 linhas foram adicionadas à tabela fornecida desde a última atualização em LOAD_HISTORY ou COPY_HISTORY.

[3] A menos que seja observado o contrário, a exibição do Account Usage está disponível para todas as contas.

Funções de tabela do Account Usage

Atualmente, o Snowflake oferece suporte a uma função de tabela ACCOUNT_USAGE:

Função de tabela

Retenção de dados

Notas

TAG_REFERENCES_WITH_LINEAGE

N/A

Os resultados retornam apenas para a função que tem acesso ao objeto especificado.

Nota

Assim como nas exibições do Account Usage, considere a latência ao chamar esta função de tabela. A latência esperada para esta função de tabela é semelhante à latência para a exibição TAG_REFERENCES.

Exibições de READER_ACCOUNT_USAGE

O esquema READER_ACCOUNT_USAGE contém as seguintes exibições:

Exibição

Tipo

Latência [1]

Notas

LOGIN_HISTORY

Histórico

2 horas

Dados retidos por 1 ano.

QUERY_HISTORY

Histórico

45 minutos

Dados retidos por 1 ano.

RESOURCE_MONITORS

Objeto

2 horas

STORAGE_USAGE

Histórico

2 horas

Utilização combinada em todas as tabelas do banco de dados e estágios internos. Dados retidos por 1 ano.

WAREHOUSE_METERING_HISTORY

Histórico

3 horas

Dados retidos por 1 ano.

[1] Todos os tempos de latência são aproximados; em alguns casos, a latência real pode ser menor.

Habilitação do uso do banco de dados SNOWFLAKE para outras funções

Por padrão, o banco de dados SNOWFLAKE fica visível para todos os usuários, mas o acesso aos esquemas nesse banco de dados pode ser concedido por um usuário com a função ACCOUNTADMIN usando uma das seguintes abordagens:

Importante

Seja cuidadoso ao conceder privilégios ao banco de dados SNOWFLAKE em uma conta que tenha a função ORGADMIN habilitada. Dentro dessa conta, qualquer pessoa com privilégios para o banco de dados SNOWFLAKE pode acessar o esquema ORGANIZATION_USAGE.

Para evitar a concessão involuntária de acesso aos dados no nível de organização, considere o uso de funções de banco de dados SNOWFLAKE para conceder acesso às exibições no esquema ACCOUNT_USAGE.

Para obter mais informações, consulte GRANT DATABASE ROLE.

Por exemplo, para conceder IMPORTED PRIVILEGES no banco de dados SNOWFLAKE a duas funções adicionais:

USE ROLE ACCOUNTADMIN;

GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE TO ROLE SYSADMIN;
GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE TO ROLE customrole1;
Copy

Um usuário com a função customrole1 pode consultar uma exibição da seguinte maneira:

USE ROLE customrole1;

SELECT database_name, database_owner FROM SNOWFLAKE.ACCOUNT_USAGE.DATABASES;
Copy

Para exemplos adicionais, consulte Consulta das exibições do Account Usage.

Esquema ACCOUNT_USAGE Funções do banco de dados SNOWFLAKE

Além disso, você pode conceder um controle mais preciso às contas usando as funções do banco de dados SNOWFLAKE. Para obter mais informações nas funções do banco de dados, consulte funções do banco de dados.

Os esquemas ACCOUNT_USAGE têm quatro funções de banco de dados SNOWFLAKE definidas, cada uma concedendo o privilégio SELECT em exibições específicas.

Função

Objetivo e descrição

OBJECT_VIEWER

A função OBJECT_VIEWER dá visibilidade aos metadados do objeto.

USAGE_VIEWER

A função USAGE_VIEWER dá visibilidade às informações históricas de uso.

GOVERNANCE_VIEWER

A função GOVERNANCE_VIEWER dá visibilidade às informações relacionadas às políticas.

SECURITY_VIEWER

A função SECURITY_VIEWER dá visibilidade às informações baseadas em segurança.

Exibições do ACCOUNT_USAGE por função do banco de dados

As funções OBJECT_VIEWER, USAGE_VIEWER, GOVERNANCE_VIEWER e SECURITY_VIEWER têm o privilégio SELECT de consultar as exibições de Account Usage no banco de dados compartilhado SNOWFLAKE.

Uma marca de verificação (ou seja, ✔) indica que a função tem o privilégio SELECT na exibição.

Exibição

Função OBJECT_VIEWER

Função USAGE_VIEWER

Função GOVERNANCE_VIEWER

Função SECURITY_VIEWER

Exibição COLUMNS

Exibição COMPLETE_TASK_GRAPHS

Exibição DATABASES

Exibição ELEMENT_TYPES

Exibição FIELDS

Exibição FILE_FORMATS

Exibição FUNCTIONS

Exibição HYBRID_TABLES

Exibição INDEXES

Exibição INDEX_COLUMNS

Exibição OBJECT_DEPENDENCIES

Exibição PIPES

Exibição REFERENTIAL_CONSTRAINTS

Exibição SCHEMATA

Exibição SEQUENCES

Exibição STAGES

Exibição TABLE_CONSTRAINTS

Exibição TABLES

Exibição TAGS

Exibição VIEWS

Exibição AUTOMATIC_CLUSTERING_HISTORY

Exibição CLASS_INSTANCES

Exibição CLASSES

Exibição COPY_HISTORY

Exibição DATA_TRANSFER_HISTORY

Exibição DATABASE_STORAGE_USAGE_HISTORY

Exibição EVENT_USAGE_HISTORY

Exibição EXTERNAL_ACCESS_HISTORY

Exibição HYBRID_TABLE_USAGE_HISTORY

Exibição LOAD_HISTORY

Exibição MATERIALIZED_VIEW_REFRESH_HISTORY

Exibição METERING_DAILY_HISTORY

Exibição METERING_HISTORY

Exibição PIPE_USAGE_HISTORY

Exibição REPLICATION_USAGE_HISTORY

Exibição REPLICATION_GROUP_REFRESH_HISTORY

Exibição REPLICATION_GROUP_USAGE_HISTORY

Exibição SERVICES

Exibição SNOWPARK_CONTAINER_SERVICES_HISTORY

Exibição SEARCH_OPTIMIZATION_HISTORY

Exibição SERVERLESS_TASK_HISTORY

Exibição STAGE_STORAGE_USAGE_HISTORY

Exibição STORAGE_USAGE

Exibição TABLE_STORAGE_METRICS

Exibição TASK_HISTORY

Exibição WAREHOUSE_EVENTS_HISTORY

Exibição WAREHOUSE_LOAD_HISTORY

Exibição WAREHOUSE_METERING_HISTORY

Exibição ACCESS_HISTORY

Exibição AGGREGATE_ACCESS_HISTORY

Exibição AGGREGATE_QUERY_HISTORY

Exibição AGGREGATION_POLICIES

Exibição DATA_CLASSIFICATION_LATEST

Exibição MASKING_POLICIES

Exibição QUERY_ACCELERATION_ELIGIBLE

Exibição QUERY_HISTORY

Exibição POLICY_REFERENCES

Exibição PROJECTION_POLICIES

Exibição ROW_ACCESS_POLICIES

Exibição TAG_REFERENCES

Exibição GRANTS_TO_ROLES

Exibição GRANTS_TO_USERS

Exibição LOGIN_HISTORY

Exibição NETWORK_POLICIES

Exibição NETWORK_RULES

Exibição NETWORK_RULE_REFERENCES

Exibição PASSWORD_POLICIES

Exibição ROLES

Exibição SESSION_POLICIES

Exibição SESSIONS

Exibição USERS

Esquema READER_ACCOUNT_USAGE Funções do banco de dados SNOWFLAKE

A função READER_USAGE_VIEWER SNOWFLAKE do banco de dados recebe o privilégio SELECT em todas as exibições READER_ACCOUNT_USAGE. Como as contas de leitores são criadas pelos clientes, espera-se que a função READER_USAGE_VIEWER seja concedida às funções usadas para monitorar o uso das contas de leitores.

Exibição

Exibição LOGIN_HISTORY

Exibição QUERY_HISTORY

Exibição RESOURCE_MONITORS

Exibição STORAGE_USAGE

Exibição WAREHOUSE_METERING_HISTORY

Consulta das exibições do Account Usage

Esta seção inclui considerações ao consultar as exibições de Account Usage, juntamente com exemplos de consulta.

Como selecionar colunas

As exibições específicas do Snowflake estão sujeitas a mudanças. Evite selecionar todas as colunas dessas exibições. Em vez disso, selecione as colunas que você deseja. Por exemplo, se você quiser a coluna name, use SELECT name em vez de SELECT *.

Reconciliação de exibições de custos

Há várias exibições de Account Usage que contêm dados relacionados ao custo de recursos de computação, armazenamento e transferências de dados. Se estiver tentando reconciliar essas exibições com uma exibição correspondente no esquema ORGANIZATION_USAGE, primeiro será necessário definir o fuso horário da sessão como UTC.

Por exemplo, se você estiver tentando reconciliar ACCOUNT_USAGE.WAREHOUSE_METERING_HISTORY com os dados da conta em ORGANIZATION_USAGE.WAREHOUSE_METERING_HISTORY, você deverá executar o seguinte comando antes de consultar a exibição de Account Usage:

ALTER SESSION SET TIMEZONE = UTC;
Copy

Exemplos

Os exemplos a seguir mostram algumas consultas típicas/úteis usando as exibições no esquema ACCOUNT_USAGE.

Nota

  • Estes exemplos consideram que o banco de dados do SNOWFLAKE e o esquema ACCOUNT_USAGE estão em uso para a sessão atual. Os exemplos também consideram que a função ACCOUNTADMIN (ou uma função que possui IMPORTED PRIVILEGES no banco de dados) está em uso. Se não estiverem em uso, execute os seguintes comandos antes de executar as consultas nos exemplos:

    USE ROLE ACCOUNTADMIN;
    
    USE SCHEMA snowflake.account_usage;
    
    Copy

Exemplos: métricas de login de usuário

Número médio de segundos entre tentativas de login com falha pelo usuário (mês até a data):

select user_name,
       count(*) as failed_logins,
       avg(seconds_between_login_attempts) as average_seconds_between_login_attempts
from (
      select user_name,
             timediff(seconds, event_timestamp, lead(event_timestamp)
                 over(partition by user_name order by event_timestamp)) as seconds_between_login_attempts
      from login_history
      where event_timestamp > date_trunc(month, current_date)
      and is_success = 'NO'
     )
group by 1
order by 3;
Copy

Logins com falha por usuário (mês até a data):

select user_name,
       sum(iff(is_success = 'NO', 1, 0)) as failed_logins,
       count(*) as logins,
       sum(iff(is_success = 'NO', 1, 0)) / nullif(count(*), 0) as login_failure_rate
from login_history
where event_timestamp > date_trunc(month, current_date)
group by 1
order by 4 desc;
Copy

Logins com falha por usuário e cliente de conexão (mês até a data):

select reported_client_type,
       user_name,
       sum(iff(is_success = 'NO', 1, 0)) as failed_logins,
       count(*) as logins,
       sum(iff(is_success = 'NO', 1, 0)) / nullif(count(*), 0) as login_failure_rate
from login_history
where event_timestamp > date_trunc(month, current_date)
group by 1,2
order by 5 desc;
Copy

Exemplos: desempenho de warehouse

Esta consulta calcula as métricas de desempenho do warehouse, como rendimento e latência para intervalos de tempo de 15 minutos no decorrer de um dia.

Na amostra de código abaixo, você pode substituir CURRENT_WAREHOUSE() pelo nome de um warehouse para calcular as métricas para aquele warehouse. Além disso, altere as datas time_from e time_to na cláusula WITH para especificar o período.

WITH
params AS (
SELECT
    CURRENT_WAREHOUSE() AS warehouse_name,
    '2021-11-01' AS time_from,
    '2021-11-02' AS time_to
),

jobs AS (
SELECT
    query_id,
    time_slice(start_time::timestamp_ntz, 15, 'minute','start') as interval_start,
    qh.warehouse_name,
    database_name,
    query_type,
    total_elapsed_time,
    compilation_time AS compilation_and_scheduling_time,
    (queued_provisioning_time + queued_repair_time + queued_overload_time) AS queued_time,
    transaction_blocked_time,
    execution_time
FROM snowflake.account_usage.query_history qh, params
WHERE
    qh.warehouse_name = params.warehouse_name
AND start_time >= params.time_from
AND start_time <= params.time_to
AND execution_status = 'SUCCESS'
AND query_type IN ('SELECT','UPDATE','INSERT','MERGE','DELETE')
),

interval_stats AS (
SELECT
    query_type,
    interval_start,
    COUNT(DISTINCT query_id) AS numjobs,
    MEDIAN(total_elapsed_time)/1000 AS p50_total_duration,
    (percentile_cont(0.95) within group (order by total_elapsed_time))/1000 AS p95_total_duration,
    SUM(total_elapsed_time)/1000 AS sum_total_duration,
    SUM(compilation_and_scheduling_time)/1000 AS sum_compilation_and_scheduling_time,
    SUM(queued_time)/1000 AS sum_queued_time,
    SUM(transaction_blocked_time)/1000 AS sum_transaction_blocked_time,
    SUM(execution_time)/1000 AS sum_execution_time,
    ROUND(sum_compilation_and_scheduling_time/sum_total_duration,2) AS compilation_and_scheduling_ratio,
    ROUND(sum_queued_time/sum_total_duration,2) AS queued_ratio,
    ROUND(sum_transaction_blocked_time/sum_total_duration,2) AS blocked_ratio,
    ROUND(sum_execution_time/sum_total_duration,2) AS execution_ratio,
    ROUND(sum_total_duration/numjobs,2) AS total_duration_perjob,
    ROUND(sum_compilation_and_scheduling_time/numjobs,2) AS compilation_and_scheduling_perjob,
    ROUND(sum_queued_time/numjobs,2) AS queued_perjob,
    ROUND(sum_transaction_blocked_time/numjobs,2) AS blocked_perjob,
    ROUND(sum_execution_time/numjobs,2) AS execution_perjob
FROM jobs
GROUP BY 1,2
ORDER BY 1,2
)
SELECT * FROM interval_stats;
Copy

Nota

Analise diferentes tipos de instrução separadamente (por exemplo, instruções SELECT independentes de INSERT ou DELETE ou outras instruções).

  • O valor NUMJOBS representa o rendimento para esse intervalo de tempo.

  • Os valores P50_TOTAL_DURATION (mediana) e P95_TOTAL_DURATION (pico) representam a latência.

  • O SUM_TOTAL_DURATION é a soma dos valores SUM_<job_stage>_TIME para os diferentes estágios do trabalho (COMPILATION_AND_SCHEDULING, QUEUED, BLOCKED, EXECUTION).

  • Analise os valores <job_stage>_RATIO quando a carga (NUMJOBS) aumentar. Procure mudanças de proporção ou desvios em relação à média.

  • Se QUEUED_RATIO for alto, pode não haver capacidade suficiente no warehouse. Adicione mais clusters ou aumente o tamanho do warehouse.

Exemplos: uso de crédito do warehouse

Créditos utilizados por cada warehouse em sua conta (mês até a data):

select warehouse_name,
       sum(credits_used) as total_credits_used
from warehouse_metering_history
where start_time >= date_trunc(month, current_date)
group by 1
order by 2 desc;
Copy

Créditos utilizados ao longo do tempo por cada warehouse em sua conta (mês até a data):

select start_time::date as usage_date,
       warehouse_name,
       sum(credits_used) as total_credits_used
from warehouse_metering_history
where start_time >= date_trunc(month, current_date)
group by 1,2
order by 2,1;
Copy

Exemplos: uso do armazenamento de dados

Terabytes faturáveis armazenados em sua conta ao longo do tempo:

select date_trunc(month, usage_date) as usage_month
  , avg(storage_bytes + stage_bytes + failsafe_bytes) / power(1024, 4) as billable_tb
from storage_usage
group by 1
order by 1;
Copy

Exemplos: totais de consultas de usuário e tempos de execução

Total de trabalhos executados em sua conta (mês até a data):

select count(*) as number_of_jobs
from query_history
where start_time >= date_trunc(month, current_date);
Copy

Total de trabalhos executados por cada warehouse em sua conta (mês até a data):

select warehouse_name,
       count(*) as number_of_jobs
from query_history
where start_time >= date_trunc(month, current_date)
group by 1
order by 2 desc;
Copy

Tempo médio de execução da consulta por usuário (mês até a data):

select user_name,
       avg(execution_time) as average_execution_time
from query_history
where start_time >= date_trunc(month, current_date)
group by 1
order by 2 desc;
Copy

Tempo médio de execução da consulta por tipo de consulta e tamanho do warehouse (mês até a data):

select query_type,
       warehouse_size,
       avg(execution_time) as average_execution_time
from query_history
where start_time >= date_trunc(month, current_date)
group by 1,2
order by 3 desc;
Copy

Exemplos: obter uma contagem de consultas para cada evento de login

Junte colunas de LOGIN_HISTORY, QUERY_HISTORY e SESSIONS para obter uma contagem de consultas para cada evento de login de usuário.

Nota

A exibição SESSIONS registra informações a partir de 20-21 julho de 2020, portanto o resultado da consulta conterá apenas informações sobrepostas para cada uma das três exibições a partir dessa data.

select l.user_name,
       l.event_timestamp as login_time,
       l.client_ip,
       l.reported_client_type,
       l.first_authentication_factor,
       l.second_authentication_factor,
       count(q.query_id)
from snowflake.account_usage.login_history l
join snowflake.account_usage.sessions s on l.event_id = s.login_event_id
join snowflake.account_usage.query_history q on q.session_id = s.session_id
group by 1,2,3,4,5,6
order by l.user_name
;
Copy