L’interface graphique d’ADF peut parfois manquer de quelques écrans, heureusement il est toujours possible de passer par le JSON afin de réaliser certaines configurations.

Paramétrer le service lié
La première étape concerne le paramétrage du service lié de système de fichier. Pour ce faire, on ajoute le code suivant dans le nœud properties.
"parameters": {
"Host": {
"type": "string",
"defaultValue": "\\IRAutoHeberge\\Dépôt"
}
Il est ensuite nécessaire de variabiliser le noeud host afin d’obtenir le json suivant :
{
"name": "FS_PartageOnPremise",
"type": "Microsoft.DataFactory/factories/linkedservices",
"properties": {
"description": "Service lié référençant un espace partagé dans le réseau privé de l'entreprise",
"type": "FileServer",
"typeProperties": {
"host": "@{linkedService().Host}",
"userId": "chsauget",
"password": "<3ADF"
},
"connectVia": {
"referenceName": "IRAutoHeberge",
"type": "IntegrationRuntimeReference"
},
"parameters": {
"Host": {
"type": "string",
"defaultValue": "\\IRAutoHeberge\\Dépôt"
}
}
}
}
Modifier le jeu de données
Le service lié est maintenant paramétré, il faut donc spécifier au niveau du jeu de données (DataSet) l’host à utiliser.
L’objectif étant de variabiliser la connexion depuis un pipeline, on ajoute le paramètre niveau jeu de données.

On fait ensuite remonter le paramètre au service lié.

Il ne reste plus qu’à configurer la valeur du paramètre lors de l’exécution du Pipeline. Soit en spécifiant directement la valeur :

Soit en récupérant la valeur depuis une boucle foreach par exemple (ça semble faire plus de sens 😉 ) :

En configurant l’activité de copie de la façon suivante :

Il est bien sûr possible de paramétrer les login et mots de passe de la même manière.
Le code du pipeline est le suivant :
{
"name": "Col_Customer",
"properties": {
"activities": [
{
"name": "ForEach1",
"type": "ForEach",
"typeProperties": {
"items": {
"value": "@pipeline().parameters.HostLIst",
"type": "Expression"
},
"activities": [
{
"name": "Copy1",
"type": "Copy",
"policy": {
"timeout": "7.00:00:00",
"retry": 3,
"retryIntervalInSeconds": 30,
"secureOutput": false,
"secureInput": false
},
"typeProperties": {
"source": {
"type": "FileSystemSource",
"recursive": false
},
"sink": {
"type": "SqlSink",
"writeBatchSize": 10000
},
"enableStaging": false
},
"inputs": [
{
"referenceName": "FS_Customer",
"type": "DatasetReference",
"parameters": {
"Host": "@item().Host"
}
}
],
"outputs": [
{
"referenceName": "SQDB_Col_Customer",
"type": "DatasetReference"
}
]
}
]
}
}
],
"parameters": {
"HostLIst": {
"type": "object",
"defaultValue": [
{
"Host": "\\\\IRAutoHeberge\\Dépôt"
},
{
"Host": "\\\\IRAutoHeberge\\Dépôt2"
}
]
}
},
"folder": {
"name": "AdventureWorks"
}
},
"type": "Microsoft.DataFactory/factories/pipelines"
}