Udostępnij za pośrednictwem


Dokumentacja tabeli systemu zdarzeń magazynu

Ważne

Ta tabela systemowa jest dostępna w publicznej wersji zapoznawczej. Aby uzyskać dostęp do tabeli, schemat musi być włączony w system katalogu. Aby uzyskać więcej informacji, zobacz Włączanie schematów tabel systemowych.

Z tego artykułu dowiesz się, jak używać tabeli systemu zdarzeń magazynu do monitorowania magazynów i zarządzania nimi w obszarach roboczych. Ta tabela rejestruje wiersz za każdym razem, gdy magazyn uruchamia, zatrzymuje, uruchamia i skaluje w górę i w dół. Możesz użyć przykładowych zapytań w tym artykule z alertami, aby otrzymywać informacje o zmianach w magazynach.

Ścieżka tabeli: ta tabela systemowa znajduje się w lokalizacji system.compute.warehouse_events.

Zarejestrowane typy zdarzeń magazynu

Ta tabela systemowa rejestruje następujące typy zdarzeń:

  • SCALED_UP: Nowy klaster został dodany do magazynu.
  • SCALED_DOWN: klaster został usunięty z magazynu.
  • STOPPING: Magazyn jest w trakcie zatrzymywania.
  • RUNNING: magazyn jest aktywnie uruchomiony.
  • STARTING: Magazyn jest w trakcie uruchamiania.
  • STOPPED: magazyn całkowicie przestał działać.

Schemat zdarzeń magazynu

Tabela warehouse_events systemowa używa następującego schematu:

Nazwa kolumny Typ danych opis Przykład
account_id string Identyfikator konta usługi Azure Databricks. 7af234db-66d7-4db3-bbf0-956098224879
workspace_id string Identyfikator obszaru roboczego, w którym jest wdrożony magazyn. 123456789012345
warehouse_id string Identyfikator magazynu SQL, z tym zdarzeniem jest powiązane. 123456789012345
event_type string Typ zdarzenia magazynu. Możliwe wartości to SCALED_UP, , SCALED_DOWN, RUNNINGSTOPPING, STARTING, i STOPPED. SCALED_UP
cluster_count integer Liczba klastrów, które są aktywnie uruchomione. 2
event_time timestamp Sygnatura czasowa zdarzenia w formacie UTC. 2023-07-20T19:13:09.504Z

Przykładowe zapytania

Poniższe przykładowe zapytania to szablony. Podłącz dowolne wartości w organizacji. Możesz również dodać alerty do tych zapytań, aby ułatwić informowanie o zmianach w magazynach. Zobacz Tworzenie alertu.

Skorzystaj z następujących przykładowych zapytań, aby uzyskać wgląd w zachowanie magazynu:

Które magazyny są aktywnie uruchomione i jak długo?

To zapytanie określa, które magazyny są obecnie aktywne wraz z czasem działania w godzinach.

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
)

Możliwość alertu: jako administrator obszaru roboczego możesz otrzymywać alerty, jeśli magazyn działa dłużej niż oczekiwano. Na przykład możesz użyć wyników zapytania, aby ustawić warunek alertu do wyzwolenia, gdy godziny pracy przekraczają określony próg.

Identyfikowanie magazynów, które są rozbudowane dłużej niż oczekiwano

To zapytanie określa, które magazyny są obecnie aktywne wraz z czasem działania w godzinach.

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
   )

Szansa sprzedaży alertów: Alerty dotyczące tego warunku mogą pomóc w monitorowaniu zasobów i kosztów. Alert można ustawić dla czasu przekroczenia określonego limitu godzin w skali maksymalnej.

Magazyny, które zaczynają się po raz pierwszy

To zapytanie informuje o nowych magazynach, które są uruchamiane po raz pierwszy.

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
   )

Możliwość zgłaszania alertów: Alerty dotyczące nowych magazynów mogą pomóc organizacji w śledzeniu alokacji zasobów. Można na przykład ustawić alert wyzwalany za każdym razem, gdy rozpocznie się nowy magazyn.

Badanie opłat za rozliczenia

Jeśli chcesz zrozumieć, co robi magazyn w celu generowania opłat za rozliczenia, to zapytanie może określić dokładne daty i godziny skalowania magazynu w górę lub w dół albo uruchomione i zatrzymane.

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

Które magazyny nie były używane w ciągu ostatnich 30 dni?

To zapytanie pomaga zidentyfikować nieużywane zasoby, co zapewnia możliwość optymalizacji kosztów.

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

Szansa na alert: otrzymywanie alertu dotyczącego nieużywanych zasobów może pomóc organizacji w optymalizacji kosztów. Można na przykład ustawić alert wyzwalany, gdy zapytanie wykryje nieużywany magazyn.

Magazyny z największą dostępnością w miesiącu

To zapytanie pokazuje, które magazyny były używane najbardziej w określonym miesiącu. To zapytanie używa lipca jako przykładu.

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

Możliwość zgłaszania alertów: możesz śledzić magazyny o wysokim wykorzystaniu. Można na przykład ustawić alert, który jest wyzwalany, gdy godziny pracy magazynu przekraczają określony próg.

Magazyny, które spędziły najwięcej czasu w górę w ciągu miesiąca

To zapytanie informuje o magazynach, które spędziły znaczną ilość czasu w stanie rozbudowy w ciągu miesiąca. To zapytanie używa lipca jako przykładu.

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

Możliwość zgłaszania alertów: możesz śledzić magazyny o wysokim wykorzystaniu. Można na przykład ustawić alert, który jest wyzwalany, gdy godziny pracy magazynu przekraczają określony próg.