Referência de tabela do sistema de eventos de depósito

Visualização

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

Neste artigo, o senhor aprenderá a usar a tabela do sistema de eventos do warehouse para monitorar e gerenciar o warehouse do SQL em seu espaço de trabalho. Essa tabela registra uma linha para cada vez que um armazém começa, para, executa e escala para cima e para baixo. O senhor pode usar as consultas de exemplo neste artigo com alerta para mantê-lo informado sobre as alterações em seus armazéns.

A tabela do sistema de eventos do depósito está localizada em system.compute.warehouse_events.

tipos de eventos do depósito de registros

Essa tabela do sistema logs os seguintes tipos de eventos:

  • SCALED_UP: Um novo cluster foi adicionado ao depósito.

  • SCALED_DOWN: Um cluster foi removido do depósito.

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

  • RUNNING: O depósito está funcionando ativamente.

  • STARTING: O armazém está em processo de início de operação.

  • STOPPED: O armazém parou completamente de funcionar.

Esquema de eventos do depósito

A tabela do sistema warehouse_events usa o seguinte esquema:

Nome da coluna

Tipo de dados

Descrição

Exemplo

account_id

string

O ID do site Databricks account.

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

workspace_id

string

O ID do site workspace onde o depósito está implantado.

123456789012345

warehouse_id

string

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

123456789012345

event_type

string

O tipo de evento do depósito. 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 ativa.

2

event_time

timestamp

Registro de data e hora de quando o evento ocorreu.

2023-07-20T19:13:09.504Z

Consultas de amostra

Os exemplos de consultas a seguir são padrão. Insira os valores que fizerem sentido para sua organização. O senhor também pode adicionar alertas a essas consultas para ajudá-lo a se manter informado sobre as alterações nos armazéns. Consulte Criar um alerta.

Use os exemplos de consultas a seguir para obter entendimento do comportamento do warehouse:

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

Essa consulta identifica quais armazéns estão ativos no momento, juntamente com seu tempo de execução 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 do workspace, o senhor pode querer ficar alerta se um depósito estiver funcionando por mais tempo do que o esperado. Por exemplo, o senhor 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.

Identificar os armazéns que estão em upscaling por mais tempo do que o esperado

Essa consulta identifica quais armazéns estão ativos no momento, juntamente com seu tempo de execução 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 essa condição pode ajudar o senhor a monitorar o recurso e o custo. O senhor pode definir um alerta para quando as horas aumentadas excederem um determinado limite.

Armazéns que começam pela primeira vez

Essa consulta informa o senhor sobre novos depósitos que estão sendo iniciados 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: O alerta sobre novos depósitos pode ajudar sua organização a acompanhar a alocação de recursos. Por exemplo, o senhor pode definir um alerta que é acionado toda vez que um novo depósito começa.

Investigar cobranças de faturamento

Se o senhor quiser entender especificamente o que um depósito estava fazendo para gerar cobranças de faturamento, essa consulta pode informar as datas e os horários exatos em que o depósito 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 usados nos últimos 30 dias?

Essa consulta ajuda o senhor a identificar os recursos não utilizados, oferecendo 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 recursos não utilizados pode ajudar sua organização a otimizar os custos. Por exemplo, o senhor pode definir um alerta que é acionado quando a consulta detecta um depósito não utilizado.

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

Essa consulta mostra quais armazéns foram mais usados durante um mês específico. Essa consulta usa o mês de 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: O senhor pode querer acompanhar os armazéns de alta utilização. Por exemplo, o senhor pode definir um alerta que é acionado quando as horas de atividade de um depósito ultrapassam um limite específico.

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

Essa consulta informa o senhor sobre os armazéns que passaram um tempo significativo no estado upscaled durante um mês. Essa consulta usa o mês de 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: O senhor pode querer acompanhar os armazéns de alta utilização. Por exemplo, o senhor pode definir um alerta que é acionado quando as horas de atividade de um depósito ultrapassam um limite específico.