Referência da tabela do sistema de eventos do armazém

Visualização

Esse recurso está em visualização pública.

Neste artigo, você aprende como usar a tabela do sistema de eventos do warehouse para monitorar e gerenciar o warehouse SQL em seu espaço de trabalho. Esta tabela registra uma linha para cada vez que um armazém é iniciado, interrompido, executado e escalado para cima e para baixo. Você pode usar os exemplos de consultas nestes artigos com alerta para mantê-lo informado sobre alterações em seus armazéns.

A tabela do sistema de eventos do warehouse está localizada em system.compute.warehouse_events.

registra tipos de eventos do warehouse

Esta tabela do sistema logs os seguintes tipos de eventos:

  • SCALED_UP: um novo cluster foi adicionado ao warehouse.

  • SCALED_DOWN: um cluster foi removido do warehouse.

  • STOPPING: O armazém está em processo de parada.

  • RUNNING: o warehouse está em execução ativa.

  • STARTING: O armazém está em processo de inicialização.

  • STOPPED: O warehouse parou completamente de funcionar.

Esquema de eventos de armazém

A tabela de sistema warehouse_events usa o seguinte esquema:

Nome da coluna

Tipo de dados

Descrição

Exemplo

account_id

string

O ID da account do Databricks.

7af234db-66d7-4db3-bbf0-956098224879

workspace_id

string

O ID do workspace onde o armazém está implantado.

123456789012345

warehouse_id

string

O ID do SQL warehouse ao qual o evento está relacionado.

123456789012345

event_type

string

O tipo de evento de armazém. Os valores possíveis são SCALED_UP, SCALED_DOWN, STOPPING, RUNNING, STARTING e STOPPED.

SCALED_UP

cluster_count

inteiro

O número de clusters que estão em execução ativamente.

2

event_time

timestamp

Data e hora de quando o evento ocorreu.

2023-07-20T19:13:09.504Z

Exemplos de consultas

Os exemplos de consultas a seguir são padrão. Insira quaisquer valores que façam sentido para sua organização. Você também pode adicionar alertas a essas consultas para ajudá-lo a se manter informado sobre alterações em seus armazéns. Consulte Criar um alerta.

Use os seguintes exemplos de consultas para obter percepções sobre o comportamento do warehouse:

Quais armazéns estão funcionando ativamente e por quanto tempo?

Esta consulta identifica quais armazéns estão atualmente ativos juntamente com o tempo de funcionamento em horas.

USE CATALOG `system`;

SELECT
we.warehouse_id,
we.event_time,
TIMESTAMPDIFF(MINUTE, we.event_time, CURRENT_TIMESTAMP()) / 60.0 AS running_hours,
we.cluster_count
FROM
compute.warehouse_events we
WHERE
we.event_type = 'RUNNING'
AND NOT EXISTS (
SELECT 1
FROM compute.warehouse_events we2
WHERE we2.warehouse_id = we.warehouse_id
AND we2.event_time > we.event_time
)

oportunidade de alerta: como administrador workspace , você pode querer ser alertado se um warehouse estiver funcionando por mais tempo do que o esperado. Por exemplo, você pode usar os resultados da consulta para definir uma condição de alerta a ser acionada quando as horas de funcionamento excederem um determinado limite.

Identifique armazéns que são ampliados por mais tempo do que o esperado

Esta consulta identifica quais armazéns estão atualmente ativos juntamente com o tempo de funcionamento em horas.

use catalog `system`;

SELECT
   we.warehouse_id,
   we.event_time,
   TIMESTAMPDIFF(MINUTE, we.event_time, CURRENT_TIMESTAMP()) / 60.0 AS upscaled_hours,
   we.cluster_count
FROM
   compute.warehouse_events we
WHERE
   we.event_type = 'SCALED_UP'
   AND we.cluster_count >= 2
   AND NOT EXISTS (
       SELECT 1
       FROM compute.warehouse_events we2
       WHERE we2.warehouse_id = we.warehouse_id
       AND (
           (we2.event_type = 'SCALED_DOWN') OR
           (we2.event_type = 'SCALED_UP' AND we2.cluster_count < 2)
       )
       AND we2.event_time > we.event_time
   )

Oportunidade de alerta: Alertar sobre esta condição pode ajudar a monitorar recursos e custos. Você pode definir um alerta para quando as horas aumentadas excederem um determinado limite.

Armazéns que começam pela primeira vez

Esta consulta informa sobre novos armazéns que estão iniciando pela primeira vez.

use catalog `system`;

SELECT
   we.warehouse_id,
   we.event_time,
   we.cluster_count
FROM
   compute.warehouse_events we
WHERE
   (we.event_type = 'STARTING' OR we.event_type = 'RUNNING')
   AND NOT EXISTS (
       SELECT 1
       FROM compute.warehouse_events we2
       WHERE we2.warehouse_id = we.warehouse_id
       AND we2.event_time < we.event_time
   )

Oportunidade de alerta: Alertar sobre novos armazéns pode ajudar sua organização a rastrear a alocação de recursos. Por exemplo, você pode definir um alerta que será acionado sempre que um novo armazém for inaugurado.

Investigar cobranças de faturamento

Se você quiser entender especificamente o que um armazém estava fazendo para gerar cobranças de faturamento, esta consulta pode informar as datas e horários exatos em que o armazém aumentou ou diminuiu, ou começou e parou.

use catalog `system`;

SELECT
    we.warehouse_id AS warehouse_id,
    we.event_type AS event,
    we.event_time AS event_time,
    we.cluster_count AS cluster_count
FROM
    compute.warehouse_events AS we
