Dela via


Systemtabellreferens för lagerhändelser

Viktigt!

Den här systemtabellen finns i offentlig förhandsversion. För att få åtkomst till tabellen måste schemat vara aktiverat i katalogen system . Mer information finns i Aktivera systemtabellscheman.

I den här artikeln får du lära dig hur du använder systemtabellen för lagerhändelser för att övervaka och hantera SQL-lager i dina arbetsytor. Den här tabellen registrerar en rad för varje gång ett lager startar, stoppar, körs och skalas upp och ned. Du kan använda exempelfrågorna i den här artikeln med aviseringar för att hålla dig informerad om ändringar i dina lager.

Tabellsökväg: Den här systemtabellen finns på system.compute.warehouse_events.

Händelsetyper för loggat lager

Den här systemtabellen loggar följande typer av händelser:

  • SCALED_UP: Ett nytt kluster har lagts till i lagret.
  • SCALED_DOWN: Ett kluster har tagits bort från lagret.
  • STOPPING: Lagret håller på att stoppas.
  • RUNNING: Lagret körs aktivt.
  • STARTING: Lagret håller på att startas.
  • STOPPED: Lagret har helt slutat köras.

Schema för informationslagerhändelser

Systemtabellen warehouse_events använder följande schema:

Kolumnnamn Datatyp beskrivning Exempel
account_id sträng ID för Azure Databricks-kontot. 7af234db-66d7-4db3-bbf0-956098224879
workspace_id sträng ID:t för arbetsytan där lagret distribueras. 123456789012345
warehouse_id sträng ID för SQL Warehouse som händelsen är relaterad till. 123456789012345
event_type sträng Typ av lagerhändelse. Möjliga värden är SCALED_UP, SCALED_DOWN, STOPPING, RUNNING, STARTINGoch STOPPED. SCALED_UP
cluster_count integer Antalet kluster som körs aktivt. 2
event_time timestamp Tidsstämpel för när händelsen ägde rum i UTC. 2023-07-20T19:13:09.504Z

Exempelfrågor

Följande exempelfrågor är mallar. Anslut de värden som passar din organisation. Du kan också lägga till aviseringar i dessa frågor som hjälper dig att hålla dig informerad om ändringar i dina lager. Se Skapa en avisering.

Använd följande exempelfrågor för att få insikt i informationslagrets beteende:

Vilka lager körs aktivt och hur länge?

Den här frågan identifierar vilka lager som för närvarande är aktiva tillsammans med deras körningstid i timmar.

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
)

Aviseringsmöjlighet: Som arbetsyteadministratör kanske du vill få aviseringar om ett lager körs längre än förväntat. Du kan till exempel använda frågeresultatet för att ange ett aviseringsvillkor som ska utlösas när de timmar som körs överskrider ett visst tröskelvärde.

Identifiera lager som är längre än förväntat

Den här frågan identifierar vilka lager som för närvarande är aktiva tillsammans med deras körningstid i timmar.

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
   )

Aviseringsmöjlighet: Aviseringar om det här villkoret kan hjälpa dig att övervaka resurser och kostnader. Du kan ange en avisering för när de uppskalade timmarna överskrider en viss gräns.

Lager som startar för första gången

Den här frågan informerar dig om nya lager som startar för första gången.

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
   )

Aviseringsmöjlighet: Aviseringar om nya lager kan hjälpa din organisation att spåra resursallokering. Du kan till exempel ange en avisering som utlöses varje gång ett nytt lager startar.

Undersöka faktureringsavgifter

Om du specifikt vill förstå vad ett lager gjorde för att generera faktureringsavgifter kan den här frågan berätta exakta datum och tider då lagret skalades upp eller ned eller startades och stoppades.

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

Vilka lager har inte använts under de senaste 30 dagarna?

Den här frågan hjälper dig att identifiera oanvända resurser, vilket ger en möjlighet till kostnadsoptimering.

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

Aviseringsmöjlighet: Att ta emot en avisering om oanvända resurser kan hjälpa din organisation att optimera kostnaderna. Du kan till exempel ange en avisering som utlöses när frågan identifierar ett oanvänt lager.

Lager med mest drifttid på en månad

Den här frågan visar vilka lager som har använts mest under en viss månad. Den här frågan använder juli som exempel.

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

Aviseringsmöjlighet: Du kanske vill hålla reda på informationslager med hög användning. Du kan till exempel ange en avisering som utlöses när drifttidstiderna för ett lager överskrider ett visst tröskelvärde.

Lager som tillbringade mest tid uppskalat under en månad

Den här frågan informerar dig om lager som har tillbringat mycket tid i det exklusiva tillståndet under en månad. Den här frågan använder juli som exempel.

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

Aviseringsmöjlighet: Du kanske vill hålla reda på informationslager med hög användning. Du kan till exempel ange en avisering som utlöses när drifttidstiderna för ett lager överskrider ett visst tröskelvärde.