本文介紹了將Azure Blob分區(qū)添加到Azure SQL表的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我在Azure Blob中對拼圖文件進行了分區(qū),并將其復制到Azure SQL。如何將分區(qū)名稱放入SQL表?
我已經(jīng)知道如何通過在復制活動(圖1和圖2)的源數(shù)據(jù)部分中添加一個額外的列來將完整的文件路徑放入SQL表中,但我正在嘗試如何將完整的文件路徑向下僅表示為分區(qū)名(202105)。
在復制活動中的源數(shù)據(jù)的數(shù)據(jù)預覽中,它顯示了僅帶有分區(qū)名稱的time_Period列(圖3)。但是,當它在SQL中顯示時,它對于所有行都是空的(或者它是完整的文件路徑,這取決于我是否在復制活動的源數(shù)據(jù)部分添加了額外的列)。
圖片1:
圖2:
圖3:
我已嘗試在Azure SQL中將Time_Period的數(shù)據(jù)類型更改為int。我已嘗試分析$$FILEPATH
,但均未奏效。
我基本上是從頭開始,因為我相信有更好的辦法。
額外的背景here和可能的here。
類似于this
推薦答案
如here在MS文檔中所述,您可以使用enablePartitionDiscovery
功能。
來源:分區(qū)文件:
源數(shù)據(jù)集:
剛才提到了容器名稱,并將目錄和文件字段留空。我們將在復制活動中使用WildCard paths
篩選它們。
根據(jù)您的文件路徑在Copy Activity
中配置源代碼:
注意:您可以跳過步驟4,即添加$$FILEPATH
一欄,僅供參考。您可以刪除此位,因為您已經(jīng)使用enablePartitionDiscovery
獲取了Ready列。
對于要拾取的單個文件夾,您需要如下設置。
通配符路徑:sink / columnparts / time_period=202105 / *.parquet
對于多個文件夾time_period=202105
,time_period=202106
…..如前面的SINP所示,設置如下。
**
將取代父文件夾中的任何文件夾columnparts
通配符路徑:sink / columnparts / ** / *.parquet
分區(qū)根路徑:該路徑應指向所有分區(qū)文件夾所在的父文件夾。
在我的示例中:sink/columnparts
啟用分區(qū)發(fā)現(xiàn)時必須提供分區(qū)根路徑。
接收器:可選更新現(xiàn)有表或僅創(chuàng)建新表。
從SQL數(shù)據(jù)庫查看:time_period
列保存值202105
time_period=202105/part-00004-fcbe0bf5-2c93-45f5-9bb2-2f9089a3e83a-c000.snappy.parquet
如果您看到此錯誤:
您的映射未更新!在映射部分中,您可以再次使用clear
或reset
模式和Import schema
,以確保這一點。