WHERE
    we.event_type IN (
        'STARTING', 'RUNNING', 'STOPPING', 'STOPPED',
        'SCALING_UP', 'SCALED_UP', 'SCALING_DOWN', 'SCALED_DOWN'
    )
    AND MONTH(we.event_time) = 7
    AND YEAR(we.event_time) = YEAR(CURRENT_DATE())
    AND we.warehouse_id = '19c9d68652189278'
ORDER BY
    event_time DESC

Quais armazéns não foram utilizados nos últimos 30 dias?

Esta consulta ajuda a identificar recursos não utilizados, proporcionando uma oportunidade de otimização de custos.

use catalog `system`;

SELECT
    we.warehouse_id,
    we.event_time,
    we.event_type,
    we.cluster_count
FROM
    compute.warehouse_events AS we
WHERE
    we.warehouse_id IN (
        SELECT DISTINCT
            warehouse_id
        FROM
            compute.warehouse_events
        WHERE
            MONTH(event_time) = 6
            AND YEAR(event_time) = YEAR(CURRENT_DATE())
    )
    AND we.warehouse_id NOT IN (
        SELECT DISTINCT
            warehouse_id
        FROM
            compute.warehouse_events
        WHERE
            MONTH(event_time) = 7
            AND YEAR(event_time) = YEAR(CURRENT_DATE())
    )
ORDER BY
    event_time DESC

oportunidade de alerta: Receber um alerta sobre recurso não utilizado pode ajudar sua organização a otimizar custos. Por exemplo, você pode definir um alerta que é acionado quando a consulta detecta um warehouse não utilizado.

Armazéns com maior tempo de atividade em um mês

Esta consulta mostra quais armazéns foram mais utilizados durante um determinado mês. Esta consulta usa julho como exemplo.

use catalog `system`;

SELECT
   warehouse_id,
   SUM(TIMESTAMPDIFF(MINUTE, start_time, end_time)) / 60.0 AS uptime_hours
FROM (
   SELECT
      starting.warehouse_id,
      starting.event_time AS start_time,
      (
         SELECT
            MIN(stopping.event_time)
         FROM
            compute.warehouse_events AS stopping
         WHERE
            stopping.warehouse_id = starting.warehouse_id
            AND stopping.event_type = 'STOPPED'
            AND stopping.event_time > starting.event_time
      ) AS end_time
   FROM
      compute.warehouse_events AS starting
   WHERE
      starting.event_type = 'STARTING'
      AND MONTH(starting.event_time) = 7
      AND YEAR(starting.event_time) = YEAR(CURRENT_DATE())
) AS warehouse_uptime
WHERE
   end_time IS NOT NULL
GROUP BY
   warehouse_id
ORDER BY
   uptime_hours DESC

Oportunidade de alerta: você pode querer acompanhar os armazéns de alta utilização. Por exemplo, você pode definir um alerta que é acionado quando as horas de funcionamento de um armazém excedem um limite específico.

Armazéns que passaram mais tempo ampliados durante um mês

Esta consulta informa sobre armazéns que passaram um tempo significativo no estado ampliado durante um mês. Esta consulta usa julho como exemplo.

use catalog `system`;

SELECT
   warehouse_id,
   SUM(TIMESTAMPDIFF(MINUTE, upscaled_time, downscaled_time)) / 60.0 AS upscaled_hours
FROM (
   SELECT
      upscaled.warehouse_id,
      upscaled.event_time AS upscaled_time,
      (
         SELECT
            MIN(downscaled.event_time)
         FROM
            compute.warehouse_events AS downscaled
         WHERE
            downscaled.warehouse_id = upscaled.warehouse_id
            AND (downscaled.event_type = 'SCALED_DOWN' OR downscaled.event_type = 'STOPPED')
            AND downscaled.event_time > upscaled.event_time
      ) AS downscaled_time
   FROM
      compute.warehouse_events AS upscaled
   WHERE
      upscaled.event_type = 'SCALED_UP'
      AND upscaled.cluster_count >= 2
      AND MONTH(upscaled.event_time) = 7
      AND YEAR(upscaled.event_time) = YEAR(CURRENT_DATE())
) AS warehouse_upscaled
WHERE
   downscaled_time IS NOT NULL
GROUP BY
   warehouse_id
ORDER BY
   upscaled_hours DESC limit 0;

Oportunidade de alerta: você pode querer acompanhar os armazéns de alta utilização. Por exemplo, você pode definir um alerta que é acionado quando as horas de funcionamento de um armazém excedem um limite específico.

Tempo de atividade do armazém por data

Esta consulta informa o número total de minutos que os armazéns estiveram em funcionamento, organizados por data. Esta consulta pode ser usada como base para previsões.

use catalog `system`;

SELECT
   warehouse_id,
   SUM(TIMESTAMPDIFF(MINUTE, upscaled_time, downscaled_time)) / 60.0 AS upscaled_hours
FROM (
   SELECT
      upscaled.warehouse_id,
      upscaled.event_time AS upscaled_time,
      (
         SELECT
            MIN(downscaled.event_time)
         FROM
            compute.warehouse_events AS downscaled
         WHERE
            downscaled.warehouse_id = upscaled.warehouse_id
            AND (downscaled.event_type = 'SCALED_DOWN' OR downscaled.event_type = 'STOPPED')
            AND downscaled.event_time > upscaled.event_time
      ) AS downscaled_time
   FROM
      compute.warehouse_events AS upscaled
   WHERE
      upscaled.event_type = 'SCALED_UP'
      AND upscaled.cluster_count >= 2
      AND MONTH(upscaled.event_time) = 7
      AND YEAR(upscaled.event_time) = YEAR(CURRENT_DATE())
) AS warehouse_upscaled
WHERE
   downscaled_time IS NOT NULL
GROUP BY
   warehouse_id
ORDER BY
   upscaled_hours DESC limit 0;