分享方式:


建立自訂事件觸發程序以在 Azure Data Factory 中執行管線

適用於:Azure Data Factory Azure Synapse Analytics

提示

試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用 (部分機器翻譯)!

事件驅動架構是常見的資料整合模式,所涉及的環節包括生產、偵測、取用和事件反應。 資料整合案例通常會要求 Azure Data Factory 客戶在特定事件發生時觸發管線。 Data Factory 與 Azure 事件方格的原生整合現已涵蓋自訂主題。 您可將事件傳送至事件方格主題。 Data Factory 會訂閱主題、接聽,然後觸發對應管線。

本文章中說明的整合,仰賴 Azure 事件方格。 請確認您的訂用帳戶已向事件方格資源提供者註冊。 如需詳細資訊,請參閱資源提供者和類型。 您必須能夠執行 Microsoft.EventGrid/eventSubscriptions/ 動作。 此動作是 EventGrid EventSubscription 參與者內建角色的一部分。

重要

如果您在 Azure Synapse Analytics 中使用此功能,請確定您也向 Data Factory 資源提供者註冊您的訂用帳戶。 否則,您會收到一則訊息,指出「建立事件訂閱失敗」。

如果您合併管線參數和自訂事件觸發程序,就可以在管線執行中剖析並參考自訂 data 承載。 由於自訂事件承載中的 data 欄位是格式自由的 JSON 索引鍵/值結構,因此您可以控制事件驅動管線執行。

重要

如果自訂事件承載中遺漏參數化所參考的索引鍵,trigger run 就會失敗。 您會收到一則訊息,說明無法評估運算式,因為屬性 keyName 不存在。 在此情況下,事件不會觸發任何 pipeline run

在事件方格中設定自訂主題

若要在 Data Factory 中使用自訂事件觸發程序,您必須先在事件方格中設定自訂主題

前往事件方格並自行建立主題。 如需如何建立自訂主題的詳細資訊,請參閱事件方格入口網站教學課程Azure CLI 教學課程

注意

工作流程與儲存體事件觸發程序不同。 Data Factory 不會在此處為您設定主題。

Data Factory 預期事件將遵循事件方格事件結構描述。 請確定事件承載具有以下欄位:

[
  {
    "topic": string,
    "subject": string,
    "id": string,
    "eventType": string,
    "eventTime": string,
    "data":{
      object-unique-to-each-publisher
    },
    "dataVersion": string,
    "metadataVersion": string
  }
]

使用 Data Factory 建立自訂事件觸發程序

  1. 前往 Data Factory 並登入。

  2. 切換至 [編輯] 索引標籤。尋找鉛筆圖示。

  3. 選取功能表上的 [觸發程序],然後選取 [新增/編輯]

  4. 在 [新增觸發程序] 頁面上,選取 [選擇觸發程序],然後選取 [+ 新增]

  5. 在 [類型] 底下,選取 [自訂事件]

    顯示在 Data Factory UI 中建立新自訂事件觸發程序的螢幕擷取畫面。

  6. 從 Azure 訂用帳戶下拉式清單中選取您的自訂主題,或手動輸入事件主題範圍。

    注意

    若要在 Data Factory 中建立或修改自訂事件觸發程序,您必須使用具有適當 Azure 角色型存取控制 (Azure RBAC) 的 Azure 帳戶。 不需要其他任何權限。 Data Factory 服務準則不需要事件方格的特殊權限。 如需存取控制的詳細資訊,請參閱角色型存取控制一節。

  7. Subject begins withSubject ends with 屬性可讓您篩選觸發程序事件。 這兩個屬性皆為選擇性。

  8. 使用 [+ 新增] 來新增要篩選的事件類型。 自訂事件觸發程序的清單會使用 OR 關聯性。 當自訂事件含符合清單的 eventType 屬性時,就會觸發管線執行。 事件類型不區分大小寫。 例如在下列螢幕擷取畫面中,觸發程序符合所有 copycompletedcopysucceeded 事件,且其主旨的開頭均為「factories」(處理站)

    顯示編輯觸發程序頁面的螢幕擷取畫面,說明 Data Factory UI 中的事件類型和主旨篩選功能。

  9. 自訂事件觸發程序可以剖析並傳送自訂 data 承載至您的管線。 您可以建立管線參數,然後在 [參數] 頁面上填入值。 使用格式 @triggerBody().event.data._keyName_ 來剖析資料承載,並將值傳遞至管線參數。

    如需詳細說明,請參閱:

    顯示管線參數設定的螢幕擷取畫面。

    顯示在自訂事件中參考資料承載的參數頁面螢幕擷取畫面。

  10. 輸入參數之後,請選取 [確定]

