logo头像

Edward.K Thinking

Azure Data Factory還原備份在Data Lake的Cosmos DB資料

之前談到如何從Cosmos DB備份檔案到Data Lake中,請參考[透過Azure Data Factory備份Cosmos DB到Data Lake],如果要把儲存在Data Lake中的資料匯入到其他資料庫是否可以,當然是可以的,只是必須要花一點小技巧,因為,當時主要是整個Cosmos DB資料轉存到Data Lake中,所以,儲存在Data Lake中的檔案內容格式是採用Json格式儲存,所以,在Azure Data Factory的Data Set中,必須設計一下

建立Azure Data Lake DataSet


整個流程中,最主要就是在資料集的設定,一旦來源資料集設定沒有問題後,其他程序就好辦多了。

上圖設定部分,基本上就如當時你怎樣把資料從Cosmos DB透過ADF匯入到Data Lake時候設定是一樣的,只是在這邊必須把路徑對應到你要還原的Data Lake資料夾或是檔案,在這裡會建議完整路徑與檔案,先採用能實體對應到檔案為主,不要一開始就採用Dynamic Content,主要原因是在於後面我們需要透過自動化方式去把檔案中Json內容轉換出欄位來。當然,如果這部分想要手動建立就沒有差了


設定完成後,在下方選擇Parse Json Path,基本上就會針對檔案內容的Json逐一把欄位給列出來。

不過,在這裡有時候會出現就是無法抓到我們認為的欄位,有大部分機率是因為Json中的欄位可能有特殊符號或是一些特殊字元導致,這時候就必須透過人工方式去處理,像是在Jsonpath Expression設定$.['Output Level']Output Level表示Json檔案中的其中一個資料欄位名稱。


切記,一定要先進行Parse Json Path的動作,這樣才有辦法在後面的Schema才會產生相對應的欄位,如果沒有產生相對應的欄位,後續要做資料複製的Mapping,就沒有辦法了。當然,如果這邊設定完成,你想要把資料還原到哪一種資料庫儲存就不會是問題了。另外,雖然在Parse Json Path中可以抓到檔案內所有Json欄位,不過,有一點也必須注意就是,可能某個欄位不是你想要的處裡的資料,也不要在這部份把資料欄位移除,建議是到Schema區塊去把該欄位從資料集移除,避免出現不明的錯誤發生

上一篇