Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Este artículo muestra patrones para los que se utilizan comúnmente los planes de despliegue. Cada uno describe los grupos de despliegue y las acciones que se les asocian, para que puedas construir el equivalente en el lienzo.
Para saber cómo elaborar un plan, véase Crear un plan de despliegue.
Despliega un ítem que depende de datos que otro elemento produzca
Esta es la razón más común para usar un plan.
Área de trabajo
Un equipo de ventas mantiene su solución de análisis en un único espacio de trabajo conectado a Git que contiene cuatro elementos:
| Item | Tipo | Qué hace |
|---|---|---|
Sales_Lakehouse |
Lakehouse | Almacena las tablas de ventas. Está vacío cuando se despliega, porque un despliegue copia definiciones de elementos, no datos. |
Hydrate_TopCustomers |
Notebook | Escribe las filas de la fuente en bruto en la casa del lago. |
Publish_TopCustomers |
Notebook | Convierte esas filas en la tabla publicada dbo.top_customers . |
Sales_Warehouse |
Almacén | Mantiene la vista dbo.vw_top_customers, que dice dbo.top_customers. |
Por qué el orden de despliegue por sí solo no es suficiente
Fabric utiliza el linaje de elementos para detectar que la vista del almacén de datos hace referencia a una tabla de lakehouse, por lo que implementa el lakehouse antes que el almacén de datos.
Lineage no muestra que la tabla deba estar poblada antes de que la vista sea válida. La tabla no aparece con la definición del ítem. Los dos cuadernos lo producen en tiempo de ejecución:
Despliega este espacio de trabajo sin un plan y el despliegue falla. Cada elemento se copia correctamente, pero la vista del almacén de datos se crea sobre una tabla que aún no se ha creado, y el despliegue indica que el nombre del objeto no es válido. El objetivo queda parcialmente desplegado.
No hay nada malo con los objetos. Lo que falta es la instrucción para ejecutar los cuadernos entre desplegar la casa del lago y el almacén. Esa instrucción es el plan.
El plan
El plan cuenta con dos grupos de despliegue, uno para la casa del lago y otro para el almacén. El grupo lakehouse ejecuta ambos cuadernos como acciones posteriores al despliegue:
| Grupo de implementación | Elemento implementado | Acciones posteriores al despliegue | Depende de |
|---|---|---|---|
| Sales_Lakehouse | Sales_Lakehouse (casa del lago) | 1. Ejecute Hydrate_TopCustomers 2. Ejecuta Publish_TopCustomers |
Nada |
| Ventas_Almacén | Sales_Warehouse (almacén) | Ninguno | Sales_Lakehouse |
Después de que se implemente el lakehouse, Hydrate_TopCustomers escribe las filas de origen. Luego Publish_TopCustomers crea dbo.top_customers y espera hasta que el endpoint de analítica SQL expone la tabla. El grupo de la casa del lago termina solo después de que ambas acciones terminen. Fabric puede a continuación desplegar el almacén y crear su vista.
Los cuadernos son acciones del grupo lakehouse, no grupos de despliegue separados.
Publish_TopCustomers depende de Hydrate_TopCustomers, y el grupo de almacenes depende del grupo de lakehouse completado.
Aquí está el mismo plano en el lienzo:
Comprenda la estructura de plan.yml
Construyes un plan sobre el lienzo. Cuando el espacio de trabajo está conectado a Git, el plan se almacena como un plan.yml archivo en la carpeta del elemento del plan de despliegue, por lo que se revisa y versiona como cualquier otro elemento:
$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
El archivo tiene la siguiente estructura:
| Elemento | propósito |
|---|---|
$schema |
Identifica el esquema que valida la definición del plan. |
version |
Identifica la versión de definición del plano. |
groups |
Contiene los grupos de despliegue del plan. |
name |
Da a un grupo o acción un nombre único al que las dependencias pueden referenciar. |
logicalId |
Identifica el elemento Fabric en diferentes espacios de trabajo. |
dependsOn |
Declara dependencias de otro grupo o de otra acción mediante su nombre. |
preActions y postActions |
Ejecuta trabajos compatibles antes o después de desplegar el elemento del grupo. |
job |
Identifica el tipo de trabajo, el ID lógico del ítem y los parámetros opcionales para una acción. |
Algunas cosas a tener en cuenta en esta definición:
- Un grupo da nombre a un elemento.
logicalIdes el ID lógico del elemento, el mismo identificador que usa la integración con Git, por lo que el plan sigue siendo válido mientras el elemento se mueve entre espacios de trabajo. -
El orden de grupo se expresa con
dependsOn, no por posición en el archivo. Reordenar los grupos en el archivo no cambia nada. - El orden de acción también se expresa con
dependsOn.Run Publish_TopCustomerscomienza solo después de queRun Hydrate_TopCustomersfinalice. -
postActionsse ejecuta después de que se implemente el elemento del grupo. ÚsalopreActionspara trabajos que tengan que hacerse primero, como una comprobación de validación.
Sugerencia
Una acción se completa cuando finaliza la ejecución del elemento, no cuando los servicios posteriores se ponen al día. En este ejemplo, la última celda de Publish_TopCustomers espera hasta que el endpoint de análisis SQL de Lakehouse haya catalogado la nueva tabla. Pon ese tipo de comprobación de preparación dentro de la acción, porque el plan no espera por ti.
Actualizar contenido después de que se despliegue
Un despliegue actualiza las definiciones de ítems. No ejecuta nada, así que un modelo semántico o un informe refleja la nueva definición pero no los datos nuevos.
| Grupo de implementación | Elemento implementado | Se ejecuta después de que el objeto se despliegue | Depende de |
|---|---|---|---|
| Ventas_Almacén | Sales_Warehouse (almacén) | Ninguno | Nada |
| Sales_Model | Sales_Model (modelo semántico) | Ejecuta una canalización de datos para actualizar el modelo | Ventas_Almacén |
Adjunta este plan a un despliegue de pipeline de despliegue para que promocionar a una etapa deje el objetivo listo para usarse en lugar de necesitar una actualización manual.
Valida antes de que se despliegue nada
Una acción previa al despliegue se ejecuta antes de que el objeto de su grupo se despliegue, así que puedes usar una como puerta.
Una acción solo puede ejecutar un elemento que ya esté desplegado, por lo que la comprobación en sí es desplegada por un grupo anterior:
| Grupo de implementación | Elemento implementado | Se ejecuta antes de que el objeto se despliegue | Depende de |
|---|---|---|---|
| Prevuelo | Preflight_Checks (cuaderno) | Ninguno | Nada |
| First_Real_Item | El primer elemento de la publicación | Ejecuta Preflight_Checks | Prevuelo |
Si la comprobación falla, el despliegue se detiene y no se despliega nada que dependa de ese grupo. Úsalo para confirmar que las conexiones funcionan correctamente, que la capacidad necesaria está en ejecución o que hay un sistema de origen disponible antes de que comience un despliegue.
Nota:
Una acción pre-despliegue no puede ejecutar el objeto que despliega su propio grupo, porque ese elemento aún no existe en el objetivo. Despliega el elemento que realiza la comprobación en un grupo anterior, como se muestra aquí.
Ordena obras que la línea de origen no puede ver
Dos elementos pueden ser completamente independientes en cuanto a linaje y aún así necesitan un orden. Un plan es cómo expresas eso.
| Grupo de implementación | Elemento implementado | Depende de |
|---|---|---|
| Datos de referencia | El elemento que produce datos de referencia | Nada |
| Dominio_Elemento | Un elemento que lee datos de referencia a través de una conexión en lugar de una referencia directa | Datos de referencia |
Como la dependencia pasa por una conexión en lugar de una referencia de elemento, Fabric no puede inferirla. El plan proporciona el orden.