Share via


Informazioni di riferimento sulla tabella di sistema degli eventi del warehouse

Importante

Questa funzionalità è disponibile in anteprima pubblica.

Questo articolo illustra come usare la tabella di sistema degli eventi del warehouse per monitorare e gestire i warehouse SQL nelle aree di lavoro. Questa tabella registra una riga per ogni avvio, arresto, esecuzione e aumento delle prestazioni di un magazzino. È possibile usare le query di esempio in questo articolo con avvisi per tenere informati le modifiche apportate ai warehouse.

La tabella di sistema degli eventi del warehouse si trova in system.compute.warehouse_events.

Tipi di evento del warehouse registrati

Questa tabella di sistema registra i tipi di eventi seguenti:

  • SCALED_UP: è stato aggiunto un nuovo cluster al warehouse.
  • SCALED_DOWN: un cluster è stato rimosso dal magazzino.
  • STOPPING: il magazzino è in corso di arresto.
  • RUNNING: il magazzino è in esecuzione attivamente.
  • STARTING: il magazzino è in fase di avvio.
  • STOPPED: il magazzino ha interrotto completamente l'esecuzione.

Schema degli eventi del warehouse

La warehouse_events tabella di sistema usa lo schema seguente:

Nome colonna Tipo di dati Descrizione Esempio
account_id string ID dell'account Azure Databricks. 7af234db-66d7-4db3-bbf0-956098224879
workspace_id string ID dell'area di lavoro in cui viene distribuito il magazzino. 123456789012345
warehouse_id string L'ID del warehouse SQL a cui è correlato l'evento. 123456789012345
event_type string Tipo di evento warehouse. I valori consentiti sono SCALED_UP, SCALED_DOWN, STOPPING, RUNNING, STARTING e STOPPED. SCALED_UP
cluster_count integer Numero di cluster in esecuzione attivamente. 2
event_time timestamp Timestamp di quando si è verificato l'evento. 2023-07-20T19:13:09.504Z

Query di esempio

Le query di esempio seguenti sono modelli. Collegare qualsiasi valore abbia senso per l'organizzazione. È anche possibile aggiungere avvisi a queste query per rimanere informati sulle modifiche apportate ai warehouse. Vedere Creare un avviso.

Usare le query di esempio seguenti per ottenere informazioni dettagliate sul comportamento del warehouse:

Quali magazzini sono in esecuzione attivamente e per quanto tempo?

Questa query identifica i warehouse attualmente attivi insieme al tempo di esecuzione in ore.

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
)

Opportunità di avviso: un amministratore dell'area di lavoro potrebbe essere avvisato se un magazzino è in esecuzione più lungo del previsto. Ad esempio, è possibile usare i risultati della query per impostare una condizione di avviso da attivare quando le ore di esecuzione superano una determinata soglia.

Identificare i magazzini che sono più lunghi del previsto

Questa query identifica i warehouse attualmente attivi insieme al tempo di esecuzione in ore.

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
   )

Opportunità di avviso: l'invio di avvisi su questa condizione consente di monitorare le risorse e i costi. È possibile impostare un avviso per quando le ore di alto livello superano un determinato limite.

Magazzini che iniziano per la prima volta

Questa query informa i nuovi warehouse che iniziano per la prima volta.

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
   )

Opportunità di avviso: gli avvisi sui nuovi warehouse possono aiutare l'organizzazione a tenere traccia dell'allocazione delle risorse. Ad esempio, è possibile impostare un avviso che viene attivato ogni volta che viene avviato un nuovo magazzino.

Analizzare gli addebiti per la fatturazione

Se si vuole comprendere in modo specifico cosa stava facendo un magazzino per generare addebiti per la fatturazione, questa query può indicare le date esatte e le ore in cui il magazzino è stato ridimensionato verso l'alto o verso il basso o avviato e arrestato.

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

Quali magazzini non sono stati utilizzati negli ultimi 30 giorni?

Questa query consente di identificare le risorse inutilizzate, offrendo un'opportunità per l'ottimizzazione dei costi.

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

Opportunità di avviso: la ricezione di un avviso sulle risorse inutilizzate potrebbe aiutare l'organizzazione a ottimizzare i costi. Ad esempio, è possibile impostare un avviso che viene attivato quando la query rileva un warehouse inutilizzato.

Magazzini con il maggior tempo di attività in un mese

Questa query mostra quali magazzini sono stati usati di più durante un mese specifico. Questa query usa luglio come esempio.

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

Opportunità di avviso: è possibile tenere traccia dei magazzini ad utilizzo elevato. Ad esempio, è possibile impostare un avviso che viene attivato quando le ore di tempo di attività per un magazzino superano una soglia specifica.

Magazzini che hanno trascorso il maggior tempo di lusso durante un mese

Questa query informa i magazzini che hanno trascorso un tempo significativo nello stato di lusso durante un mese. Questa query usa luglio come esempio.

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;

Opportunità di avviso: è possibile tenere traccia dei magazzini ad utilizzo elevato. Ad esempio, è possibile impostare un avviso che viene attivato quando le ore di tempo di attività per un magazzino superano una soglia specifica.