Prévoir plusieurs séries temporelles à l'aide d'une seule requête pour les trajets Citi Bike effectués dans la ville de New York


Dans ce tutoriel, vous allez apprendre à créer un ensemble de modèles de série temporelle afin d'effectuer plusieurs prévisions de séries temporelles à l'aide d'une seule requête. Vous apprendrez également à appliquer différentes stratégies d'entraînement rapide pour accélérer considérablement la requête, et à évaluer la précision des prévisions. Vous utiliserez les données new_york.citibike_trips. Ces données contiennent des informations sur les trajets Citi Bike effectués dans la ville de New York.

Avant de lire ce tutoriel, nous vous recommandons vivement de consulter la page Prévoir une série temporelle unique à partir de données Google Analytics.

Objectifs

Dans ce tutoriel, vous allez utiliser :

  • l'instruction CREATE MODEL, pour créer un modèle de série temporelle ou un ensemble de modèles de série temporelle ;
  • la fonction ML.ARIMA_EVALUATE pour évaluer le modèle ;
  • la fonction ML.ARIMA_COEFFICIENTS, pour inspecter les coefficients du modèle ;
  • la fonction ML.EXPLAIN_FORECAST, pour récupérer divers composants de la série temporelle (par exemple, la saisonnalité et la tendance) pouvant être utilisés pour expliquer les résultats des prévisions ;
  • Looker Studio, pour visualiser les résultats des prévisions
  • facultatif : la fonction ML.FORECAST, pour prévoir le nombre total de visites quotidiennes.

Coûts

Ce tutoriel utilise des composants facturables de Google Cloud, dont :

  • BigQuery
  • BigQuery ML

Pour plus d'informations sur les coûts de BigQuery, consultez la page Tarifs de BigQuery.

Pour en savoir plus sur les coûts associés à BigQuery ML, consultez la page Tarifs de BigQuery ML.

Avant de commencer

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. BigQuery est automatiquement activé dans les nouveaux projets. Pour activer BigQuery dans un projet préexistant, accédez à .

    Enable the BigQuery API.

    Enable the API

Étape 1 : Créer un ensemble de données

Vous allez créer un ensemble de données BigQuery pour stocker votre modèle de ML :

  1. Dans la console Google Cloud, accédez à la page "BigQuery".

    Accéder à la page "BigQuery"

  2. Dans le volet Explorateur, cliquez sur le nom de votre projet.

  3. Cliquez sur Afficher les actions > Créer un ensemble de données.

    Créer l'ensemble de données

  4. Sur la page Créer un ensemble de données, procédez comme suit :

    • Dans le champ ID de l'ensemble de données, saisissez bqml_tutorial.

    • Pour Type d'emplacement, sélectionnez Multirégional, puis sélectionnez US (plusieurs régions aux États-Unis).

      Les ensembles de données publics sont stockés dans l'emplacement multirégional US. Par souci de simplicité, stockez votre ensemble de données dans le même emplacement.

    • Conservez les autres paramètres par défaut, puis cliquez sur Créer un ensemble de données.

      Créer une page d'ensemble de données

Étape 2 (facultative) : Visualiser la série temporelle pour lesquelles vous souhaitez effectuer des prévisions

Avant de créer le modèle, il est utile de voir à quoi ressemble votre série temporelle d'entrée. Pour ce faire, vous pouvez utiliser Looker Studio.

Dans la requête suivante, la clause FROM bigquery-public-data.new_york.citibike_trips indique que vous interrogez la table citibike_trips dans l'ensemble de données new_york.

Dans l'instruction SELECT, la requête utilise la fonction EXTRACT pour extraire les informations de date de la colonne starttime. La requête utilise la clause COUNT(*) pour obtenir le nombre quotidien total de trajets Citi Bike.

#standardSQL
SELECT
   EXTRACT(DATE from starttime) AS date,
   COUNT(*) AS num_trips
FROM
  `bigquery-public-data.new_york.citibike_trips`
GROUP BY date

