Partilhar via


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

Importante

Esta funcionalidade está em Pré-visualização Pública.

Neste artigo, você aprenderá a usar a tabela do sistema de eventos de depósito para monitorar e gerenciar os armazéns SQL em seus espaços de trabalho. Esta tabela registra uma linha para cada vez que um depósito é iniciado, parado, executado e dimensionado para cima e para baixo. Você pode usar as consultas de exemplo neste artigo com alertas para mantê-lo informado sobre alterações em seus armazéns.

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

Tipos de eventos de armazém registrados

Esta tabela do sistema regista os seguintes tipos de eventos:

  • SCALED_UP: Um novo cluster foi adicionado ao armazém.
  • SCALED_DOWN: Um cluster foi removido do armazém.
  • STOPPING: O armazém está em processo de paragem.
  • RUNNING: O armazém está em execução ativa.
  • STARTING: O armazém está em processo de arranque.
  • STOPPED: O armazém parou completamente de funcionar.

Esquema de eventos de armazém

A warehouse_events tabela do sistema usa o seguinte esquema:

Nome da coluna Tipo de dados Description Exemplo
account_id string A ID da conta do Azure Databricks. 7af234db-66d7-4db3-bbf0-956098224879
workspace_id string A ID do espaço de trabalho onde o depósito está implantado. 123456789012345
warehouse_id string A ID do SQL warehouse ao qual o evento está relacionado. 123456789012345
event_type string O tipo de evento de depósito. Os valores possíveis são SCALED_UP, SCALED_DOWN, , RUNNINGSTOPPING, STARTING, e STOPPED. SCALED_UP
cluster_count integer O número de clusters que estão em execução ativa. 2
event_time carimbo de data/hora Carimbo de data/hora de quando o evento ocorreu. 2023-07-20T19:13:09.504Z

Consultas de amostra

As consultas de exemplo a seguir são modelos. Conecte todos os valores que fizerem sentido para sua organização. Você também pode adicionar alertas a essas consultas para ajudá-lo a se manter informado sobre as alterações em seus armazéns. Consulte Criar um alerta.

Use as seguintes consultas de exemplo para obter informações sobre o comportamento do depósito:

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 de um espaço de trabalho, você pode querer ser alertado se um depósito estiver funcionando mais do que o esperado. Por exemplo, você pode usar os resultados da consulta para definir uma condição de alerta para disparar quando as horas de execução excederem um determinado limite.

Identificar armazéns que são escalonados 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 ajudá-lo a monitorar recursos e custos. Você pode definir um alerta para quando as horas escalonadas excederem um determinado limite.

Armazéns que começam pela primeira vez

Esta consulta informa sobre novos armazéns que estão começando 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 é acionado sempre que um novo depósito é iniciado.

Investigar cobranças de faturamento

Se você quiser entender especificamente o que um depósito estava fazendo para gerar cobranças, essa consulta pode informar as datas e horas exatas 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

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

Esta consulta ajuda-o 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 recursos não utilizados pode ajudar a sua organização a otimizar custos. Por exemplo, você pode definir um alerta que é acionado quando a consulta deteta um depósito não utilizado.

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

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

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

Esta consulta informa sobre armazéns que passaram um tempo significativo no estado escalonado 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: talvez você queira acompanhar os armazéns de alta utilização. Por exemplo, você pode definir um alerta que é acionado quando as horas de tempo de atividade de um depósito excedem um limite específico.