共用方式為


使用 Azure Data Factory 命令活動來執行 Azure 數據總管管理命令

Azure Data Factory (ADF)是一項基於雲端的資料整合服務,你可以用它來對資料執行多項活動。 使用ADF建立數據驅動工作流程,以協調及自動化數據行動和資料轉換。 Azure Data Factory 中的 Azure 數據總管命令活動可讓您在 ADF 工作流程中執行 Azure 數據總管管理命令。 本文將教你如何建立包含查找活動和 ForEach 活動的管線,其中包含 Azure Data Explorer 指令活動。

必要條件

建立新管線

  1. 選取 作者 鉛筆工具。

  2. 選取 + ,然後從下拉式清單中選取 [ 管線 ],以建立新的管線。

    建立新的管線。

建立查詢操作

查詢活動可以從任何 Azure Data Factory 支援的資料來源取得資料集。 你可以將查詢活動的輸出用於 ForEach 或其他活動。

  1. [活動] 窗格的 [一般] 底下,選取 [查閱] 活動。 請將它拖放到右邊的主要畫布中。

    選取查找活動。

  2. 畫布現在包含您建立的查找活動。 請使用畫布下方的分頁來更改相關參數。 在 一般 中,重新命名活動。

    編輯查詢活動。

    提示

    選擇空白畫布區域以查看管線屬性。 使用 [ 一般] 索引標籤來重新命名管線。 該管線命名為 pipeline-4-docs

在查找活動中建立 Azure 數據總管數據集

  1. 在 [設定] 中,選取您預先建立的 Azure 數據總管來源數據集,或選取 [+ 新增] 以建立新的數據集。

    在查閱設定中新增數據集。

  2. 新增數據集 視窗中選取 Azure 數據總管 (Kusto) 數據集。 選取 [ 繼續] 以新增數據集。

    選取新的數據集。

  3. 新的 Azure 資料總管數據集參數會顯示在 [設定] 中。 若要更新參數,請選取 [ 編輯]。

    使用 Azure 數據總管數據集查閱設定。

  4. AzureDataExplorerTable的新索引標籤會在主畫布上開啟。

    • 選取 [ 一般 ],然後編輯數據集名稱。
    • 選取 [ 連線 ] 以編輯資料集屬性。
    • 從下拉式清單中選取 [鏈接服務 ],或選取 [ + 新增 ] 以建立新的鏈接服務。

    編輯 Azure 資料總管數據集屬性。

  5. 建立新的鏈接服務時,[ 新增鏈接服務][Azure 數據總管] 頁面隨即開啟:

     Azure 數據總管新的鏈接服務。

    • 選取 Azure Data Explorer 連結服務的名稱。 視需要新增 描述
    • 在 [透過整合運行時間連線] 中,視需要變更目前的設定。
    • [帳戶選取方法] 中,使用下列兩種方法之一來選取您的叢集:
      • 選取 從 Azure 訂用帳戶 的單選按鈕,然後選取您的 Azure 訂用帳戶。 然後,選取您的 叢集。 下拉選單只會列出屬於你的叢集。
      • 請改為選取 [ 手動輸入] 單選按鈕,然後輸入您的 端點 (叢集 URL)。
    • 指定租 租戶
    • 輸入 服務主體標識碼。 在 Azure 入口網站應用程式註冊>總覽>應用程式(用戶端)ID 中找到此值。 主體必須具有符合所用命令所需權限等級的適當權限。
    • 選取 [服務主體金鑰 ] 按鈕,然後輸入 服務主體金鑰
    • 從下拉功能表中選取您的 資料庫 。 或者,選取 [ 編輯] 複選框,然後輸入您的資料庫名稱。
    • 選取 [ 測試連線 ] 以測試您所建立的連結服務連線。 如果你能連接到你的設定,會出現綠色勾選 「連線成功 」。
    • 選取 [完成 ] 以完成鏈接的服務建立。
  6. 在你設定連結服務後,在 AzureDataExplorerTable>Connection 中新增 Table 名稱。 選取 [預覽數據],以確定數據已正確呈現。

    你的資料集已經準備好了,你可以繼續編輯你的管線。

將查詢新增至查閱活動

  1. pipeline-4-docs>的設定中,可以在 查詢 文字框中新增查詢,例如:

    ClusterQueries
    | where Database !in ("KustoMonitoringPersistentDatabase", "$systemdb")
    | summarize count() by Database
    
  2. 視需要變更 [查詢逾時][無截斷][僅限第一列] 屬性。 在此流程中,保留預設的查詢逾時,並取消勾選核取方塊。

    查閱活動的最終設定。

