整合 Azure 資料總管與 Azure Data Factory

Azure Data Factory (ADF) 是雲端式數據整合服務,可讓您整合不同的數據存放區,並在數據上執行活動。 ADF 可讓您建立數據驅動工作流程,以協調及自動化數據移動和數據轉換。 Azure Data Explorer 是 Azure Data Factory 中支援的其中一個數據存放區

適用於 Azure Data Explorer 的 Azure Data Factory 活動

Azure Data Explorer 使用者可以使用各種與 Azure Data Factory 整合:

複製活動

Azure Data Factory 複製活動 可用來在數據存放區之間傳輸數據。 Azure Data Explorer 支援作為來源,其中數據會從 Azure Data Explorer 複製到任何支援的數據存放區,而接收則會將數據從任何支持的數據存放區複製到 Azure Data Explorer。 如需詳細資訊,請參閱使用 Azure Data Factory 將數據複製到 Azure Data Explorer 或從中複製數據。 如需詳細的逐步解說,請參閱將數據從 Azure Data Factory 載入 Azure Data Explorer。 Azure IR (Integration Runtime) 支援 Azure IR Data Explorer、在 Azure 內複製數據時使用,以及從內部部署或具有訪問控制的數據存放區將數據複製到內部部署或網路中的數據存放區時使用,例如 Azure 虛擬網路。 如需詳細資訊,請參閱 要使用的 IR。

提示

使用複製活動並建立連結服務數據集時,請選取數據存放區 Azure Data Explorer (Kusto) ,而不是舊的數據存放區 Kusto

查閱活動

查閱活動用於在 Azure Data Explorer 上執行查詢。 查詢的結果會當做查閱活動的輸出傳回,而且可以在管線的下一個活動中使用,如 ADF 查閱檔中所述。

除了回應大小限制為 5,000 個數據列和 2 MB 之外,活動也有 1 小時的查詢逾時限制。

命令活動

Command 活動允許執行 Azure Data Explorer 管理命令。 不同於查詢,管理命令可能會修改資料或元數據。 某些管理命令的目標為將資料內嵌至 Azure Data Explorer,使用 或 .ingest.set-or-append) 之類的命令,或使用 之類的.export命令將數據從 Azure Data Explorer 複製到外部資料存放區。 如需命令活動的詳細逐步解說,請參閱使用 Azure Data Factory 命令活動來執行 Azure Data Explorer 管理命令。 使用管理命令來複製數據,有時比 複製活動 更快又便宜的選項。 若要判斷何時要使用 Command 活動與 複製活動,請參閱在複製數據時選取 [複製] 和 [命令活動]。

從資料庫範本大量複製

使用 Azure Data Factory 範本從資料庫大量複製到 Azure Data Explorer 是預先定義的 Azure Data Factory 管線。 範本可用來建立每個資料庫或每個數據表的許多管線,以加快數據複製的速度。

對應資料流程

Azure Data Factory 對應數據流是可視化設計的數據轉換,可讓數據工程師在不撰寫程式代碼的情況下開發圖形化數據轉換邏輯。 若要建立數據流,並將數據內嵌至 Azure Data Explorer,請使用下列方法:

  1. 建立 對應數據流
  2. 將數據匯出至 Azure Blob
  3. 定義事件方格ADF複製活動,以將資料內嵌至 Azure Data Explorer。

在複製資料時選取 [複製] 和 [Azure Data Explorer 命令活動]

本節可協助您為數據複製需求選取正確的活動。

從 Azure Data Explorer 複製資料或將資料複製到 Azure Data Explorer 時,Azure Data Factory 中有兩個可用的選項:

  • 複製活動。
  • Azure Data Explorer 命令活動,它會執行其中一個管理命令,以在 Azure Data Explorer 中傳輸數據。

從 Azure Data Explorer 複製數據

您可以使用複製活動或 .export 命令,從 Azure Data Explorer 複製數據。 命令 .export 會執行查詢,然後匯出查詢的結果。

如需從 Azure Data Explorer 複製資料的 複製活動 和.export命令的比較,請參閱下表。

複製活動 .export 命令
流程描述 ADF 會在 Kusto 上執行查詢、處理結果,並將它傳送至目標數據存放區。
(Azure Data Explorer ADF > 接收資料存放區) >
ADF 會將.export管理命令傳送至 Azure Data Explorer,以執行命令,並將數據直接傳送至目標數據存放區。
(** Azure Data Explorer > 接收數據存放區**)
支援的目標數據存放區 各種 支持的數據存放區 ADLSv2、Azure Blob、SQL Database
效能 集中式
  • 分散式 (預設) ,同時從多個節點導出數據
  • 更快且 COGS (銷售) 有效率的貨物成本。
伺服器限制 查詢限制 可以擴充/停用。 根據預設,ADF 查詢包含:
  • 大小限制為 500,000 筆記錄或 64 MB。
  • 時間限制為10分鐘。
  • noTruncation 設定為 false。
