Aller au contenu principal

Configurer une query récurrente avec prise en charge du remplissage à l'aide de Lakeflow Jobs

Un scénario courant est une query qui est exécutée selon un calendrier régulier avec un Job qui l'orchestre. Par exemple, à la fin de chaque journée, une query est exécutée pour mettre à jour un système basé sur les changements de cette journée aux datasets source. Ce tutoriel vous guide dans la création d'une query avec des parameters qui identifient la période d'importation des données, puis la création d'un Job pour planifier l'exécution quotidienne de cette query.

La query et les parameters créés dans ce tutoriel suivent les bonnes pratiques et sont configurés pour vous permettre d'exécuter ultérieurement un Job de backfill si nécessaire.

Prérequis

Pour suivre ce didacticiel, vous devez avoir accès aux tables système dans Databricks.

Étape 1 : Créer une query

Pour ce tutoriel, vous créez une requête qui utilise des paramètres pour décrire quelles données extraire. Par exemple, ce tutoriel utilise les données de facturation des tables système pour calculer les coûts journaliers de Databricks.

La query utilise deux paramètres :

parameter

Utilisation

data_interval_end

La date d'exécution du job (pour le calendrier récurrent), qui est la fin de l'intervalle de temps à traiter. Ou, pour les jobs de remplissage rétrospectif, la date de fin des données à remplir.

lookback_days

Nombre de jours de données à query. La requête se base sur data_interval_end, ce qui correspond généralement à l'heure ou à la date d'exécution de la requête. Vous souhaitez donc consulter les données passées plutôt que futures.

parameter

Utilisation

data_interval_end

La date d'exécution du job (pour le calendrier récurrent), qui est la fin de l'intervalle de temps à traiter. Ou, pour les jobs de remplissage rétrospectif, la date de fin des données à remplir.

lookback_days

Nombre de jours de données à query. La requête se base sur data_interval_end, ce qui correspond généralement à l'heure ou à la date d'exécution de la requête. Vous souhaitez donc consulter les données passées plutôt que futures.

Suivez ces étapes pour créer une query :

  1. Depuis votre Workspace, cliquez sur Icône Plus. Nouveau , puis sur Icône du Notebook. Notebook pour créer un nouveau Notebook.

  2. Le nom default est Untitled Notebook <date-time>. Cliquez sur le nom en haut du Notebook et donnez-lui un nom descriptif, tel que Query billing with parameters tutorial.

  3. En haut de l'éditeur de Notebook, choisissez SQL dans le sélecteur de langue.

  4. Dans la première cellule, ajoutez le code suivant. Remplacez <catalog> et <schema> par un catalogue et un schéma que vous souhaitez utiliser et auquel vous avez accès.

    SQL
    USE CATALOG <catalog>;
    USE SCHEMA <schema>;

    CREATE TABLE IF NOT EXISTS tutorial_databricks_product_spend (billing_origin_product STRING, usage_date DATE, total_dollar_cost DECIMAL(12, 2));

    -- Process the last N days specified by :lookback_days ending on :data_interval_end
    INSERT INTO TABLE tutorial_databricks_product_spend
    REPLACE WHERE
    usage_date >= date_add(:data_interval_end, - CAST(:lookback_days AS INT)) AND usage_date < :data_interval_end
    SELECT
    usage.billing_origin_product,
    usage.usage_date,
    SUM(usage.usage_quantity * list_prices.pricing.effective_list.default) AS total_dollar_cost
    FROM
    system.billing.usage AS usage
    JOIN system.billing.list_prices AS list_prices
    ON usage.sku_name = list_prices.sku_name
    AND usage.usage_end_time >= list_prices.price_start_time
    AND (
    list_prices.price_end_time IS NULL
    OR usage.usage_end_time < list_prices.price_end_time
    )
    WHERE
    usage.usage_date >=
    date_add(:data_interval_end, -CAST(:lookback_days AS INT))
    AND usage.usage_date <
    :data_interval_end
    GROUP BY
    usage.billing_origin_product,
    usage.usage_date
  5. Ajoutez les deux paramètres en cliquant sur Modifier , Ajouter un paramètre . Les paramètres doivent avoir les noms et les valeurs par default suivants :

Nom

Valeur par défaut

lookback_days

1

data_interval_end

<*aucun*>. Ce parameter est toujours requis.

Nom

Valeur par défaut

lookback_days

1

data_interval_end

<*aucun*>. Ce parameter est toujours requis.

Pour en savoir plus sur les paramètres et comment y accéder dans différents types de tâches ou depuis Python, consultez Accéder aux valeurs des paramètres à partir d'une tâche.

Votre requête est maintenant prête. La requête lit les données d'une journée complète à partir des tables système, puis remplace les données existantes dans la table de destination à l'aide de REPLACE WHERE. En remplaçant les données au lieu d'insérer les données, la query ne pose aucun problème si une journée est exécutée une seconde fois. En fait, cela vous permet de réexécuter une journée en cas d'erreur de traitement, ou de données à arrivée tardive.

