Partager via


Référence de table système des événements d’entrepôt

Important

Cette fonctionnalité est disponible en préversion publique.

Dans cet article, vous allez apprendre à utiliser la table système des événements d’entrepôt pour surveiller et gérer les entrepôts SQL dans vos espaces de travail. Cette table enregistre une ligne chaque fois qu'un entrepôt démarre, s'arrête, s'exécute, et effectuer un scale-up ou un scale-down. Vous pouvez utiliser les exemples de requêtes de cet article avec des alertes pour vous tenir informé des modifications apportées à vos entrepôts.

La table système des événements de l’entrepôt se trouve à l’emplacement suivant : system.compute.warehouse_events.

Types d’événements de l’entrepôt journalisés

Cette table système enregistre les types d’événements suivants :

  • SCALED_UP: Un nouveau cluster a été ajouté à l’entrepôt.
  • SCALED_DOWN: Un cluster a été supprimé de l’entrepôt.
  • STOPPING : l’entrepôt est en cours d’arrêt.
  • RUNNING : l’entrepôt est en cours d’exécution.
  • STARTING : l’entrepôt est en cours de démarrage.
  • STOPPED : l’entrepôt a complètement cessé de s’exécuter.

Schéma des événements d’entrepôt

La table système warehouse_events utilise le schéma suivant :

Nom de la colonne Type de données Description Exemple :
account_id string ID d’un compte Azure Databricks. 7af234db-66d7-4db3-bbf0-956098224879
workspace_id string ID de l’espace de travail où l’entrepôt est déployé. 123456789012345
warehouse_id string ID de l'entrepôt SQL auquel l'événement est lié. 123456789012345
event_type string Type d’événement d’entrepôt. Les valeurs possibles sont SCALED_UP, SCALED_DOWN, STOPPING, RUNNING, STARTING et STOPPED. SCALED_UP
cluster_count entier Nombre de clusters en cours d’exécution. 2
event_time timestamp Horodatage du moment où l’événement a eu lieu. 2023-07-20T19:13:09.504Z

Exemples de requêtes

Les exemples de requêtes suivants sont des modèles. Intégrez les valeurs qui ont du sens pour votre organisation. Vous pouvez également ajouter des alertes à ces requêtes pour vous aider à rester informé des modifications apportées à vos entrepôts. Consultez Créer une alerte.

Utilisez les exemples de requêtes suivants pour obtenir un aperçu du comportement de l’entrepôt :

Quels entrepôts sont actuellement en cours d'exécution et depuis combien de temps ?

Cette requête identifie les entrepôts actuellement actifs, ainsi que leur temps de fonctionnement en heures.

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
)

Opportunité d’alerte : en tant qu’administrateur d’espace de travail, vous pouvez être alerté si un entrepôt fonctionne plus longtemps que prévu. Par exemple, vous pouvez utiliser les résultats de la requête pour définir une condition d’alerte à déclencher lorsque les heures de fonctionnement dépassent un certain seuil.

Identifier les entrepôts qui sont mis à l’échelle plus longtemps que prévu

Cette requête identifie les entrepôts actuellement actifs, ainsi que leur temps de fonctionnement en heures.

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
   )

Opportunité d’alerte : l’alerte sur cette condition peut vous aider à surveiller les ressources et les coûts. Vous pouvez définir une alerte lorsque les heures de mise à l’échelle dépassent une certaine limite.

Entrepôts qui démarrent pour la première fois

Cette requête vous informe des nouveaux entrepôts qui démarrent pour la première fois.

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
   )

Opportunité d’alerte : l'envoi d'alertes pour les nouveaux entrepôts peut aider votre organisation à suivre l'allocation des ressources. Par exemple, vous pourriez configurer une alerte qui se déclenche à chaque fois qu'un nouvel entrepôt démarre.

Examiner les frais de facturation

Si vous souhaitez comprendre spécifiquement ce qu’un entrepôt faisait pour générer des frais de facturation, cette requête peut vous indiquer les dates et heures exactes auxquelles l'entrepôt a augmenté ou diminué en capacité, ou a démarré et arrêté son activité.

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

Quels entrepôts n’ont pas été utilisés au cours des 30 derniers jours ?

Cette requête vous aide à identifier les ressources inutilisées, ce qui vous permet d’optimiser les coûts.

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

Opportunité d’alerte : la réception d’une alerte sur les ressources inutilisées peut aider votre organisation à optimiser les coûts. Par exemple, vous pouvez définir une alerte déclenchée lorsque la requête détecte un entrepôt inutilisé.

Entrepôts ayant le temps de fonctionnement le plus élevé en un mois

Cette requête indique quels entrepôts ont été utilisés le plus pendant un mois spécifique. Cette requête utilise le mois de juillet comme exemple.

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

Opportunité d’alerte : vous souhaiterez peut-être suivre les entrepôts à forte utilisation. Par exemple, vous pourriez définir une alerte qui se déclenche lorsque les heures de disponibilité d'un entrepôt dépassent un seuil spécifique.

Entrepôts qui ont passé le plus de temps en mise à l’échelle au cours d’un mois

Cette requête vous informe sur les entrepôts qui ont passé beaucoup de temps dans l’état de mise à l’échelle au cours d’un mois. Cette requête utilise le mois de juillet comme exemple.

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 limit 0;

Opportunité d’alerte : vous souhaiterez peut-être suivre les entrepôts à forte utilisation. Par exemple, vous pourriez définir une alerte qui se déclenche lorsque les heures de disponibilité d'un entrepôt dépassent un seuil spécifique.