建立 For-Each 活動

使用 For-Each 活動來遍歷一個集合,並以迴圈方式執行指定的活動。

  1. 在管線中新增 For-Each 活動。 此活動處理從查詢活動回傳的資料。

    • 活動 面板中,於 迭代與條件分支 下,選擇 「ForEach」 活動。 拖放到畫布上。

    • 在畫布上,將查詢活動的輸出與 ForEach 活動的輸入之間繪製線條以連接它們。

      ForEach 活動。

  2. 請在畫布中選取 ForEach 動作。 在 [設定] 索引標籤中:

    • 核取 [ 循序 ] 複選框,以取得查閱結果的循序處理,或將它取消核取以建立平行處理。

    • 設定 Batch 次數

    • Items 中,提供下列輸出值的參考: @activity('Lookup1')。output.value

      ForEach 活動設定。

在 ForEach 活動中建立 Azure 數據總管命令活動

  1. 雙擊畫布中的 ForEach 活動項目以在新畫布中開啟。 請在 ForEach 中指定活動內容。

  2. 在 [活動] 窗格中,於 Azure 數據總管 底下,選取 Azure 數據總管命令 活動,然後將它拖放到畫布中。

    Azure 資料總管命令活動。

  3. 「連線 」標籤中,選擇你之前建立的同一個連結服務。

    Azure Data Explorer 命令活動連接選項卡。

  4. 命令 標籤中,輸入以下命令:

    .export
    async compressed
    into csv h"http://<storageName>.blob.core.windows.net/data/ClusterQueries;<storageKey>" with (
    sizeLimit=100000,
    namePrefix=export
    )
    <| ClusterQueries | where Database == "@{item().Database}"
    

    命令會指示 Azure 資料總管以壓縮格式將指定查詢的結果匯出至 Blob 記憶體。 它會以非同步方式執行(使用非同步修飾符)。 查詢會尋址查閱活動結果中每個數據列的資料庫數據行。 你可以保留 指令超時 不變。

    命令活動。

    注意

    命令活動有下列限制:

    • 大小限制:1 MB 回應大小
    • 時間限制:20 分鐘(預設值)、1 小時(最大值)。
    • 如有需要,你可以使用 AdminThenQuery 在結果中附加查詢,以減少結果大小或時間。
  5. 現在管線已就緒。 你可以選擇管線名稱回到主管道檢視。

    Azure 資料總管命令管線。

  6. 發佈管線之前,請選取 Debug。 你可以在 輸出 分頁監控管線進度。

    Azure 資料總管命令活動輸出。

  7. 選擇 「全部發佈 」,然後「 新增觸發器 」來執行管線。

管理命令輸出

以下章節將說明指令活動輸出的結構。 流程中的下一個活動可以使用這個輸出。

非異步管理命令的傳回值

在非異步管理命令中,傳回值的結構類似於查閱活動結果的結構。 欄位顯示 count 已回傳紀錄的數量。 固定陣列欄位 value 包含一個記錄清單。

{ 
    "count": "2", 
    "value": [ 
        { 
            "ExtentId": "1b9977fe-e6cf-4cda-84f3-4a7c61f28ecd", 
            "ExtentSize": 1214.0, 
            "CompressedSize": 520.0 
        }, 
        { 
            "ExtentId": "b897f5a3-62b0-441d-95ca-bf7a88952974", 
            "ExtentSize": 1114.0, 
            "CompressedSize": 504.0 
        } 
    ] 
} 

異步管理命令的傳回值

在非同步管理命令中,程序會在幕後輪詢操作表,直到非同步操作完成或逾時為止。因此,返回的值包含該 .show operations OperationId 屬性的結果。 檢查 [狀態] 和 [狀態] 屬性的值,以確認作業成功完成。

{ 
    "count": "1", 
    "value": [ 
        { 
            "OperationId": "910deeae-dd79-44a4-a3a2-087a90d4bb42", 
            "Operation": "TableSetOrAppend", 
            "NodeId": "", 
            "StartedOn": "2019-06-23T10:12:44.0371419Z", 
            "LastUpdatedOn": "2019-06-23T10:12:46.7871468Z", 
            "Duration": "00:00:02.7500049", 
            "State": "Completed", 
            "Status": "", 
            "RootActivityId": "f7c5aaaf-197b-4593-8ba0-e864c94c3c6f", 
            "ShouldRetry": false, 
            "Database": "MyDatabase", 
            "Principal": "<some principal id>", 
            "User": "<some User id>" 
        } 
    ] 
}