Azure Data Factory (ADF)是一項基於雲端的資料整合服務,你可以用它來對資料執行多項活動。 使用ADF建立數據驅動工作流程,以協調及自動化數據行動和資料轉換。 Azure Data Factory 中的 Azure 數據總管命令活動可讓您在 ADF 工作流程中執行 Azure 數據總管管理命令。 本文將教你如何建立包含查找活動和 ForEach 活動的管線,其中包含 Azure Data Explorer 指令活動。
必要條件
- Azure 訂用帳戶。 建立免費的 Azure 帳戶。
- Azure Data Explorer 叢集和資料庫。 建立叢集和資料庫。
- 數據源。
- 數據處理站。 建立數據處理站。
建立新管線
選取 作者 鉛筆工具。
選取 + ,然後從下拉式清單中選取 [ 管線 ],以建立新的管線。
建立查詢操作
查詢活動可以從任何 Azure Data Factory 支援的資料來源取得資料集。 你可以將查詢活動的輸出用於 ForEach 或其他活動。
在 [活動] 窗格的 [一般] 底下,選取 [查閱] 活動。 請將它拖放到右邊的主要畫布中。
畫布現在包含您建立的查找活動。 請使用畫布下方的分頁來更改相關參數。 在 一般 中,重新命名活動。
提示
選擇空白畫布區域以查看管線屬性。 使用 [ 一般] 索引標籤來重新命名管線。 該管線命名為 pipeline-4-docs。
在查找活動中建立 Azure 數據總管數據集
在 [設定] 中,選取您預先建立的 Azure 數據總管來源數據集,或選取 [+ 新增] 以建立新的數據集。
從 新增數據集 視窗中選取 Azure 數據總管 (Kusto) 數據集。 選取 [ 繼續] 以新增數據集。
新的 Azure 資料總管數據集參數會顯示在 [設定] 中。 若要更新參數,請選取 [ 編輯]。
AzureDataExplorerTable的新索引標籤會在主畫布上開啟。
- 選取 [ 一般 ],然後編輯數據集名稱。
- 選取 [ 連線 ] 以編輯資料集屬性。
- 從下拉式清單中選取 [鏈接服務 ],或選取 [ + 新增 ] 以建立新的鏈接服務。
建立新的鏈接服務時,[ 新增鏈接服務][Azure 數據總管] 頁面隨即開啟:
- 選取 Azure Data Explorer 連結服務的名稱。 視需要新增 描述 。
- 在 [透過整合運行時間連線] 中,視需要變更目前的設定。
- 在 [帳戶選取方法] 中,使用下列兩種方法之一來選取您的叢集:
- 選取 從 Azure 訂用帳戶 的單選按鈕,然後選取您的 Azure 訂用帳戶。 然後,選取您的 叢集。 下拉選單只會列出屬於你的叢集。
- 請改為選取 [ 手動輸入] 單選按鈕,然後輸入您的 端點 (叢集 URL)。
- 指定租 租戶。
- 輸入 服務主體標識碼。 在 Azure 入口網站 的 應用程式註冊>總覽>應用程式(用戶端)ID 中找到此值。 主體必須具有符合所用命令所需權限等級的適當權限。
- 選取 [服務主體金鑰 ] 按鈕,然後輸入 服務主體金鑰。
- 從下拉功能表中選取您的 資料庫 。 或者,選取 [ 編輯] 複選框,然後輸入您的資料庫名稱。
- 選取 [ 測試連線 ] 以測試您所建立的連結服務連線。 如果你能連接到你的設定,會出現綠色勾選 「連線成功 」。
- 選取 [完成 ] 以完成鏈接的服務建立。
在你設定連結服務後,在 AzureDataExplorerTable>Connection 中新增 Table 名稱。 選取 [預覽數據],以確定數據已正確呈現。
你的資料集已經準備好了,你可以繼續編輯你的管線。
將查詢新增至查閱活動
在 pipeline-4-docs>的設定中,可以在 查詢 文字框中新增查詢,例如:
ClusterQueries | where Database !in ("KustoMonitoringPersistentDatabase", "$systemdb") | summarize count() by Database視需要變更 [查詢逾時] 或 [無截斷] 和 [僅限第一列] 屬性。 在此流程中,保留預設的查詢逾時,並取消勾選核取方塊。
建立 For-Each 活動
使用 For-Each 活動來遍歷一個集合,並以迴圈方式執行指定的活動。
在管線中新增 For-Each 活動。 此活動處理從查詢活動回傳的資料。
在 活動 面板中,於 迭代與條件分支 下,選擇 「ForEach」 活動。 拖放到畫布上。
在畫布上,將查詢活動的輸出與 ForEach 活動的輸入之間繪製線條以連接它們。
請在畫布中選取 ForEach 動作。 在 [設定] 索引標籤中:
核取 [ 循序 ] 複選框,以取得查閱結果的循序處理,或將它取消核取以建立平行處理。
設定 Batch 次數。
在 Items 中,提供下列輸出值的參考: @activity('Lookup1')。output.value
ForEach 活動設定。
在 ForEach 活動中建立 Azure 數據總管命令活動
雙擊畫布中的 ForEach 活動項目以在新畫布中開啟。 請在 ForEach 中指定活動內容。
在 [活動] 窗格中,於 Azure 數據總管 底下,選取 Azure 數據總管命令 活動,然後將它拖放到畫布中。
在 「連線 」標籤中,選擇你之前建立的同一個連結服務。
在 命令 標籤中,輸入以下命令:
.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 在結果中附加查詢,以減少結果大小或時間。
現在管線已就緒。 你可以選擇管線名稱回到主管道檢視。
發佈管線之前,請選取 Debug。 你可以在 輸出 分頁監控管線進度。
選擇 「全部發佈 」,然後「 新增觸發器 」來執行管線。
管理命令輸出
以下章節將說明指令活動輸出的結構。 流程中的下一個活動可以使用這個輸出。
非異步管理命令的傳回值
在非異步管理命令中,傳回值的結構類似於查閱活動結果的結構。 欄位顯示 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>"
}
]
}
相關內容
- 使用 Azure Data Factory 將數據複製到 Azure 數據總管。
- Azure Data Factory 範本,用於將資料庫的資料批量複製到 Azure Data Explorer。