Bagikan melalui


Referensi tabel sistem ruang kerja

Penting

Tabel sistem ini berada dalam Pratinjau Umum.

Halaman ini menjelaskan cara menggunakan tabel sistem ruang kerja untuk memantau ruang kerja di akun Azure Databricks Anda. Setiap baris dalam tabel mewakili status ruang kerja aktif terbaru yang diketahui di akun Anda, termasuk metadata dan status siklus hidup.

Tabel ini paling berguna ketika digabungkan dengan tabel sistem lainnya. Anda dapat menggunakannya untuk mendapatkan statistik agregat tentang keandalan, performa, dan biaya di seluruh ruang kerja di akun Anda.

Nota

Tabel hanya menyertakan ruang kerja yang saat ini ada di akun Anda. Setelah ruang kerja dibatalkan, barisnya dihapus dari tabel sistem ruang kerja.

Jalur tabel: Tabel ini terletak di system.access.workspaces_latest

Skema tabel ruang kerja

Nama kolom Jenis data Deskripsi Contoh
account_id string ID akun Databricks 0722779a-fd4e-49c1-a7a6-8417a97cf9ea
workspace_id string ID ruang kerja Databricks '2274721051152826'
workspace_name string Nama ruang kerja yang dapat dibaca manusia Adonan-re-mi
workspace_url string URL ruang kerja https://dough-re-mi-pizza.cloud.databricks.com/
create_time stempel waktu Penanda waktu ketika ruang kerja dibuat, dengan presisi hingga detik. 2025-03-05 15:47
status enum Status ruang kerja. Untuk pembuatan ruang kerja, diatur ke PROVISIONING pada awalnya. Lanjutkan untuk memeriksa status sampai statusnya adalah RUNNING. NOT_PROVISIONED, , PROVISIONINGRUNNING, , FAILED,BANNED

Contoh pertanyaan

Bagian berikut menyertakan sampel kueri SQL menggunakan tabel sistem ruang kerja.

Ruang kerja mana yang sedang berjalan?

Kueri di bawah ini memperlihatkan semua ruang kerja yang saat ini dalam status RUNNING di akun Anda.

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

Ruang kerja mana yang memiliki pengeluaran tertinggi?

Kueri ini menghitung 10 ruang kerja teratas di akun Anda berdasarkan pengeluaran dalam 30 hari terakhir.

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;

Pekerjaan mana di seluruh akun saya yang paling mahal?

Kueri ini menghitung 10 pekerjaan termahal teratas di akun Anda dalam 30 hari terakhir.

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;