根據預設,擴充或停用查詢限制:
  • 大小限制已停用。
  • 伺服器逾時會延長至 1 小時。
  • MaxMemoryConsumptionPerIteratorMaxMemoryConsumptionPerQueryPerNode 會延伸至最大 (5 GB、TotalPhysicalMemory/2) 。

提示

如果您的複製目的地是命令支援的.export其中一個數據存放區,而且如果沒有任何 複製活動 功能對您的需求很重要,請選取.export命令。

將數據複製到 Azure Data Explorer

您可以使用複製活動或擷取命令將數據複製到 Azure Data Explorer,例如從查詢擷取 (.set-or-append、、.set-or-replace.set.replace)從記憶體擷取 (.ingest) 。

如需 複製活動的比較,請參閱下表,並擷取命令以將數據複製到 Azure Data Explorer。

複製活動 從查詢內嵌
.set-or-append / .set-or-replace / .set / .replace
從儲存體內嵌
.ingest
流程描述 ADF 會從源數據存放區取得數據、將其轉換成表格式格式,並執行必要的架構對應變更。 ADF 接著會將數據上傳至 Azure Blob、將其分割成區塊,然後下載 Blob 以將它們內嵌到 Azure Data Explorer 數據表。
(源數據存放區 > ADF > Azure Blob > Azure Data Explorer)
這些命令可以執行查詢或.show命令,並將查詢的結果擷取至數據表, (Azure Data Explorer Azure Data Explorer >) 。 此命令會藉由從一或多個雲端記憶體成品「提取」數據,將數據擷取到數據表中。
支援的源數據存放區 各種選項 ADLS Gen 2、Azure Blob、SQL (使用 sql_request () 外掛程式) 、使用 cosmosdb_sql_request 外掛程式 (Azure Cosmos DB) ,以及提供 HTTP 或 Python API 的任何其他數據存放區。 文件系統、Azure Blob 儲存體、ADLS Gen 1、ADLS Gen 2
效能 擷取會排入佇列和管理,這可確保小型擷取並確保高可用性,方法是提供負載平衡、重試和錯誤處理。
  • 這些命令不是針對大量數據匯入而設計的。
  • 如預期般運作且成本較低。 但在生產案例中,以及流量速率和數據大小很大時,請使用 複製活動。
伺服器限制
  • 沒有大小限制。
  • 最大逾時限制:每個內嵌 Blob 一小時。
  • 查詢元件只有大小限制,可藉由指定 noTruncation=true來略過。
  • 逾時上限:一小時。
  • 沒有大小限制。
  • 逾時上限:一小時。

提示

  • 將數據從ADF複製到 Azure 時 Data Explorer 使用 ingest from query 命令。
  • 對於大型數據集 (>1GB) ,請使用 複製活動。

必要權限

下表列出與 Azure Data Factory整合中各種步驟的必要許可權。

步驟 作業 最低層級的許可權 備註
建立連結服務 資料庫導覽 資料庫查看器
使用ADF的登入使用者應獲得授權,以讀取資料庫元數據。
用戶可以手動提供資料庫名稱。
[測試連接] 資料庫監視器數據表擷取器
服務主體應獲得授權,以執行資料庫層級 .show 命令或數據表層級擷取。
  • TestConnection 會驗證叢集的連線,而不是資料庫。 即使資料庫不存在,它還是可以成功。
  • 數據表管理員許可權不足。
建立數據集 數據表導覽 資料庫監視器
使用ADF登入的用戶必須獲得授權,才能執行資料庫層級 .show 命令。
用戶可以手動提供數據表名稱。
建立數據集複製活動 預覽資料 資料庫查看器
服務主體必須經過授權,才能讀取資料庫元數據。
匯入結構描述 資料庫查看器
服務主體必須經過授權,才能讀取資料庫元數據。
當 Azure Data Explorer 是表格式到表格式複製的來源時,ADF 會自動匯入架構,即使使用者未明確匯入架構也一樣。
Azure Data Explorer 作為接收 建立依名稱的數據行對應 資料庫監視器
服務主體必須獲得授權,才能執行資料庫層級 .show 命令。
  • 所有必要作業都使用 數據表擷取器
  • 某些選擇性作業可能會失敗。
  • 在數據表上建立 CSV 對應
  • 卸除對應
數據表擷取器資料庫管理員
服務主體必須經過授權,才能對數據表進行變更。
內嵌資料 數據表擷取器資料庫管理員
服務主體必須經過授權,才能對數據表進行變更。
作為來源的 Azure 資料總管 執行查詢 資料庫查看器
服務主體必須經過授權,才能讀取資料庫元數據。
Kusto 命令 根據每個命令的許可權層級。

效能

如果 Azure Data Explorer 是來源,而且您使用包含查詢的查閱、複製或命令活動,請參閱效能資訊的查詢最佳做法複製活動的 ADF 檔

本節說明使用 Azure Data Explorer 是接收的複製活動。 Azure Data Explorer 接收的估計輸送量為 11-13 MBps。 下表詳細說明影響 Azure Data Explorer 接收效能的參數。

參數 注意
元件地理鄰近性 將所有元件放在相同的區域中:
  • 來源和接收數據存放區。
  • ADF 整合運行時間。
  • 您的 Azure Data Explorer 叢集。
