Exemples de plans de déploiement (aperçu)

Cet article présente les schémas pour lesquels les plans de déploiement sont couramment utilisés. Chacun décrit les groupes de déploiement et les actions qui leur sont associées, afin que vous puissiez construire l’équivalent sur la toile.

Pour savoir comment élaborer un plan, voir Créer un plan de déploiement.

Déploie un élément qui dépend des données produites par un autre élément

C’est la raison la plus courante pour utiliser un forfait.

Espace de travail

Une équipe commerciale conserve sa solution analytique dans un seul espace de travail git-connected qui contient quatre éléments :

Item Type Qu’est-ce que cela fait ?
Sales_Lakehouse Lakehouse Stocke les tables de vente. Il est vide lors du déploiement, car un déploiement copie les définitions des éléments, pas les données.
Hydrate_TopCustomers Notebook Écrit les rangées de sources brutes dans la maison du lac.
Publish_TopCustomers Notebook Ça transforme ces lignes en tableau publié dbo.top_customers .
Sales_Warehouse Entrepôt Contient la vue dbo.vw_top_customers, sur laquelle on peut lire dbo.top_customers.

Pourquoi l’ordre de déploiement seul ne suffit pas

Fabric utilise la lignée des objets pour détecter que la vue de l’entrepôt fait référence à une table de la maison du lac, il déploie donc la maison du lac avant l’entrepôt.

Lineage ne montre pas que le tableau doit être rempli avant que la vue soit valide. Le tableau n’est pas fourni avec la définition de l’élément. Les deux carnets le produisent au moment de l’exécution :

Diagramme montrant le notebook Hydrate qui écrit une table source dans le lakehouse, le notebook Publish qui la transforme en dbo.top_customers, et la vue de l’entrepôt de données qui lit cette table.

Déployez cet espace de travail sans plan et le déploiement échoue. Chaque élément est correctement copié, mais la vue de l’entrepôt est définie sur une table que personne n’a encore créée, et le déploiement signale que le nom de l’objet est invalide. La cible reste partiellement déployée.

Il n’y a rien de mal avec les objets. Ce qui manque, c’est l’instruction pour faire fonctionner les notebooks entre le déploiement de la cabane et celle de l’entrepôt. Cette instruction est le plan.

Le plan

Le plan prévoit deux groupes de déploiement, un pour la maison du lac et un pour l’entrepôt. Le groupe Lakehouse exécute les deux notebooks en tant qu’actions post-déploiement :

Groupe de déploiement Objet déployé Actions post-déploiement Dépend de
Sales_Lakehouse Sales_Lakehouse (maison lacustre) 1. Exécutez Hydrate_TopCustomers
2. Exécutez Publish_TopCustomers
Aucune
Sales_Warehouse Sales_Warehouse (entrepôt) None Sales_Lakehouse

Une fois le lakehouse déployé, Hydrate_TopCustomers écrit les lignes source. Ensuite Publish_TopCustomers crée dbo.top_customers et attend que le point de terminaison d’analytique SQL expose la table. Le groupe de la maison du lac ne termine qu’après la fin des deux actions. Fabric peut alors déployer l’entrepôt et créer sa vue.

Les carnets sont des actions dans le groupe de la maison du lac, pas des groupes de déploiement séparés. Publish_TopCustomers Cela dépend de Hydrate_TopCustomers, et le groupe d’entrepôt dépend du groupe Lakehouse complété.

Voici le même plan sur la toile :

Capture d’écran du plan de déploiement SalesRelease montrant le groupe Sales_Lakehouse avec Hydrate_TopCustomers et Publish_TopCustomers comme ordonné après le déploiement, suivi du groupe de Sales_Warehouse dépendant.

Comprendre la structure du fichier plan.yml

On construit un plan sur la toile. Lorsque l’espace de travail est connecté à Git, le plan est stocké sous forme de fichier plan.yml dans le dossier de l’élément du plan de déploiement, il est donc examiné et versionné comme n’importe quel autre élément :

$schema: https://developer.microsoft.com/json-schemas/fabric/item/deploymentPlan/definition/plan/1.0.0/schema.json
version: 1.0.0
groups:
  - name: Sales_Lakehouse
    logicalId: 11111111-1111-1111-1111-111111111111
    postActions:
      - name: Run Hydrate_TopCustomers
        job:
          type: Execute
          logicalId: 22222222-2222-2222-2222-222222222222
      - name: Run Publish_TopCustomers
        dependsOn:
          - actionName: Run Hydrate_TopCustomers
        job:
          type: Execute
          logicalId: 33333333-3333-3333-3333-333333333333
  - name: Sales_Warehouse
    logicalId: 44444444-4444-4444-4444-444444444444
    dependsOn:
      - groupName: Sales_Lakehouse

