Freigeben über


Verweis auf die Systemtabelle für Arbeitsbereiche

Von Bedeutung

Diese Systemtabelle befindet sich in der Public Preview.

Auf dieser Seite wird erläutert, wie Sie die Arbeitsbereiche-Systemtabelle verwenden, um Arbeitsbereiche in Ihrem Azure Databricks-Konto zu überwachen. Jede Zeile in der Tabelle stellt den neuesten bekannten Status eines aktiven Arbeitsbereichs in Ihrem Konto dar, einschließlich Metadaten und Lebenszyklusstatus.

Diese Tabelle ist am nützlichsten, wenn sie mit anderen Systemtabellen verknüpft ist. Sie können es verwenden, um aggregierte Statistiken zu Zuverlässigkeit, Leistung und Kosten für Arbeitsbereiche in Ihrem Konto zu erhalten.

Hinweis

Die Tabelle enthält nur Arbeitsbereiche, die sich derzeit in Ihrem Konto befinden. Nachdem ein Arbeitsbereich abgebrochen wurde, wird seine Zeile aus der Arbeitsbereichs-Systemtabelle entfernt.

Tabellenpfad: Diese Tabelle befindet sich unter system.access.workspaces_latest

Arbeitsbereichstabellenschema

Spaltenname Datentyp BESCHREIBUNG Beispiel
account_id Schnur ID des Databricks-Kontos 0722779a-fd4e-49c1-a7a6-8417a97cf9ea
workspace_id Schnur ID des Databricks-Arbeitsbereichs '2274721051152826'
workspace_name Schnur Der lesbare Name des Arbeitsbereichs teig-re-mi
workspace_url Schnur URL des Arbeitsbereichs https://dough-re-mi-pizza.cloud.databricks.com/
create_time Zeitstempel Zeitstempel der Erstellung des Arbeitsbereichs (Sekundengenauigkeit) 2025-03-05 15:47
status Enum Der Status des Arbeitsbereichs. Für die Arbeitsbereichserstellung ist es zunächst auf PROVISIONING eingestellt. Fahren Sie mit dem Überprüfen des Status fort, bis der Status lautet RUNNING. NOT_PROVISIONED, , PROVISIONINGRUNNING, , FAILEDBANNED

Beispielabfragen

Die folgenden Abschnitte enthalten Beispiel-SQL-Abfragen mithilfe der Arbeitsbereichssystemtabelle.

Welche Arbeitsbereiche laufen gerade?

Die folgende Abfrage zeigt alle Arbeitsbereiche, die derzeit im RUNNING-Status in Ihrem Konto sind.

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

Welche Arbeitsbereiche haben die höchsten Ausgaben?

Diese Abfrage berechnet die Top 10 Arbeitsbereiche in Ihrem Konto basierend auf den Ausgaben in den letzten 30 Tagen.

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;

Welche Jobs über mein Konto sind die teuersten?

Diese Abfrage berechnet die 10 teuersten Aufträge in Ihrem Konto in den letzten 30 Tagen.

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;