ウェアハウス・イベント・システム・テーブル・リファレンス

プレビュー

この機能は パブリックプレビュー版です。

この記事では、ウェアハウス イベント システム テーブルを使用して、ワークスペース内の SQLウェアハウスを監視および管理する方法について説明します。 このテーブルには、ウェアハウスが開始、停止、実行、およびスケールアップおよびスケールダウンされるたびに行が記録されます。 この記事のサンプル クエリをアラートと共に使用して、ウェアハウスへの変更を通知し続けることができます。

ウェアハウス・イベント・システム・テーブルは、 system.compute.warehouse_eventsにあります。

ログに記録されたウェアハウスイベントの種類

このシステム・テーブルは、次のタイプのイベントをログに記録します。

  • SCALED_UP: 新しいクラスターがウェアハウスに追加されました。

  • SCALED_DOWN: クラスターがウェアハウスから削除されました。

  • STOPPING:ウェアハウスは停止中です。

  • RUNNING: ウェアハウスはアクティブに実行されています。

  • STARTING: ウェアハウスは起動中です。

  • STOPPED:ウェアハウスは完全に停止しました。

ウェアハウス・イベント・スキーマ

warehouse_events システムテーブルは、次のスキーマを使用します。

列名

データ型

説明

account_id

string

Databricks アカウントの ID。

7af234db-66d7-4db3-bbf0-956098224879

workspace_id

string

ウェアハウスがデプロイされているワークスペースの ID。

123456789012345

warehouse_id

string

イベントが関連付けられている SQLウェアハウスの ID。

123456789012345

event_type

string

ウェアハウスイベントのタイプ。 指定できる値は、 SCALED_UPSCALED_DOWNSTOPPINGRUNNINGSTARTINGSTOPPEDです。

SCALED_UP

cluster_count

整数タイプ

アクティブに実行されているクラスターの数。

2

event_time

timestamp

イベントが発生したときのタイムスタンプ。

2023-07-20T19:13:09.504Z

サンプル クエリ

次のサンプル クエリはテンプレートです。 組織にとって意味のある価値をプラグインします。 また、これらのクエリにアラートを追加して、ウェアハウスへの変更について常に情報を得ることもできます。 「 アラートの作成」を参照してください。

次のサンプル クエリを使用して、ウェアハウスの動作を把握します。

どのウェアハウスがどのくらいの期間アクティブに稼働しているか?

このクエリは、現在アクティブなウェアハウスとその実行時間 (時間単位) を識別します。

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
)

アラートの機会: ワークスペース管理者は、ウェアハウスが予想よりも長く実行されている場合にアラートを受け取ることができます。 たとえば、クエリ結果を使用して、実行時間が特定のしきい値を超えたときにトリガーされるアラート条件を設定できます。

予想よりも長くアップスケールされているウェアハウスを特定する

このクエリは、現在アクティブなウェアハウスとその実行時間 (時間単位) を識別します。

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
   )

アラートの機会: この条件に関するアラートは、リソースとコストを監視するのに役立ちます。 アップスケールされた時間が特定の制限を超えたときにアラートを設定できます。

初めて起動するウェアハウス

この照会は、初めて開始される新規ウェアハウスについて通知します。

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
   )

アラートの機会: 新しいウェアハウスに関するアラートは、組織がリソース割り当てを追跡するのに役立ちます。 たとえば、新しいウェアハウスが起動するたびにトリガーされるアラートを設定できます。

請求料金の調査

ウェアハウスが請求料金を生成するために何をしていたかを具体的に理解したい場合は、このクエリで、ウェアハウスがスケールアップまたはスケールダウン、または開始と停止を行った正確な日時を知ることができます。

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

過去 30 日間に使用されていないウェアハウスはどれですか?

このクエリは、未使用のリソースを特定するのに役立ち、コスト最適化の機会を提供します。

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

アラートの機会: 未使用のリソースに関するアラートを受信すると、組織がコストを最適化するのに役立つ可能性があります。 たとえば、クエリが未使用のウェアハウスを検出したときにトリガーされるアラートを設定できます。

月間稼働率が最も長いウェアハウス

このクエリは、特定の月に最も使用されたウェアハウスを示します。 このクエリでは、例として July を使用します。

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

アラートの機会: 使用率の高いウェアハウスを追跡することができます。 たとえば、ウェアハウスの稼働時間が特定のしきい値を超えたときにトリガーされるアラートを設定できます。

1ヶ月にアップスケールに最も時間を費やしたウェアハウス

このクエリは、1 か月間にアップスケーリングされた状態でかなりの時間を費やしたウェアハウスについて通知します。 このクエリでは、例として July を使用します。

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;

アラートの機会: 使用率の高いウェアハウスを追跡することができます。 たとえば、ウェアハウスの稼働時間が特定のしきい値を超えたときにトリガーされるアラートを設定できます。

ウェアハウス Running Uptime by Date

このクエリは、ウェアハウスが実行されていた合計分数を日付別に整理して通知します。 このクエリは、予測のベースとして使用できます。

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;