Le fichier a la structure suivante :

Élément Purpose
$schema Identifie le schéma qui valide la définition du plan.
version Identifie la version définie du plan.
groups Contient les groupes de déploiement du plan.
name Donne à un groupe ou à une action un nom unique auquel les dépendances peuvent se référer.
logicalId Identifie l’élément Fabric dans l’ensemble des espaces de travail.
dependsOn Déclare les dépendances à un autre groupe ou action par nom.
preActions et postActions Exécutez les tâches prises en charge avant ou après le déploiement de l’élément du groupe.
job Identifie le type de travail, l’identifiant logique de l’élément et les paramètres optionnels pour une action.

Quelques points à noter dans cette définition :

  • Un groupe nomme un élément. logicalId est l’identifiant logique de l’élément, le même identifiant utilisé par Git, donc le plan reste valide au fur et à mesure que l’élément se déplace entre les espaces de travail.
  • L’ordre du groupe s’exprime par dependsOn, et non par la position dans le fichier. Réorganiser les groupes dans le fichier ne change rien.
  • L’ordre d’action s’exprime également par dependsOn. Run Publish_TopCustomers ne démarre qu’après la fin de Run Hydrate_TopCustomers
  • postActions s’exécute après le déploiement de l’élément du groupe. À utiliser preActions pour un travail qui doit d’abord avoir lieu, comme un contrôle de validation.

Conseil / Astuce

Une action est terminée lorsque l’exécution de l’élément se termine, et non lorsque les services en aval ont rattrapé leur retard. Dans cet exemple, la dernière cellule de Publish_TopCustomers attend que le point de terminaison d’analytique SQL du lakehouse ait catalogué la nouvelle table. Intégrez ce type de vérification de l’état de préparation dans l’action elle-même, car le plan ne vous attend pas.

Rafraîchir le contenu après son déploiement

Un déploiement met à jour les définitions des éléments. Il ne fait rien, donc un modèle sémantique ou un rapport reflète la nouvelle définition mais pas de nouvelles données.

Groupe de déploiement Objet déployé S’exécute après le déploiement de l’objet Dépend de
Sales_Warehouse Sales_Warehouse (entrepôt) None Aucune
Sales_Model Sales_Model (modèle sémantique) Exécutez un pipeline de données qui rafraîchit le modèle Ventes_Entrepôt

Attachez ce plan à un déploiement en pipeline de déploiement afin que la promotion à une étape laisse la cible prête à l’utilisation plutôt que d’avoir besoin d’un rafraîchissement manuel.

Validez avant que quoi que ce soit ne soit déployé

Une action de pré-déploiement s’exécute avant que l’objet de son groupe ne soit déployé, donc vous pouvez en utiliser une comme porte.

Une action ne peut exécuter qu’un élément déjà déployé, donc la vérification elle-même est déployée par un groupe précédent :

Groupe de déploiement Objet déployé S’exécute avant le déploiement de l’objet Dépend de
Prévol Preflight_Checks (notebook) None Aucune
First_Real_Item Le premier élément de la sortie Exécuter Preflight_Checks Prévol

Si la vérification échoue, le déploiement s’arrête et rien qui dépend de ce groupe ne se déploie. Utilisez cela pour confirmer que les connexions se résolvent, qu’une capacité requise fonctionne, ou qu’un système source est disponible avant le début d’une version.

Note

Une action pré-déploiement ne peut pas exécuter l’objet que son propre groupe déploie, car cet objet n’existe pas encore dans la cible. Déployez l’élément qui effectue la vérification dans un groupe antérieur, comme montré ici.

Commander des œuvres que la lignée ne peut pas voir

Deux éléments peuvent être complètement indépendants en termes de lignée, et nécessitent toujours un ordre. Un plan, c’est la façon dont tu exprimes cela.

Groupe de déploiement Objet déployé Dépend de
Données_de_référence L’élément qui produit les données de référence Aucune
Domain_Item Un élément qui lit des données de référence via une connexion plutôt qu’une référence directe Données_de_référence

Comme la dépendance passe par une connexion plutôt que par une référence d'objet, Fabric ne peut pas en déduire. Le plan détermine l’ordre.