[英]I want to use part of the source file name as the file name in the sink folder. "Azure Synapse Analytics"
[英]I would like to add the date and time string in addition to the source file name.(Azure Synapse Analytics)
將文件從 S3 復制到 AzureBlobStorage 時,除了源文件名之外,我還想添加日期和時間字符串。
本質上,S3 文件夾結構看起來像這樣 data/yyyy/mm/dd/files *yyyy=2019-2022, mm=01-12, dd=01-31
在將這些復制到 Blob 時,我們希望將它們存儲在以下文件夾結構中。 數據/年=yyyy/月=mm/日=dd/文件
附上一張S3存儲桶的文件夾結構圖,以及我們想用Blob Storage實現的文件夾結構。
我手動重命名了 Blob Storage 中的所有照片文件夾,但是文件數以千計,而且需要時間,所以我想自動重命名。
我使用“GetMetadata”還是“ForEach”活動? 或者在“復制”活動中使用動態參數來設置接收器數據集?
另外,我不是經驗豐富的數據工程師,也不熟悉 Synapse,所以由於缺乏知識,我不知道如何做到這一點。
任何幫助將不勝感激。 謝謝。
您首先需要文件名(使用 Getmetadata)。 然后對於每個文件名,使用 concat() 等函數附加日期和時間字符串。 您還可以創建一個變量“NewFileName”並使用它作為參數傳遞給復制活動。 然后復制源將具有原始文件名,接收器將具有新文件名。 復制活動將被參數化,因為您將動態傳遞文件名。
希望這可以幫助。
使用Get Metadata
活動、 ForEach
活動和Execute pipeline
活動從源數據集中獲取嵌套文件夾結構。 通過將所需的字符串值添加到文件夾結構中,將提取的文件夾結構動態傳遞給接收器數據集。
管道1:
Get Metadata
活動,獲取容器 (data/) 下的子項。 將子項傳遞給ForEach
活動以循環每個文件夾。
@activity('get sub folder list_yyyy').output.childItems
execute pipeline
活動。 創建一個新的管道 (pipeline2),其中包含 2 個參數來保存源和接收器文件夾結構。 從 pipeline1 傳遞 pipeline2 參數值。 Subolder1: @item().name
Sink_dir1: @concat('year=',item().name)
管道2:
管道2參數:
獲取元數據:
數據集屬性 - 目錄: @pipeline().parameters.SubFolder1
SubFolder2: @concat(pipeline().parameters.SubFolder1,'/',item().name)
sink_dir2: @concat(pipeline().parameters.sink_dir1,'/month=',item().name)
管道3:
數據集屬性 - 目錄: @pipeline().parameters.SubFolder2
將子項傳遞給 ForEach 活動。 在 ForEach 活動中添加復制數據活動以將文件從源復制到接收器。
將源連接到源數據集並通過連接參數值和當前子項來動態傳遞目錄參數。
目錄: @concat(pipeline().parameters.SubFolder2,'/',item().name,'/')
使用數據集參數創建接收器數據集以動態傳遞目錄路徑。
在 sink 中,通過將參數值與當前子項路徑串聯來動態傳遞目錄路徑。
Sink_dir: @concat(pipeline().parameters.sink_dir2,'/day=',item().name,'/')
輸出結構:如果在接收器中不可用,它會自動創建文件夾結構。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.