Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 :
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 :
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.
logicalIdest 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_TopCustomersne démarre qu’après la fin deRun Hydrate_TopCustomers -
postActionss’exécute après le déploiement de l’élément du groupe. À utiliserpreActionspour 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.