メインコンテンツまでスキップ

ワークスペース システムテーブル リファレンス

備考

プレビュー

このシステムテーブルは パブリック プレビュー段階です。

このページでは、ワークスペース システムテーブルを使用して、 Databricks アカウントのワークスペースを監視する方法について説明します。 テーブルの各行は、メタデータやライフサイクルステータスなど、アカウント内のアクティブなワークスペースの最新の既知の状態を表します。

このテーブルは、他のシステムテーブルと結合する場合に最も役立ちます。これを使用して、アカウント内のワークスペース全体の信頼性、パフォーマンス、コストに関する集計統計を取得できます。

注記

このテーブルには、現在アカウントにあるワークスペースのみが含まれます。ワークスペースがキャンセルされると、その行はワークスペース システムテーブルから削除されます。

テーブル パス : このテーブルは system.access.workspaces_latest

ワークスペース テーブル スキーマ

列名

データ型

説明

account_id

string

Databricks アカウントの ID

0722779a-fd4e-49c1-a7a6-8417a97cf9ea

workspace_id

string

Databricks ワークスペースの ID

'2274721051152826'

workspace_name

string

人間が判読できるワークスペースの名前

ドウ・レ・ミ

workspace_url

string

ワークスペースの URL

https://dough-re-mi-pizza.cloud.databricks.com/

create_time

timestamp

ワークスペースが作成された時点のタイムスタンプ (2 番目の精度)

2025-03-05 15:47

status

enum

ワークスペースのステータス。ワークスペースの作成では、最初は PROVISIONING に設定されます。ステータスが RUNNINGになるまで、ステータスの確認を続けます。

NOT_PROVISIONEDPROVISIONINGRUNNINGFAILEDBANNED

サンプル クエリ

次のセクションでは、ワークスペース システムテーブルを使用した SQL クエリのサンプルを示します。

現在実行されているワークスペースはどれですか?

次のクエリは、アカウントで現在 RUNNING 状態にあるすべてのワークスペースを示しています。

SQL
SELECT
workspace_id,
workspace_name,
workspace_url,
create_time
FROM
system.access.workspaces_latest
WHERE
status = "RUNNING";

最も支出が多いワークスペースはどれですか?

このクエリは、アカウント内の上位 10 個のワークスペースを、過去 30 日間の支出で計算します。

SQL
WITH
-- apply date filter
usage_with_ws_filtered_by_date AS (
SELECT
w.workspace_id,
w.workspace_name,
w.workspace_url,
u.usage_quantity,
u.usage_unit,
u.sku_name,
u.usage_end_time,
u.cloud
FROM
system.billing.usage AS u NATURAL JOIN system.access.workspaces_latest AS w
WHERE
u.usage_date > DATE_ADD(CURRENT_DATE(), -30)
),
-- calc list priced usage in USD
prices AS (
SELECT
COALESCE(price_end_time, DATE_ADD(current_date, 1)) AS coalesced_price_end_time,
*
FROM
system.billing.list_prices
WHERE
currency_code = 'USD'
),
list_priced_usd AS (
SELECT
COALESCE(u.usage_quantity * p.pricing.default, 0) as usage_usd,
u.*
FROM
usage_with_ws_filtered_by_date as u
LEFT JOIN prices AS p
ON u.sku_name = p.sku_name
AND u.cloud = p.cloud
AND u.usage_unit = p.usage_unit
AND (u.usage_end_time BETWEEN p.price_start_time AND p.coalesced_price_end_time)
)
-- calc total usage in USD
SELECT
workspace_id,
workspace_name,
workspace_url,
round(sum(usage_usd), 2) AS usage_usd
FROM
list_priced_usd
GROUP BY
1,
2,
3
ORDER BY
4 DESC
limit 10;

私のアカウント全体でどのジョブが最も高価ですか?

このクエリは、過去 30 日間にアカウントで最もコストの高いジョブの上位 10 件を計算します。

SQL
with usage_with_cost AS (
SELECT
*,
t1.usage_quantity * list_prices.pricing.default as list_cost
FROM system.billing.usage t1
INNER JOIN system.billing.list_prices list_prices on
t1.cloud = list_prices.cloud and
t1.sku_name = list_prices.sku_name and
t1.usage_start_time >= list_prices.price_start_time and
(t1.usage_end_time <= list_prices.price_end_time or list_prices.price_end_time is null)
),
most_expensive_jobs_30d AS (
SELECT
workspace_id,
usage_metadata.job_id,
SUM(list_cost) as list_cost
FROM usage_with_cost
WHERE
usage_metadata.job_id IS NOT NULL
AND usage_date >= CURRENT_DATE() - INTERVAL 30 DAYS
GROUP BY ALL
ORDER BY list_cost DESC
LIMIT 100
),
latest_jobs AS (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY workspace_id, job_id ORDER BY change_time DESC) as rn
FROM system.lakeflow.jobs QUALIFY rn=1
)
SELECT
t1.workspace_id,
t2.workspace_name,
t3.name as job_name,
CONCAT(
t2.workspace_url, '/jobs/', t1.job_id
) as job_url,
t1.list_cost
FROM most_expensive_jobs_30d t1
LEFT JOIN system.access.workspaces_latest t2 using (workspace_id)
LEFT JOIN latest_jobs t3 USING (workspace_id, job_id)
ORDER BY list_cost DESC
LIMIT 10;
Was this article helpful?