Tabela do sistema de eventos do SQL warehouse
Importante
Esta tabela do sistema está em Visualização Pública. Para acessar a tabela, o esquema deve estar habilitado em seu catálogo system
. Para obter mais informações, consulte Habilitar esquemas da tabela do sistema.
Neste artigo, você aprenderá a usar a tabela do sistema de eventos do warehouse para monitorar e gerenciar os SQL warehouses em seus workspaces. Esta tabela registra uma linha para cada vez que um warehouse é iniciado, interrompido, executado e escalado verticalmente. Você pode usar as consultas de exemplo neste artigo com alertas para manter você informado das alterações em seus warehouses.
Caminho da tabela: Esta tabela do sistema está localizada em system.compute.warehouse_events
.
Tipos de evento de warehouse registrados
Essa tabela do sistema registra os seguintes tipos de eventos:
SCALED_UP
: um novo cluster foi adicionado ao warehouse.SCALED_DOWN
: um cluster foi removido do warehouse.STOPPING
: o warehouse está em processo de interrupção.RUNNING
: o warehouse está ativamente em execução.STARTING
: o warehouse está em processo de inicialização.STOPPED
: a execução do warehouse parou completamente.
Esquema de eventos do warehouse
A tabela do sistema warehouse_events
usa o seguinte esquema:
Nome da coluna | Tipo de dados | Descrição | Exemplo |
---|---|---|---|
account_id |
string | A ID de uma conta do Azure Databricks. | 7af234db-66d7-4db3-bbf0-956098224879 |
workspace_id |
string | A ID do workspace em que o warehouse é implantado. | 123456789012345 |
warehouse_id |
string | A ID do SQL warehouse à qual o evento está relacionado. | 123456789012345 |
event_type |
string | O tipo de evento de warehouse. Os valores possíveis são SCALED_UP , SCALED_DOWN , STOPPING , RUNNING , STARTING e STOPPED . |
SCALED_UP |
cluster_count |
Número inteiro | O número de clusters que estão em execução ativamente. | 2 |
event_time |
timestamp | O carimbo de data/hora de quando o evento ocorreu, em UTC. | 2023-07-20T19:13:09.504Z |
Consultas de exemplo
As consultas de exemplo a seguir são modelos. Adicione valores que façam sentido para sua organização. Você também pode adicionar alertas a essas consultas como auxílio para se manter informado(a) sobre as alterações em seus warehouses. Confira Criar um alerta.
Use as seguintes consultas de exemplo para obter insights sobre o comportamento do warehouse:
- Quais warehouses estão em execução ativamente e por quanto tempo?
- Identificar warehouses que permanecem escalados verticalmente por tempo superior ao esperado
- Warehouses que são iniciados pela primeira vez
- Investigar encargos de cobrança
- Quais warehouses não foram usados nos últimos 30 dias?
- Warehouses com mais tempo de atividade em um mês
- Warehouses que passaram mais tempo escalados verticalmente durante o período de um mês
Quais warehouses estão em execução ativamente e por quanto tempo?
Essa consulta identifica quais warehouses estão ativos no momento, juntamente com o tempo de execução deles 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 workspace, talvez você queira ser alertado se um warehouse estiver sendo executado 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 disparada quando as horas de execução excederem um determinado limite.
Identificar warehouses que permanecem escalados verticalmente por tempo superior ao esperado
Essa consulta identifica quais warehouses estão ativos no momento, juntamente com o tempo de execução deles 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 você a monitorar os recursos e os custos. Você pode definir um alerta para quando as horas em escala vertical excederem um determinado limite.
Warehouses que são iniciados pela primeira vez
Essa consulta informa sobre novos warehouses 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: alertar sobre novos warehouses pode ajudar sua organização a acompanhar a alocação de recursos. Por exemplo, você pode definir um alerta que é disparado sempre que um novo warehouse é iniciado.
Investigar encargos de cobrança
Se você quiser entender especificamente o que um warehouse estava fazendo para gerar encargos de cobrança, essa consulta pode informar as datas exatas e as horas em que o warehouse foi escalado ou reduzido verticalmente, ou iniciado e interrompido.
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 warehouses não foram usados nos últimos 30 dias?
Essa consulta ajuda você a identificar recursos não utilizados, fornecendo uma oportunidade para 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, você pode definir um alerta disparado quando a consulta detecta um warehouse não utilizado.
Warehouses com mais tempo de atividade em um mês
Essa consulta mostra quais warehouses foram mais usados durante um mês específico. Essa 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 warehouses de alta utilização. Por exemplo, você pode definir um alerta disparado quando as horas de tempo de atividade de um warehouse excedem um limite específico.
Warehouses que passaram mais tempo escalados verticalmente durante o período de um mês
Essa consulta informa sobre os warehouses que passaram um tempo significativo no estado dimensionado verticalmente durante um mês. Essa 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
Oportunidade de alerta: talvez você queira acompanhar os warehouses de alta utilização. Por exemplo, você pode definir um alerta disparado quando as horas de tempo de atividade de um warehouse excedem um limite específico.