簡體   English   中英

除了源文件名之外,我還想添加日期和時間字符串。(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. 使用目錄的 dataset 參數創建源數據集。

在此處輸入圖像描述

管道1:

  1. 使用Get Metadata活動,獲取容器 (data/) 下的子項

在此處輸入圖像描述

  1. 將子項傳遞給ForEach活動以循環每個文件夾。

     @activity('get sub folder list_yyyy').output.childItems

在此處輸入圖像描述

  1. 在 ForEach 活動中,添加execute pipeline活動。 創建一個新的管道 (pipeline2),其中包含 2 個參數來保存源和接收器文件夾結構。 從 pipeline1 傳遞 pipeline2 參數值。

Subolder1: @item().name Sink_dir1: @concat('year=',item().name)

在此處輸入圖像描述

管道2:

  1. 在 pipeline2 中,重復與 pipeline1 相同的過程。 使用 Get Metadata 活動獲取文件夾(yyyy 文件夾)下的子項並將子項傳遞給 ForEach 活動。

管道2參數:

在此處輸入圖像描述

獲取元數據:

數據集屬性 - 目錄: @pipeline().parameters.SubFolder1

在此處輸入圖像描述

  1. 在 ForEach 活動中,添加執行管道以將當前項目傳遞給嵌套管道 (pipeline3)。 在 pipeline3 中創建 2 個管道參數以保存源和接收器結構。

SubFolder2: @concat(pipeline().parameters.SubFolder1,'/',item().name)

sink_dir2: @concat(pipeline().parameters.sink_dir1,'/month=',item().name)

在此處輸入圖像描述

管道3:

  1. 使用 Get Metadata 活動獲取源結構下的子項。

數據集屬性 - 目錄: @pipeline().parameters.SubFolder2

在此處輸入圖像描述

  1. 將子項傳遞給 ForEach 活動。 在 ForEach 活動中添加復制數據活動以將文件從源復制到接收器。

  2. 將源連接到源數據集並通過連接參數值和當前子項來動態傳遞目錄參數。

目錄: @concat(pipeline().parameters.SubFolder2,'/',item().name,'/')

在此處輸入圖像描述

  1. 使用數據集參數創建接收器數據集以動態傳遞目錄路徑。

  2. 在 sink 中,通過將參數值與當前子項路徑串聯來動態傳遞目錄路徑。

Sink_dir: @concat(pipeline().parameters.sink_dir2,'/day=',item().name,'/')

在此處輸入圖像描述

輸出結構:如果在接收器中不可用,它會自動創建文件夾結構。

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM