ウェアハウス イベント システム テーブルのリファレンス
プレビュー
このシステムテーブルは パブリック プレビュー段階です。 テーブルにアクセスするには、 system
カタログでスキーマを有効にする必要があります。 詳細については、「 システムテーブル スキーマを有効にする」を参照してください。
この記事では、ウェアハウス イベント システムテーブルを使用して、ワークスペース内の SQL ウェアハウスを監視および管理する方法を学習します。 このテーブルには、ウェアハウスが開始、停止、実行、スケールアップ、スケールダウンするたびに行が記録されます。 この記事のサンプルクエリをアラートと組み合わせて使用すると、ウェアハウスの変更について通知を受けることができます。
ウェアハウス events システムテーブルはsystem.compute.warehouse_events
にあります。
記録されたウェアハウスイベントの種類
このシステムテーブルには、次の種類のイベントが記録されます。
SCALED_UP
: ウェアハウスに新しいクラスターが追加されました。SCALED_DOWN
: クラスターがウェアハウスから削除されました。STOPPING
: ウェアハウスは停止中です。RUNNING
: ウェアハウスは活発に稼働しています。STARTING
: ウェアハウスは立ち上げ中です。STOPPED
: ウェアハウスは完全に停止しました。
ウェアハウスイベントスキーマ
warehouse_events
システムテーブルは次のスキーマを使用します:
列名 |
データ型 |
説明 |
例 |
---|---|---|---|
|
string |
Databricks アカウントの ID。 |
|
|
string |
ウェアハウスがデプロイされているワークスペースの ID。 |
|
|
string |
イベントが関連する SQL ウェアハウスの ID。 |
|
|
string |
ウェアハウスイベントの種類。 指定できる値は、 |
|
|
整数タイプ |
アクティブに実行されているクラスターの数。 |
|
|
timestamp |
イベントが発生した日時のタイムスタンプ (UTC)。 |
|
サンプル クエリ
次のサンプル クエリはテンプレートです。 組織にとって意味のある価値をプラグインします。 これらのクエリにアラートを追加して、ウェアハウスの変更について常に最新情報を入手することもできます。 「アラートを作成する」を参照してください。
ウェアハウスの動作に関する知見を得るには、次のサンプル クエリを使用します。
どのウェアハウスが現在実行中で、どのくらいの長さ実行されていますか?
このクエリは、現在アクティブなウェアハウスとその稼働時間(時間単位)を識別します。
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
アラートの機会: 未使用のリソースに関するアラートを受け取ると、組織はコストを最適化できるようになります。 たとえば、クエリが未使用のウェアハウスを検出したときにトリガーされるアラートを設定できます。
1か月間の稼働時間が最も長いウェアハウス
このクエリは、特定の月にどのウェアハウスが最も多く使用されたかを表示します。 このクエリでは、例として 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
アラート機会: 利用率の高いウェアハウスを追跡することをお勧めします。 たとえば、ウェアハウスの稼働時間が特定のしきい値を超えたときにトリガーされるアラートを設定できます。