Przykłady planów wdrożenia (zapowiedź)

W tym artykule przedstawiono typowe zastosowania planów wdrożenia. Każda z nich opisuje grupy wdrożeń i powiązane z nimi akcje, dzięki czemu można zbudować odpowiednik na płótnie.

Aby dowiedzieć się, jak stworzyć plan, zobacz : Utwórz plan wdrożenia.

Wdroż element zależny od danych, które inny element generuje

To najczęstszy powód, aby skorzystać z planu.

Obszar roboczy

Zespół sprzedaży przechowuje swoje rozwiązanie analityczne w jednej przestrzeni roboczej połączonej z gitami, która mieści cztery elementy:

Item Typ Do czego służy
Sales_Lakehouse Lakehouse Przechowuje tabele sprzedaży. Jest pusty podczas wdrożenia, ponieważ wdrożenie kopiuje definicje elementów, a nie dane.
Hydrate_TopCustomers Notatnik Zapisuje nieprzetworzone wiersze źródłowe w środowisku lakehouse.
Publish_TopCustomers Notatnik Przekształca te wiersze w opublikowaną tabelę dbo.top_customers .
Sales_Warehouse Magazyn Posiada widok dbo.vw_top_customers, który brzmi dbo.top_customers.

Dlaczego sama kolejność rozmieszczenia nie wystarcza

Fabric wykorzystuje linię przedmiotów, aby wykryć, że widok magazynu odnosi się do stołu nad domem nad jeziorem, więc rozkłada dom nad jeziorem przed magazynem.

Lineage nie pokazuje, że tabela musi zostać wypełniona , zanim widok będzie ważny. Tabela nie jest dostarczana z definicją elementu. Te dwa notatniki generują go w czasie wykonywania:

Diagram pokazujący, jak notatnik Hydrate zapisuje tabelę źródłową do domku nad jeziorem, notatnik Publish zamienia ją w dbo.top_customers oraz widok magazynu odczytujący tę tabelę.

Wdrożenie tego workspace bez planu powoduje niepowodzenie. Każdy element jest poprawnie kopiowany, ale widok magazynu jest tworzony na tabeli, której nikt jeszcze nie stworzył, a wdrożenie informuje, że nazwa obiektu jest nieprawidłowa. Cel pozostaje częściowo rozmieszczony.

Z tymi przedmiotami nic nie jest nie tak. Brakuje jednak instrukcji uruchamiania notatników między rozstawieniem domku nad jeziorem a rozstawieniem magazynu. Ta instrukcja jest planem.

Plan

Plan przewiduje dwie grupy rozmieszczenia – jedną przy domku nad jeziorem, a drugą dla magazynu. Grupa Lakehouse uruchamia oba notatniki jako działania po wdrożeniu:

Grupa wdrożeń Element wdrożony Działania po rozmieszczeniu Zależy
Sales_Lakehouse Sales_Lakehouse (domek nad jeziorem) 1. Uruchom Hydrate_TopCustomers
2. Uruchom Publish_TopCustomers
Nic
Sprzedaż_Magazyn Sales_Warehouse (magazyn) None Sprzedaż_Lakehouse

Po wdrożeniu lakehouse składnik Hydrate_TopCustomers zapisuje wiersze źródłowe. Następnie Publish_TopCustomers tworzy dbo.top_customers i czeka, aż endpoint analityki SQL udostępni tabelę. Grupa Lakehouse kończy dopiero po zakończeniu obu akcji. Fabric może wtedy wdrożyć magazyn i utworzyć jego widok.

Notatniki to działania w grupie Lakehouse, a nie oddzielne grupy wdrożenia. Publish_TopCustomers To zależy od Hydrate_TopCustomers, a grupa magazynowa zależy od ukończonej grupy Lakehouse.

Oto ten sam plan na płótnie:

Zrzut ekranu planu wdrożenia SalesRelease pokazujący grupę Sales_Lakehouse z Hydrate_TopCustomers i Publish_TopCustomers jako uporządkowane akcje po wdrożeniu, a następnie grupę zależną Sales_Warehouse.

Zrozum strukturę plan.yml

Budujesz plan na płótnie. Gdy przestrzeń robocza jest połączona z Gitem, plan jest przechowywany jako plan.yml plik w folderze elementu planu wdrożenia, więc jest przeglądany i wersjonowany jak każdy inny element:

$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

Plik ma następującą strukturę:

