Partager via


Informations de référence sur la table système des espaces de travail

Important

Cette table système est en préversion publique.

Cette page explique comment utiliser la table système des espaces de travail pour surveiller les espaces de travail dans votre compte Azure Databricks. Chaque ligne de la table représente l’état connu le plus récent d’un espace de travail actif dans votre compte, y compris les métadonnées et l’état du cycle de vie.

Cette table est la plus utile lorsqu’elle est jointe à d’autres tables système. Vous pouvez l’utiliser pour obtenir des statistiques agrégées sur la fiabilité, les performances et les coûts entre les espaces de travail de votre compte.

Remarque

La table inclut uniquement les espaces de travail actuellement dans votre compte. Une fois qu’un espace de travail est annulé, sa ligne est supprimée de la table système des espaces de travail.

Chemin d’accès de la table : cette table se trouve à l’emplacement system.access.workspaces_latest

Schéma de la table des espaces de travail

Nom de colonne Type de données Descriptif Exemple :
account_id ficelle ID du compte Databricks 0722779a-fd4e-49c1-a7a6-8417a97cf9ea
workspace_id ficelle ID de l’espace de travail Databricks '2274721051152826'
workspace_name ficelle Nom lisible par l’homme de l’espace de travail pâte-re-mi
workspace_url ficelle URL de l’espace de travail https://dough-re-mi-pizza.cloud.databricks.com/
create_time horodatage Horodatage de l’heure de création de l’espace de travail (seconde précision) 2025-03-05 15:47
status énumération État de l’espace de travail. Pour la création de l’espace de travail, il est défini sur PROVISIONING au départ. Continuez à vérifier l’état jusqu’à ce que l’état soit RUNNING. NOT_PROVISIONED, , PROVISIONINGRUNNING, , FAILEDBANNED

Exemples de requêtes

Les sections suivantes incluent des exemples de requêtes SQL à l’aide de la table système des espaces de travail.

Quels espaces de travail sont en cours d’exécution ?

La requête ci-dessous montre tous les espaces de travail dans votre compte qui sont actuellement dans l’état RUNNING.

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

Quels espaces de travail ont les dépenses les plus élevées ?

Cette requête calcule les 10 meilleurs espaces de travail de votre compte en fonction des dépenses au cours des 30 derniers jours.

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;

Quels travaux sur mon compte sont les plus coûteux ?

Cette requête calcule les 10 travaux les plus coûteux de votre compte au cours des 30 derniers jours.

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;