Freigeben über


Referenz zur Systemtabelle für Warehouse-Ereignisse

Wichtig

Dieses Feature befindet sich in der Public Preview.

In diesem Artikel erfahren Sie, wie Sie die Systemtabelle für Warehouse-Ereignisse verwenden, um die SQL-Warehouses in Ihren Arbeitsbereichen zu überwachen und zu verwalten. Diese Tabelle zeichnet jedes Mal, wenn ein Warehouse beginnt, stoppt, läuft und skaliert wird, eine Zeile auf. Sie können die Beispielabfragen in diesem Artikel mit Warnungen verwenden, um über Änderungen an Ihren Warehouses informiert zu werden.

Die Systemtabelle für Warehouse-Ereignisse befindet sich unter system.compute.warehouse_events.

Protokollierte Warehouse-Ereignistypen

Diese Systemtabelle protokolliert die folgenden Ereignistypen:

  • SCALED_UP: Dem Warehouse wurde ein neuer Cluster hinzugefügt.
  • SCALED_DOWN: Ein Cluster wurde aus dem Warehouse entfernt.
  • STOPPING: Das Warehouse wird gerade gestartet.
  • RUNNING: Das Warehouse wird aktiv ausgeführt.
  • STARTING: Das Warehouse wird gerade gestartet.
  • STOPPED: Das Warehouse wurde vollständig beendet.

Warehouse-Ereignisschema

Die warehouse_events-Systemtabelle verwendet das folgende Schema:

Spaltenname Datentyp Beschreibung Beispiel
account_id Zeichenfolge Die ID des Azure Databricks-Kontos. 7af234db-66d7-4db3-bbf0-956098224879
workspace_id Zeichenfolge Die ID des Arbeitsbereichs, in dem das Warehouse bereitgestellt wird. 123456789012345
warehouse_id Zeichenfolge Die ID des SQL-Warehouses, mit dem das Ereignis verknüpft ist. 123456789012345
event_type Zeichenfolge Der Typ des Warehouse-Ereignisses. Mögliche Werte sind SCALED_UP, SCALED_DOWN, STOPPING, RUNNING, STARTING und STOPPED. SCALED_UP
cluster_count integer Die Anzahl der Cluster, die aktiv ausgeführt werden. 2
event_time Zeitstempel Zeitstempel des Zeitpunkts, an dem das Ereignis stattgefunden hat. 2023-07-20T19:13:09.504Z

Beispielabfragen

Die folgenden Beispielabfragen sind Vorlagen. Fügen Sie beliebige Werte ein, die für Ihre Organisation sinnvoll sind. Sie können diesen Abfragen auch Benachrichtigungen hinzufügen, damit Sie über Änderungen an Ihren Warehouses informiert werden. Siehe Erstellen einer Warnung.

Verwenden Sie die folgenden Beispielabfragen, um Einblicke in das Warehouse-Verhalten zu erhalten:

Welche Warehouses laufen aktiv und wie lange?

Diese Abfrage gibt an, welche Warehouses derzeit zusammen mit ihrer Laufzeit in Stunden aktiv sind.

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
)

Warnungsmöglichkeit: Als Arbeitsbereichsadministrator*in sollten Sie benachrichtigt werden, wenn ein Warehouse länger als erwartet ausgeführt wird. Sie können beispielsweise die Abfrageergebnisse verwenden, um eine Warnungsbedingung festzulegen, die ausgelöst wird, wenn die Betriebsstunden einen bestimmten Schwellenwert überschreiten.

Identifizieren von Warehouses, die länger als erwartet hochskaliert sind

Diese Abfrage gibt an, welche Warehouses derzeit zusammen mit ihrer Laufzeit in Stunden aktiv sind.

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
   )

Warnungsmöglichkeit: Die Warnung bei dieser Bedingung kann Ihnen helfen, Ressourcen und Kosten zu überwachen. Sie können eine Warnung festlegen, wenn die hochskalierten Stunden einen bestimmten Grenzwert überschreiten.

Warehouses, die zum ersten Mal starten

Diese Abfrage informiert Sie über neue Warehouses, die zum ersten Mal starten.

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
   )

Warnungsmöglichkeit: Die Benachrichtigung bei neuen Warehouses kann Ihrer Organisation helfen, die Ressourcenzuordnung nachzuverfolgen. Sie können beispielsweise eine Warnung festlegen, die jedes Mal ausgelöst wird, wenn ein neues Warehouses startet.

Untersuchen von Abrechnungsgebühren

Wenn Sie genau verstehen möchten, was ein Warehouse getan hat, um Abrechnungsgebühren zu generieren, kann diese Abfrage Ihnen die genauen Datums- und Uhrzeitangaben mitteilen, zu denen das Warehouse nach oben oder unten skaliert oder gestartet und geendet hat.

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

Welche Warehouses wurden in den letzten 30 Tagen nicht verwendet?

Diese Abfrage hilft Ihnen, nicht verwendete Ressourcen zu identifizieren, wodurch eine Kostenoptimierung möglich ist.

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

Warnungsmöglichkeit: Wenn Sie eine Benachrichtigung zu nicht verwendeten Ressourcen erhalten, kann Ihre Organisation die Kosten optimieren. Sie können beispielsweise eine Warnung festlegen, die ausgelöst wird, wenn die Abfrage ein nicht verwendetes Warehouse erkennt.

Warehouses mit der längsten Betriebszeit in einem Monat

Diese Abfrage zeigt an, welche Warehouses während eines bestimmten Monats am häufigsten verwendet wurden. Diese Abfrage verwendet „Juli“ als Beispiel.

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

Warnungsmöglichkeit: Möglicherweise möchten Sie Warehouses mit hoher Auslastung nachverfolgen. Sie können beispielsweise eine Warnung festlegen, die ausgelöst wird, wenn die Betriebszeiten für ein Warehouse einen bestimmten Schwellenwert überschreiten.

Warehouses, die die meiste Zeit im Laufe eines Monats hochskaliert haben

Diese Abfrage informiert Sie über Warehouses, die während eines Monats erheblich viel Zeit im hochskalierten Zustand verbracht haben. Diese Abfrage verwendet „Juli“ als Beispiel.

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;

Warnungsmöglichkeit: Möglicherweise möchten Sie Warehouses mit hoher Auslastung nachverfolgen. Sie können beispielsweise eine Warnung festlegen, die ausgelöst wird, wenn die Betriebszeiten für ein Warehouse einen bestimmten Schwellenwert überschreiten.