請確定您的整合運行時間至少與 Azure Data Explorer 叢集位於相同的區域中。
DIU 數目 ADF 每四個 DIU 一個 VM。
只有當來源是具有多個檔案的檔案型存放區時,增加 DIU 才有説明。 然後,每個 VM 會以平行方式處理不同的檔案。 因此,複製單一大型檔案的延遲高於複製多個較小的檔案。
Azure Data Explorer 叢集的數量和 SKU 大量 Azure Data Explorer 節點可提升擷取處理時間。 使用開發 SKU 將會嚴重限制效能
平行處理原則 若要從資料庫複製大量數據,請分割您的數據,然後使用 ForEach 迴圈平行複製每個分割區,或使用從資料庫大量複製至 Azure Data Explorer 範本。 注意:複製活動 中的設定>平行處理原則程度與 Azure Data Explorer 無關。
數據處理複雜度 延遲會根據來源檔格式、數據行對應和壓縮而有所不同。
執行整合運行時間的 VM
  • 針對 Azure 複本,ADF VM 和機器 SKU 無法變更。
  • 對於內部部署至 Azure 複本,請判斷裝載自我裝載 IR 的 VM 夠強。

秘訣和常見陷阱

監視活動進度

  • 監視活動進度時, 數據寫入 屬性可能會大於 數據讀取 屬性,因為 數據讀取 是根據二進位檔大小計算,而 寫入的數據 則是根據記憶體內部大小計算,在數據還原串行化並解壓縮之後。

  • 監視活動進度時,您可以看到數據已寫入 Azure Data Explorer 接收。 查詢 Azure Data Explorer 資料表時,您會看到數據尚未抵達。 這是因為複製到 Azure Data Explorer 時有兩個階段。

    • 第一個階段會讀取源數據、將其分割為 900 MB 區塊,並將每個區塊上傳至 Azure Blob。 ADF 活動進度檢視會看到第一個階段。
    • 一旦所有數據上傳至 Azure Blob,第二個階段就會開始。 叢集的節點會下載 Blob,並將數據擷取至接收數據表。 然後,數據會顯示在 Azure Data Explorer 資料表中。

由於逸出不當而無法內嵌 CSV 檔案

Azure Data Explorer 預期 CSV 檔案與 RFC 4180 一致。 其預期如下:

  • 包含需要逸出 (的字段,例如 “ 和新的行,) 應該以 字元開頭和結尾,不含空格符。 欄位的所有 字元都會使用雙精度浮點數 」 字元 (「) 逸出。 例如 ,「Hello, 」「World」是 具有單一數據行或欄位且內容 為 Hello, “World” 的單一記錄的有效 CSV 檔案。
  • 檔案中的所有記錄必須具有相同數目的數據行和欄位。

Azure Data Factory 允許反斜杠 (逸出) 字元。 如果您使用 Azure Data Factory 產生具有反斜杠字元的 CSV 檔案,將檔案擷取至 Azure Data Explorer 將會失敗。

範例

下列文字值:Hello, “World”
ABC DEF
“ABC\D”EF
“ABC DEF

應該會出現在適當的 CSV 檔案中,如下所示:“Hello, ”“World””
“ABC DEF”
“”“ABC\D”“EF”
“”“ABC DEF”

使用默認逸出字元 (反斜杠) ,下列 CSV 將無法與 Azure Data Explorer 搭配使用:“Hello, ”World“”
“ABC DEF”
“”ABC\D“EF”
“”ABC DEF”

巢狀 JSON 物件

將 JSON 檔案複製到 Azure Data Explorer 時,請注意:

  • 不支援數位。
  • 如果您的 JSON 結構包含對象資料類型,Azure Data Factory 將會扁平化物件的子專案,並嘗試將每個子項目對應至 Azure Data Explorer 數據表中的不同數據行。 如果您希望整個物件項目對應至 Azure 中的單一資料行 Data Explorer:
    • 將整個 JSON 資料列內嵌至 Azure Data Explorer 中的單一動態數據行。
    • 使用 Azure Data Factory的 JSON 編輯器手動編輯管線定義。 在 對應中
      • 拿掉針對每個子專案建立的多個對應,並新增單一對應,將物件類型對應至數據表數據行。
      • 在右方括弧後面新增逗號,後面接著:
        "mapComplexValuesToString": true.

複製到 Azure Data Explorer 時指定其他屬性

您可以在管線的複製活動中指定它們,以新增其他 擷取屬性

若要新增屬性

  1. 在 [Azure Data Factory] 中,選取 [撰寫鉛筆] 工具。

  2. [管線] 下,選取您要在其中新增其他擷取屬性的管線。

  3. 在 [ 活動] 畫布中,選取 [ 複製數據 ] 活動。

  4. 在活動詳細數據中,選取 [ 接收],然後展開 [其他屬性]。

  5. 選取 [ 新增],選取 [ 視需要新增節點 ] 或 [ 新增陣列 ],然後指定擷取屬性名稱和值。 重複此步驟以新增更多屬性。

  6. 完成儲存併發佈管線之後。

後續步驟