[英]Azure Synapse Analytics - deleting pipeline Folder
我是 Synapse 的新手,我必須創建一個管道,該管道將從層次結構中的文件夾中刪除文件,如附加圖像。 期待等級制度。 紅色半圈標記我要刪除的文件,例如超過 2 個月的文件。
至於現在我已經為單個文件夾制作了一個管道,並使用 for each 循環我可以訪問文件並刪除相應的文件。 它可以工作,因為我有大約 60-70 個文件夾,甚至更多文件,我想將 go 提升到更高的級別,並為每個文件夾創建一個管道來執行。 這是一個問題。 當我將 GetMetadata Activity 用於頂級文件夾並用於每個循環以獲取名稱文件夾時,我無法僅訪問文件夾中的文件。 你能幫我解決這個問題嗎?
我們可以在execute pipeline
活動的幫助下使用嵌套for each
活動來實現這一點。 如前所述,使用通配符Get metadata
返回所有沒有文件夾的文件,並且Delete
活動無法識別通配符文件夾路徑(文件夾/*)。
req_files
(sample1.csv 和 sample2.csv)。 注意:如果要動態執行此操作,可以使用append variable
來構建所需的文件名(file09/22 和 file08/22)。
get metadata
來獲取文件夾名稱(位於根文件夾內)。 我正在for each
活動遍歷獲取元數據的 output(項目值為@activity('root folder contents').output.childItems
)。get metadata
活動來遍歷每個子文件夾(以獲取文件內容)。execute pipeline
為每個. 在名為delete_pipeline
(我在其中執行刪除)的新管道中創建 3 個參數作為current_folder, folder_files and files_needed
。current_folder: @item().name
folder_files: @activity('sub folder contents').output.childItems
files_needed: @pipeline().parameters.req_files
delete_pipeline
中,我有一個 for each 循環來遍歷我們正在傳遞的文件列表(項目值是@pipeline().parameters.folder_files
)。If condition
活動。 這是因為我想刪除不在我的req_files
參數中的文件(來自父管道的數組,我們傳遞給delete_pipeline
中的files_needed
參數)。 if condition
活動的條件如下:@contains(pipeline().parameters.files_needed,item().name)
只有當req_files (files_needed)
中不存在該文件時,我們才需要刪除該文件。 因此,當條件為假時,我們執行刪除。
我在用於刪除活動的數據集中創建了 2 個參數file_namepath_of_file_to_delete
和file_name_to_delete
,並具有以下動態內容。
file_namepath_of_file_to_delete: Folder/@{pipeline().parameters.current_folder}
file_name_to_delete: @item().name
當我運行管道時,它會保留所需的文件並刪除 rest。 以下是 output 圖片供參考。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.