共用方式為


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

Azure Data Factory (ADF) 是雲端式數據整合服務,可讓您對數據執行活動的組合。 使用ADF建立數據驅動工作流程,以協調及自動化數據行動和資料轉換。 Azure Data Factory 中的 Azure 數據總管命令活動可讓您在 ADF 工作流程中執行 Azure 數據總管管理命令。 本文將教導您如何建立具有查閱活動的管線,以及包含 Azure 數據總管命令活動的 ForEach 活動。

必要條件

建立新管線

  1. 選取 [ 撰寫 鉛筆] 工具。

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

    建立新的管線。

建立查閱活動

查閱活動可以從任何 Azure Data Factory 支援的數據源擷取數據集。 Lookup 活動的輸出可用於 ForEach 或其他活動。

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

    選取查閱活動。

  2. 畫布現在包含您建立的查閱活動。 使用畫布下方的索引標籤來變更任何相關參數。 在 [一般],重新命名活動。

    編輯查閱活動。

    提示

    按兩下空白畫布區域以檢視管線屬性。 使用 [ 一般] 索引標籤來重新命名管線。 我們的管線名為 pipeline-4-docs

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

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

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

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

    選取新的數據集。

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

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

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

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

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

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

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

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

    您的數據集現已就緒,您可以繼續編輯管線。

將查詢新增至查閱活動

  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 數據總管命令活動連線索引標籤。

  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. 發佈管線之前,請選取 [ 錯]。 您可以在 [輸出] 索引標籤中監視管線進度。

    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 
        } 
    ] 
} 

異步管理命令的傳回值

在異步管理命令中,活動會在幕後輪詢作業數據表,直到異步作業完成或逾時為止。因此,傳回的值將會包含該指定 OperationId 屬性的結果.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>" 
        } 
    ] 
}