進階篩選

自訂事件觸發程序支援進階篩選功能,與事件方格進階篩選類似。 這些條件式篩選可讓管線根據事件裝載進行觸發。 例如,您的事件裝載中可能會有一個名為 [部門] 的欄位,且管線應當僅在 [部門] 等於 [財務] 時才觸發。 您也可以指定複雜的邏輯,例如清單 [1, 2, 3, 4, 5] 中的 [日期] 欄位、包含在清單 [11, 12] 中的 [月份]欄位,以及 [標籤] 欄位是否包含 [Fiscal Year 2021, FiscalYear2021 或 FY2021]。

顯示設定客戶事件觸發程序進階篩選條件的螢幕擷取畫面。

目前,自訂事件觸發程序支援事件方格中進階篩選運算子子集。 支援下列篩選條件:

  • NumberIn
  • NumberNotIn
  • NumberLessThan
  • NumberGreaterThan
  • NumberLessThanOrEquals
  • NumberGreaterThanOrEquals
  • BoolEquals
  • StringContains
  • StringBeginsWith
  • StringEndsWith
  • StringIn
  • StringNotIn

選取 [+ 新增] 以新增篩選條件。

自訂事件觸發程序也遵守與事件方格相同的限制,例如:

  • 每個自訂事件觸發程序的所有篩選條件都有 5 個進階篩選條件和 25 個篩選條件值。
  • 每個字串值只能有 512 個字元。
  • innot in 運算子的 5 個值。
  • 索引鍵不能有 . (點) 字元,例如 john.doe@contoso.com。 目前,索引鍵中不支援逸出字元。
  • 相同的索引鍵可以用在多個篩選中。

Data Factory 依賴最新正式發行的事件方格 API 版本。 隨著新的 API 版本進入 GA 階段,Data Factory 也會進一步支援更進階的篩選運算子。

JSON 結構描述

下表提供與自訂事件觸發程序相關的結構描述元素概觀。

JSON 元素 描述 類型 允許的值 必要
scope 事件方格主題的 Azure Resource Manager 資源識別碼。 String Azure Resource Manager 識別碼 是。
events 會導致引發此觸發程序的事件類型。 字串陣列 是,預計至少會有一個值。
subjectBeginsWith subject 欄位必須以提供的模式作開頭,才能啟動觸發程序。 例如,「factories」(處理站) 只會針對開頭為「factories」的事件主旨啟動觸發程序。 String 否。
subjectEndsWith subject 欄位必須以提供的模式作結尾,才能啟動觸發程序。 String 否。
advancedFilters JSON Blob 的清單,每個皆指定了篩選條件。 每個 Blob 都會指定 keyoperatorTypevalues JSON Blob 清單 否。

角色型存取控制

Data Factory 使用 Azure RBAC 來禁止未經授權的存取。 若要正常運作,Data Factory 需要下列存取權:

  • 接聽事件。
  • 訂閱來自事件的更新。
  • 觸發連結至自訂事件的管線。

若要成功建立或更新自訂事件觸發程序,您必須使用具有適當存取權的 Azure 帳戶登入 Data Factory。 否則,該作業會失敗且有訊息「拒絕存取」。

Data Factory 不需要事件方格執行個體的特殊權限。 您也不需要將特殊 Azure RBAC 角色權限指派給該作業的 Data Factory 服務主體。

具體而言,您需要 /subscriptions/####/resourceGroups//####/providers/Microsoft.EventGrid/topics/someTopics 上的 Microsoft.EventGrid/EventSubscriptions/Write 權限。

  • 當您在資料處理站中 (例如在開發環境中) 編寫時,登入的 Azure 帳戶必須具有上述權限。
  • 當您透過持續整合與持續傳遞發佈時,用來將 Azure Resource Manager 範本發佈至測試或生產處理站的帳戶必須具有上述權限。