简体   繁体   中英

Move Files from Multiple Folders to Multiple Folders in Azure Blob

I have a folder structure in Azure Blob like this

Container/app_archive/app1/app1.csv

Container/app_archive/app2/app2.csv

Container/app_archive/app3/app3.csv

Container/app_archive/app4/app4.csv

Container/app_archive/app5/app5.csv

....

Container/app_archive/app150/app150.csv

These needs to be moved to Container/app_archive/app1/YYYY/MM/DD/app1.csv

Container/app_archive/app2/YYYY/MM/DD/app2.csv

.....

Container/app_archive/app150/YYYY/MM/DD/app150.csv

Whenever any file is placed in any folder, it has to trigger and copy the files accordingly. Also I need to capture this information in an audit table like Source File Name, Source File Path, Destination File Path etc etc. How to achieve this?

You can use Storage event triggers with Dataset parameters for this like below.

First Give the Root container and Blob path ends with as.csv in Storage event trigger.

在此处输入图像描述

Create two pipeline parameters and assign the trigger values to those while creating trigger.

在此处输入图像描述

在此处输入图像描述

Now, create dataset parameters for folder name and file names for both source and sink datasets.

Source:

在此处输入图像描述

Sink:

在此处输入图像描述

My pipeline JSON:

 {

"name": "pipeline1",

"properties": {

"activities": [

{

"name": "Copy data1",

"type": "Copy",

"dependsOn": [

{

"activity": "Set variable1",

"dependencyConditions": [

"Succeeded"

]

}

],

"policy": {

"timeout": "0.12:00:00",

"retry": 0,

"retryIntervalInSeconds": 30,

"secureOutput": false,

"secureInput": false

},

"userProperties": [],

"typeProperties": {

"source": {

"type": "DelimitedTextSource",

"storeSettings": {

"type": "AzureBlobFSReadSettings",

"recursive": true,

"enablePartitionDiscovery": false

},

"formatSettings": {

"type": "DelimitedTextReadSettings"

}

},

"sink": {

"type": "DelimitedTextSink",

"storeSettings": {

"type": "AzureBlobFSWriteSettings"

},

"formatSettings": {

"type": "DelimitedTextWriteSettings",

"quoteAllText": true,

"fileExtension": ".txt"

}

},

"enableStaging": false,

"translator": {

"type": "TabularTranslator",

"typeConversion": true,

"typeConversionSettings": {

"allowDataTruncation": true,

"treatBooleanAsNumber": false

}

}

},

"inputs": [

{

"referenceName": "Source1",

"type": "DatasetReference",

"parameters": {

"filename": {

"value": "@pipeline().parameters.filename",

"type": "Expression"

},

"folderpath": {

"value": "@pipeline().parameters.path",

"type": "Expression"

}

}

}

],

"outputs": [

{

"referenceName": "target1",

"type": "DatasetReference",

"parameters": {

"sinkpath": {

"value": "@variables('var_path')",

"type": "Expression"

},

"sinkfilename": {

"value": "@pipeline().parameters.filename",

"type": "Expression"

}

}

}

]

},

{

"name": "Set variable1",

"type": "SetVariable",

"dependsOn": [],

"userProperties": [],

"typeProperties": {

"variableName": "var_path",

"value": {

"value": "@concat(split(pipeline().parameters.path,'/')[2],'/',formatDateTime(utcNow(),'yyyy/MM/dd'),'/')",

"type": "Expression"

}

}

}

],

"parameters": {

"path": {

"type": "string"

},

"filename": {

"type": "string"

}

},

"variables": {

"var_path": {

"type": "String"

},

"var1": {

"type": "String"

}

},

"annotations": []

}

}

Result when a file uploaded to app1 folder:

在此处输入图像描述

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM