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 |
|---|---|
| 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. |
| Nombre de jours de données à query. La requête se base sur |
Suivez ces étapes pour créer une query :
-
Depuis votre Workspace, cliquez sur
Nouveau , puis sur
Notebook pour créer un nouveau Notebook.
-
Le nom default est
Untitled Notebook <date-time>. Cliquez sur le nom en haut du Notebook et donnez-lui un nom descriptif, tel queQuery billing with parameters tutorial. -
En haut de l'éditeur de Notebook, choisissez SQL dans le sélecteur de langue.
-
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.SQLUSE 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 -
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 |
|---|---|
|
|
| <*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 :
- Veuillez fournir une valeur pour
data_interval_endau-dessus des cellules du notebook, sous la formeyyyy-mm-dd, par exemple,2025-10-02. - Vous pouvez également cliquer sur
Connect et choisir une ressource de compute à utiliser.
- Cliquez sur
Tout exécuter .
- Une fois l'exécution terminée, vous pouvez afficher la table qui a été créée en ouvrant le
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
-
Dans votre Workspace, cliquez
sur **Tâches et pipelines** dans la barre latérale.
-
Cliquez sur Créer , puis sur Job .
-
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 .
-
(Facultatif) Remplacez le nom du Job, qui correspond à
New Job <date-time>default, par le nom de votre Job. -
Dans le champ Nom de la tâche , entrez un nom pour la tâche ; par exemple,
tutorial-databricks-spend. -
Si nécessaire, sélectionnez Notebook dans le menu déroulant Type .
-
Dans le menu déroulant Source , sélectionnez Workspace , qui vous permet d'utiliser un Notebook que vous avez enregistré précédemment.
-
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.
-
Cliquez sur
Ajouter dans la section Paramètres . Ajoutez le parameter
lookback_days, avec une Valeur de1. -
Cliquez sur
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.
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.
-
Cliquez sur Enregistrer la tâche .
-
Dans le volet de détails à droite de la tâche, sous Planifications & Triggers , cliquez sur Ajouter un trigger .
-
Sous Type de trigger , choisissez Planifié .
-
Conservez les default d'un Trigger actif qui s'exécute une fois par jour.
-
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.
Si vous ne souhaitez pas encourir de frais pour l'exécution quotidienne de ce job de tutoriel, vous pouvez cliquer sur **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.
-
Cliquez sur la flèche vers le bas (
) à côté de Exécuter maintenant en haut de la page.
-
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**.
-
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 AMcomme heure de start et09/21/2025, 12:00 AMcomme heure de fin. -
Sélectionnez **Chaque**
1Daypour l'intervalle de temps de chaque remplissage. -
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_endest défini sur{{backfill.iso_datetime}}et quelookback_daysest1. -
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.