Element Purpose
$schema Identyfikuje schemat, który waliduje definicję planu.
version Identyfikuje wersję definicji planu.
groups Zawiera grupy wdrożenia w planie.
name Nadaje grupie lub akcji unikalną nazwę, do której zależności mogą się odwoływać.
logicalId Identyfikuje element Fabric w różnych przestrzeniach roboczych.
dependsOn Deklaruje zależności od innej grupy lub akcji według nazwy.
preActions i postActions Uruchamiaj obsługiwane zadania przed wdrożeniem elementu grupy lub po nim.
job Identyfikuje typ zadania, logiczny identyfikator elementu oraz opcjonalne parametry działania.

Kilka rzeczy, które warto zauważyć w tej definicji:

  • Grupa wymienia jeden przedmiot. logicalId jest logicznym identyfikatorem elementu, tym samym identyfikatorem, którego używa integracja z Gitem, więc plan pozostaje ważny, gdy element przemieszcza się między przestrzeniami roboczymi.
  • Kolejność grup wyraża się przez dependsOn, a nie przez pozycję w pliku. Zmiana porządku grup w pliku nic nie zmienia.
  • Kolejność akcji wyraża się również jako .dependsOn Run Publish_TopCustomers rozpoczyna się dopiero po zakończeniu Run Hydrate_TopCustomers.
  • postActions uruchom po wdrożeniu elementu grupy. Używaj preActions w pracy, która musi się najpierw wykonać, na przykład w przypadku weryfikacji.

Wskazówka

Działanie kończy się, gdy kończy się przebieg elementu, a nie wtedy, gdy usługi podrzędne nadrobią opóźnienie. W tym przykładzie ostatnia komórka Publish_TopCustomers czeka, aż punkt końcowy analizy SQL usługi Lakehouse skataloguje nową tabelę. Umieść takie sprawdzenie gotowości w ramach akcji, ponieważ plan nie czeka za ciebie.

Odśwież treść po wdrożeniu

Wdrożenie aktualizuje definicje elementów. Nie uruchamia niczego, więc model semantyczny lub raport odzwierciedla nową definicję, ale nie nowe dane.

Grupa wdrożeń Element wdrożony Uruchamia się po wdrożeniu elementu Zależy
Magazyn_Sprzedaży Sales_Warehouse (magazyn) None Nic
Sales_Model Sales_Model (model semantyczny) Uruchom potok danych, który odświeża model Sprzedaż_Magazyn

Dołącz ten plan do wdrożenia pipeline'u wdrożeniowego, aby promowanie na etap pozostawiło cel gotowy do użycia, zamiast wymagać ręcznego odświeżania.

Waliduj przed wdrożeniem czegokolwiek

Akcja przed wdrożeniem jest uruchamiana przed wdrożeniem elementu w swojej grupie, więc można jej użyć jako bramki.

Akcja może uruchomić tylko element, który został już wdrożony, więc samo sprawdzenie jest wdrażane przez wcześniejszą grupę:

Grupa wdrożeń Element wdrożony Jest uruchamiane przed wdrożeniem elementu Zależy
Przedlotowy Preflight_Checks (notatnik) None Nic
First_Real_Item Pierwszy element wydania Uruchom Preflight_Checks Przedlotowy

Jeśli sprawdzenie się nie powiedzie, wdrożenie zatrzymuje się i nic, co zależy od tej grupy, nie zostanie wdrożone. Użyj tego, aby potwierdzić, że połączenia są prawidłowo rozpoznawane, że wymagana przepustowość jest dostępna lub że system źródłowy jest dostępny przed rozpoczęciem wdrożenia.

Note

Akcja przed wdrożeniem nie może uruchomić elementu, który wdraża grupa, do której on należy, ponieważ ten element jeszcze nie istnieje w lokalizacji docelowej. Wdróż element, który przeprowadza sprawdzenie, we wcześniejszej grupie, jak pokazano tutaj.

Rozkazuj dzieła, których linia rodowa nie może zobaczyć

Dwa przedmioty mogą być całkowicie niezależne pod względem pochodzenia i nadal wymagać kolejności. Plan to sposób, w jaki to wyrażasz.

Grupa wdrożeń Element wdrożony Zależy
Dane_referencyjne Element generujący dane referencyjne Nic
Domain_Item Element, który odczytuje dane referencyjne przez połączenie, a nie bezpośrednio Dane_referencyjne

Ponieważ zależność działa przez połączenie, a nie przez referencję do elementu, Fabric nie może jej wywnioskować. Plan określa kolejność.