Vous pouvez tester la query en suivant ces étapes :

  1. Veuillez fournir une valeur pour data_interval_end au-dessus des cellules du notebook, sous la forme yyyy-mm-dd, par exemple, 2025-10-02.
  2. Vous pouvez également cliquer sur Icône cercle. Connect et choisir une ressource de compute à utiliser.
  3. Cliquez sur Icône de lecture. Tout exécuter .
  4. Une fois l'exécution terminée, vous pouvez afficher la table qui a été créée en ouvrant le Icône du catalogue. Catalogue dans le menu de gauche, puis en choisissant votre catalogue et votre schéma que vous avez définis dans la query.

Ensuite, créez un calendrier récurrent pour la query.

Étape 2 : Créez un job pour planifier la query

  1. Dans votre Workspace, cliquez Icône Workflows. sur **Tâches et pipelines** dans la barre latérale.

  2. Cliquez sur Créer , puis sur Job .

  3. Cliquez sur la vignette Notebook pour configurer la première tâche. Si la vignette Notebook n'est pas disponible, cliquez sur Ajouter un autre type de tâche et recherchez Notebook .

  4. (Facultatif) Remplacez le nom du Job, qui correspond à New Job <date-time> default, par le nom de votre Job.

  5. Dans le champ Nom de la tâche , entrez un nom pour la tâche ; par exemple, tutorial-databricks-spend.

  6. Si nécessaire, sélectionnez Notebook dans le menu déroulant Type .

  7. Dans le menu déroulant Source , sélectionnez Workspace , qui vous permet d'utiliser un Notebook que vous avez enregistré précédemment.

  8. Pour Chemin, utilisez l'explorateur de fichiers pour trouver le premier Notebook que vous avez créé, cliquez sur le nom du Notebook, puis cliquez sur Confirmer.

  9. Cliquez sur Icône Plus. Ajouter dans la section Paramètres . Ajoutez le parameter lookback_days, avec une Valeur de 1.

  10. Cliquez sur Icône Plus. Ajouter dans la section Paramètres . Ajoutez le paramètre data_interval_end. Cliquez sur { } à côté de la Valeur pour afficher une liste de valeurs paramétrées. Sélectionnez {{job.trigger.time.iso_date}} dans la liste pour l'insérer en tant que valeur.

    Ceci transmet la date à laquelle l'exécution du Job a été Trigger en tant que paramètre.

remarque

Vous pourriez également utiliser {{job.trigger.time.iso_datetime}} pour gagner du temps, si vous aviez une requête qui recherchait une période plus courte, comme une heure au lieu d'une journée. Dans ce cas, l'une ou l'autre option fonctionne dans notre requête, mais iso_date montre l'intention du paramètre.

  1. Cliquez sur Enregistrer la tâche .

  2. Dans le volet de détails à droite de la tâche, sous Planifications & Triggers , cliquez sur Ajouter un trigger .

  3. Sous Type de trigger , choisissez Planifié .

  4. Conservez les default d'un Trigger actif qui s'exécute une fois par jour.

  5. Cliquez sur Enregistrer .

Votre job exécute désormais votre query quotidiennement. Par default, cela s'exécute à la même heure de la journée à laquelle vous avez créé le trigger. Vous pouvez modifier le Trigger et sélectionner le type de Trigger Avancé pour définir une heure spécifique.

remarque

Si vous ne souhaitez pas encourir de frais pour l'exécution quotidienne de ce job de tutoriel, vous pouvez cliquer sur Icône de pause. **Mettre en pause** sous le planning que vous venez de créer. Cela conserve le planning, mais il ne s'exécutera pas tant que vous ne l'aurez pas réactivé. Vous pouvez toujours l’exécuter manuellement à tout moment.

Ensuite, exécutez un remplissage pour charger les données plus anciennes dans la table.

Étape 3 : exécuter un remplissage pour les données plus anciennes.

Vous pouvez exécuter un remplissage pour remplir les données plus anciennes. Par exemple, si vous souhaitez que les données de la semaine dernière soient renseignées dans votre table. Les instructions suivantes créent 7 exécutions de remplissage pour traiter les données de chacun des 7 derniers jours.

  1. Cliquez sur la flèche vers le bas (Icône chevron vers le bas.) à côté de Exécuter maintenant en haut de la page.

  2. Sélectionnez **Exécuter le remplissage** dans la liste déroulante qui apparaît. Ceci ouvre la boîte de dialogue **Exécuter le remplissage**.

  3. Modifiez la plage de dates pour la plage que vous souhaitez remplir. Choisissez le Start 7 jours auparavant, à minuit, et la Fin comme aujourd'hui, également à minuit. Par exemple, vous pourriez choisir 09/14/2025, 12:00 AM comme heure de start et 09/21/2025, 12:00 AM comme heure de fin.

  4. Sélectionnez **Chaque** 1 Day pour l'intervalle de temps de chaque remplissage.

  5. Sous paramètres de Job , vos paramètres existants sont affichés avec des clés et des valeurs. Confirmez que le paramètre data_interval_end est défini sur {{backfill.iso_datetime}} et que lookback_days est 1.

  6. Cliquez sur Exécuter pour start les exécutions de remplissage. Ceci Trigger 7 exécutions pour le remplissage, une pour chaque jour.

Les remplissages peuvent s'exécuter en parallèle ou séquentiellement, selon la configuration de votre job. Pour plus de détails sur les backfills, voir Jobs de backfill.