Pour exécuter la requête, procédez comme suit :

  1. Dans la console Google Cloud, cliquez sur le bouton Saisir une nouvelle requête.

  2. Saisissez la requête GoogleSQL suivante dans la zone de texte Éditeur de requête.

    #standardSQL
    SELECT
       EXTRACT(DATE from starttime) AS date,
       COUNT(*) AS num_trips
    FROM
      `bigquery-public-data.new_york.citibike_trips`
    GROUP BY date
    
  3. Cliquez sur Exécuter.

    Une fois la requête exécutée, la sortie ressemble à la capture d'écran suivante. Elle montre que cette série temporelle comporte 1 184 points de données quotidiens, couvrant plus de quatre ans. Cliquez sur le bouton Explorer les données, puis sur Explorer avec Looker Studio. Looker Studio s'ouvre dans un nouvel onglet. Procédez comme suit dans le nouvel onglet.

    Sortie de la requête

  4. Dans le panneau Chart (Graphique), sélectionnez Time series chart (Graphique de séries temporelles) :

    Time_series_chart

  5. Dans le panneau Data (Données) situé sous le panneau Chart (Graphique), accédez à la section Metric (Métrique). Ajoutez le champ num_trips (nombre de trajets), puis supprimez la métrique par défaut Record Count (Nombre d'enregistrements).

    Time_series_data_fields

    Une fois l'étape ci-dessus terminée, le graphique suivant s'affiche. Il montre que la série temporelle d'entrée présente des tendances hebdomadaires et annuelles. La série temporelle est également en augmentation.

    Result_visualization

Étape 3 : Créer un modèle de série temporelle pour effectuer une prévision de série temporelle unique

Créez ensuite un modèle de série temporelle à l'aide des données des trajets Citi Bike effectués dans la ville de New York.

La requête GoogleSQL suivante crée un modèle permettant de prévoir le nombre total de trajets à vélo quotidiens. La clause CREATE MODEL crée et entraîne un modèle nommé bqml_tutorial.nyc_citibike_arima_model.

#standardSQL
CREATE OR REPLACE MODEL `bqml_tutorial.nyc_citibike_arima_model`
OPTIONS
  (model_type = 'ARIMA_PLUS',
   time_series_timestamp_col = 'date',
   time_series_data_col = 'num_trips'
  ) AS
SELECT
   EXTRACT(DATE from starttime) AS date,
   COUNT(*) AS num_trips
FROM
  `bigquery-public-data.new_york.citibike_trips`
GROUP BY date

La clause OPTIONS(model_type='ARIMA_PLUS', time_series_timestamp_col='date', ...) indique que vous créez un modèle de série temporelle basé sur ARIMA. Par défaut, auto_arima=TRUE. L'algorithme auto.ARIMA ajuste donc automatiquement les hyperparamètres des modèles ARIMA_PLUS. L'algorithme s'adapte à des dizaines de modèles candidats et choisit le meilleur d'entre eux, qui présente l'AIC (Akaike information criterion) le plus faible. De plus, comme la valeur par défaut est data_frequency='AUTO_FREQUENCY', le processus d'entraînement déduit automatiquement la fréquence des données de la série temporelle d'entrée. Enfin, l'instruction CREATE MODEL utilise la valeur decompose_time_series=TRUE par défaut, et les utilisateurs peuvent mieux comprendre comment les séries temporelles sont prévues en récupérant les différents composants de séries temporelles, tels que les périodes saisonnières et les effets des jours fériés.

Exécutez la requête CREATE MODEL pour créer et entraîner votre modèle :

  1. Dans la console Google Cloud, cliquez sur le bouton Saisir une nouvelle requête.

  2. Saisissez la requête GoogleSQL suivante dans la zone de texte Éditeur de requête.

    #standardSQL
    CREATE OR REPLACE MODEL `bqml_tutorial.nyc_citibike_arima_model`
    OPTIONS
      (model_type = 'ARIMA_PLUS',
       time_series_timestamp_col = 'date',
       time_series_data_col = 'num_trips'
      ) AS
    SELECT
       EXTRACT(DATE from starttime) AS date,
       COUNT(*) AS num_trips
    FROM
      `bigquery-public-data.new_york.citibike_trips`
    GROUP BY date
    
  3. Cliquez sur Exécuter.

    L'exécution de la requête prend environ 17 secondes, puis votre modèle (nyc_citibike_arima_model) s'affiche sur le panneau de navigation. Étant donné que la requête utilise une instruction CREATE MODEL pour créer un modèle, les résultats de la requête ne sont pas affichés.

Étape 4 : Prévoir la série temporelle et visualiser les résultats

Pour expliquer comment les séries temporelles sont prévues, visualisez tous les composants de la série inférieure, tels que la saisonnalité et la tendance, à l'aide de la fonction ML.EXPLAIN_FORECAST.

Pour ce faire, procédez comme suit :

  1. Dans la console Google Cloud, cliquez sur le bouton Saisir une nouvelle requête.

  2. Saisissez la requête GoogleSQL suivante dans la zone de texte Éditeur de requête.

    #standardSQL
    SELECT
      *
    FROM
      ML.EXPLAIN_FORECAST(MODEL `bqml_tutorial.nyc_citibike_arima_model`,
                          STRUCT(365 AS horizon, 0.9 AS confidence_level))
    
  3. Cliquez sur Exécuter.

  4. Une fois la requête terminée, cliquez sur le bouton Explorer les données, puis sur Explorer avec Looker Studio. Un nouvel onglet s'ouvre dans le navigateur. Dans le panneau Chart (Graphique), recherchez ensuite l'icône Time series chart (Graphique de séries temporelles) et cliquez dessus, comme illustré dans la capture d'écran suivante.

    Time_series_chart

  5. Dans le panneau Data (Données), procédez comme suit :

    1. Dans la section Date Range Dimension (Dimension associée à la plage de dates), sélectionnez time_series_timestamp (Date).
    2. Dans la section Dimension, sélectionnez time_series_timestamp (Date).
    3. Dans la section Metric (Métrique), supprimez la métrique par défaut Record Count, puis ajoutez les éléments suivants :
      • time_series_data
      • prediction_interval_lower_bound
      • prediction_interval_upper_bound
      • trend
      • seasonal_period_yearly
      • seasonal_period_weekly
      • spikes_and_dips
      • step_changes

    Time_series_chart

  6. Dans le panneau Style, faites défiler la page jusqu'à l'option Missing Data (Données manquantes) et utilisez Line Breaks (Sauts de ligne) au lieu de Line to Zero (Ligne à zéro).

    Style_section

    Une fois ces étapes terminées, le graphique suivant s'affiche dans le panneau de gauche.

    Result_visualization

Étape 5 : Prévoir plusieurs séries temporelles simultanément

Vous souhaiterez peut-être prévoir le nombre total de trajets quotidiens à partir de différentes stations Citi Bike. Pour ce faire, vous devez prévoir de nombreuses séries temporelles. Vous pouvez écrire plusieurs requêtes CREATE MODEL, mais cela peut être un processus fastidieux et chronophage, en particulier lorsque vous avez un grand nombre de séries temporelles.

Pour améliorer ce processus, BigQuery ML vous permet de créer un ensemble de modèles de série temporelle afin de prévoir plusieurs séries temporelles à l'aide d'une seule requête. En outre, tous les modèles de série temporelle sont ajustés simultanément.

Dans la requête GoogleSQL suivante, la clause CREATE MODEL crée et entraîne un ensemble de modèles nommé bqml_tutorial.nyc_citibike_arima_model_group.

 #standardSQL
CREATE OR REPLACE MODEL `bqml_tutorial.nyc_citibike_arima_model_group`
OPTIONS
  (model_type = 'ARIMA_PLUS',
   time_series_timestamp_col = 'date',
   time_series_data_col = 'num_trips',
   time_series_id_col = 'start_station_name',
   auto_arima_max_order = 5
  ) AS
SELECT
   start_station_name,
   EXTRACT(DATE from starttime) AS date,
   COUNT(*) AS num_trips
FROM
  `bigquery-public-data.new_york.citibike_trips`
WHERE start_station_name LIKE '%Central Park%'
GROUP BY start_station_name, date

La clause OPTIONS(model_type='ARIMA_PLUS', time_series_timestamp_col='date', ...) indique que vous créez un ensemble de modèles de série temporelle ARIMA_PLUS basés sur ARIMA. Outre time_series_timestamp_col et time_series_data_col, vous devez spécifier time_series_id_col, qui permet d'annoter différentes séries temporelles d'entrée. L'option auto_arima_max_order contrôle l'espace de recherche pour le réglage d'hyperparamètres dans l'algorithme auto.ARIMA. Enfin, l'instruction CREATE MODEL utilise decompose_time_series=TRUE par défaut. Les utilisateurs peuvent aussi mieux comprendre comment l'analyse de la série temporelle dans le pipeline d'entraînement consiste à récupérer les résultats de décomposition.

La clause SELECT ... FROM ... GROUP BY ... indique que vous formez plusieurs séries temporelles, chacune étant associée à une valeur différente de start_station_name. Pour plus de simplicité, utilisez la clause WHERE ... LIKE ... pour limiter les stations de départ à celles dont le nom contient Central Park.

Pour exécuter la requête CREATE MODEL afin de créer et d'entraîner votre modèle, procédez comme suit :

  1. Dans la console Google Cloud, cliquez sur le bouton Saisir une nouvelle requête.

  2. Saisissez la requête GoogleSQL suivante dans la zone de texte Éditeur de requête.

    #standardSQL
    CREATE OR REPLACE MODEL `bqml_tutorial.nyc_citibike_arima_model_group`
    OPTIONS
      (model_type = 'ARIMA_PLUS',
       time_series_timestamp_col = 'date',
       time_series_data_col = 'num_trips',
       time_series_id_col = 'start_station_name',
       auto_arima_max_order = 5
      ) AS
    SELECT
       start_station_name,
       EXTRACT(DATE from starttime) AS date,
       COUNT(*) AS num_trips
    FROM
      `bigquery-public-data.new_york.citibike_trips`
    WHERE start_station_name LIKE '%Central Park%'
    GROUP BY start_station_name, date
    
  3. Cliquez sur Exécuter.

    L'exécution de la requête prend environ 24 secondes, puis votre modèle (nyc_citibike_arima_model_group) s'affiche sur le panneau de navigation. Comme la requête utilise une instruction CREATE MODEL, les résultats de la requête ne sont pas affichés.

Étape 6 : Examiner les métriques d'évaluation de l'ensemble des modèles de série temporelle

Après avoir créé vos modèles, vous pouvez utiliser la fonction ML.ARIMA_EVALUATE pour afficher les métriques d'évaluation de tous les modèles créés.

Dans la requête GoogleSQL suivante, la clause FROM utilise la fonction ML.ARIMA_EVALUATE sur votre modèle bqml_tutorial.nyc_citibike_arima_model_group. Les métriques d'évaluation ne dépendent que de l'entrée d'entraînement. Par conséquent, votre modèle est la seule entrée.

Pour exécuter la requête ML.ARIMA_EVALUATE, procédez comme suit :

  1. Dans la console Google Cloud, cliquez sur le bouton Saisir une nouvelle requête.

  2. Saisissez la requête GoogleSQL suivante dans la zone de texte Éditeur de requête.

    #standardSQL
    SELECT
     *
    FROM
     ML.ARIMA_EVALUATE(MODEL `bqml_tutorial.nyc_citibike_arima_model_group`)
    
  3. Cliquez sur Exécuter.

  4. L'exécution de la requête prend moins d'une seconde. Lorsque la requête est terminée, cliquez sur l'onglet Results (Résultats) situé sous la zone de texte de la requête. Les résultats doivent se présenter sous la forme suivante :

    Résultat de ML.EVALUATE.

    Les résultats incluent les colonnes suivantes :

    • start_station_name
    • non_seasonal_p
    • non_seasonal_d
    • non_seasonal_q
    • has_drift
    • log_likelihood
    • AIC
    • variance
    • seasonal_periods
    • has_holiday_effect
    • has_spikes_and_dips
    • has_step_changes
    • error_message

    La première colonne (start_station_name) annote la série temporelle par rapport à laquelle chaque modèle de série temporelle est ajusté. Elle est identique à celle qui est spécifiée par time_series_id_col.

    Les quatre colonnes suivantes (non_seasonal_p, non_seasonal_d, non_seasonal_q et has_drift) définissent un modèle ARIMA dans le pipeline d'entraînement. Les trois métriques qui les suivent (log_likelihood, AIC et variance) sont pertinentes pour le processus d'ajustement du modèle ARIMA. Le processus d'ajustement détermine le meilleur modèle ARIMA à l'aide de l'algorithme auto.ARIMA. Un algorithme est utilisé pour chaque série temporelle.

    Les colonnes has_holiday_effect, has_spikes_and_dips et has_step_changes ne sont renseignées que lorsque decompose_time_series=TRUE.

    La colonne seasonal_periods correspond à la tendance saisonnière dans la série temporelle d'entrée. Chaque série temporelle peut présenter des tendances saisonnières différentes. Par exemple, la figure montre qu'une série temporelle présente une tendance annuelle, contrairement aux autres.

Étape 7 : Inspecter les coefficients de vos modèles

La fonction ML.ARIMA_COEFFICIENTS permet de récupérer les coefficients de votre modèle ARIMA_PLUS (bqml_tutorial.nyc_citibike_arima_model_group). ML.ARIMA_COEFFICIENTS utilise le modèle comme seule entrée.

Pour exécuter la requête ML.ARIMA_COEFFICIENTS, procédez comme suit :

  1. Dans la console Google Cloud, cliquez sur le bouton Saisir une nouvelle requête.

  2. Saisissez la requête GoogleSQL suivante dans la zone de texte Éditeur de requête.

    #standardSQL
    SELECT
     *
    FROM
     ML.ARIMA_COEFFICIENTS(MODEL `bqml_tutorial.nyc_citibike_arima_model_group`)
    
  3. Cliquez sur Exécuter.

    L'exécution de la requête prend moins d'une seconde. Les résultats doivent ressembler à la capture d'écran suivante :

    Sortie de ML.ARIMA_COEFFICIENTS

    Les résultats incluent les colonnes suivantes :

    • start_station_name
    • ar_coefficients
    • ma_coefficients
    • intercept_or_drift

    La première colonne (start_station_name) annote la série temporelle par rapport à laquelle chaque modèle de série temporelle est ajusté.

    ar_coefficients affiche les coefficients de modèle de la partie autorégressive (AR) du modèle ARIMA. De la même manière, ma_coefficients affiche les coefficients de modèle de la partie moyenne mobile (MA, moving-average). Il s'agit de deux tableaux, dont la longueur est respectivement égale à non_seasonal_p et non_seasonal_q. intercept_or_drift est le terme constant dans le modèle ARIMA.

Étape 8 : Utiliser votre modèle pour prévoir plusieurs séries temporelles simultanément avec des explications

La fonction ML.EXPLAIN_FORECAST prédit les valeurs futures des séries temporelles avec un intervalle de prédiction à l'aide de votre modèle, bqml_tutorial.nyc_citibike_arima_model_group, et renvoie simultanément tous les composants distincts de la série temporelle.

La clause STRUCT(3 AS horizon, 0.9 AS confidence_level) indique que la requête prévoit trois points temporels futurs et génère un intervalle de prédiction avec un indice de confiance de 90 %. La fonction ML.EXPLAIN_FORECAST utilise le modèle, ainsi que quelques arguments facultatifs.

Pour exécuter la requête ML.EXPLAIN_FORECAST, procédez comme suit :

  1. Dans la console Google Cloud, cliquez sur le bouton Saisir une nouvelle requête.

  2. Saisissez la requête GoogleSQL suivante dans la zone de texte Éditeur de requête.

    #standardSQL
    SELECT
     *
    FROM
     ML.EXPLAIN_FORECAST(MODEL `bqml_tutorial.nyc_citibike_arima_model_group`,
                         STRUCT(3 AS horizon, 0.9 AS confidence_level))
    
  3. Cliquez sur Exécuter.

    L'exécution de la requête prend moins d'une seconde. Les résultats doivent se présenter sous la forme suivante :

    ML.EXPLAIN_FORECAST output1. ML.EXPLAIN_FORECAST output2.

    Les résultats incluent les colonnes suivantes :

    • start_station_name
    • time_series_timestamp
    • time_series_type
    • time_series_data
    • time_series_adjusted_data
    • standard_error
    • confidence_level
    • prediction_interval_lower_bound
    • prediction_interval_lower_bound
    • trend
    • seasonal_period_yearly
    • seasonal_period_quarterly
    • seasonal_period_monthly
    • seasonal_period_weekly
    • seasonal_period_daily
    • holiday_effect
    • spikes_and_dips
    • step_changes
    • residual

    Les lignes de sortie sont triées par start_station_name et, pour chaque valeur start_station_name, les lignes de sortie sont dans l'ordre chronologique de time_series_timestamp. Différents composants sont répertoriés sous forme de colonnes de sortie. Pour plus d'informations, consultez la définition de ML.EXPLAIN_FORECAST.

(Facultatif) Étape 9 : Utiliser le modèle pour prévoir plusieurs séries temporelles simultanément

La fonction ML.FORECAST permet également de prévoir les valeurs futures des séries temporelles avec un intervalle de prédiction à l'aide de votre modèle, bqml_tutorial.nyc_citibike_arima_model_group.

Comme ML.EXPLAIN_FORECAST, la clause STRUCT(3 AS horizon, 0.9 AS confidence_level) indique que pour chaque série temporelle, la requête prévoit trois points temporels futurs et génère un intervalle de prédiction avec un indice de confiance de 90 %.

La fonction ML.FORECAST utilise le modèle, ainsi que quelques arguments facultatifs.

Pour exécuter la requête ML.FORECAST, procédez comme suit :

  1. Dans la console Google Cloud, cliquez sur le bouton Saisir une nouvelle requête.

  2. Saisissez la requête GoogleSQL suivante dans la zone de texte Éditeur de requête.

    #standardSQL
    SELECT
     *
    FROM
     ML.FORECAST(MODEL `bqml_tutorial.nyc_citibike_arima_model_group`,
                 STRUCT(3 AS horizon, 0.9 AS confidence_level))
    
  3. Cliquez sur Exécuter.

    L'exécution de la requête prend moins d'une seconde. Les résultats doivent se présenter sous la forme suivante :

    Sortie de ML.FORECAST.

    Les résultats incluent les colonnes suivantes :

    • start_station_name
    • forecast_timestamp
    • forecast_value
    • standard_error
    • confidence_level
    • prediction_interval_lower_bound
    • prediction_interval_upper_bound
    • confidence_interval_lower_bound (bientôt obsolète)
    • confidence_interval_upper_bound (bientôt obsolète)

    La première colonne (start_station_name) annote la série temporelle par rapport à laquelle chaque modèle de série temporelle est ajusté. Chaque start_station_name comporte un nombre de lignes horizon pour les résultats de ses prévisions.

    Pour chaque start_station_name, les lignes de sortie sont triées dans l'ordre chronologique de forecast_timestamp. Dans les prévisions de séries temporelles, l'intervalle de prédiction, délimité par les limites inférieure et supérieure, est aussi important que forecast_value. forecast_value est le point central de l'intervalle de prédiction. L'intervalle de prédiction dépend de standard_error et de confidence_level.

Nettoyer

Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.

  • Supprimez le projet que vous avez créé.
  • Ou conservez le projet et supprimez l'ensemble de données.

Supprimer l'ensemble de données

La suppression de votre projet entraîne celle de tous les ensembles de données et de toutes les tables qui lui sont associés. Si vous préférez réutiliser le projet, vous pouvez supprimer l'ensemble de données que vous avez créé dans ce tutoriel :

  1. Si nécessaire, ouvrez la page BigQuery dans Cloud Console.

    Accéder à BigQuery

  2. Dans le panneau de navigation, cliquez sur l'ensemble de données bqml_tutorial que vous avez créé.

  3. Cliquez sur Supprimer l'ensemble de données pour supprimer l'ensemble de données, la table, ainsi que toutes les données.

  4. Dans la boîte de dialogue Supprimer l'ensemble de données, confirmez la commande de suppression en saisissant le nom de votre ensemble de données (bqml_tutorial), puis cliquez sur Supprimer.

Supprimer votre projet

Pour supprimer le projet :

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Étape suivante