Transformer des données à l’aide d’une activité Script dans Azure Data Factory ou Synapse Analytics
S’APPLIQUE À : Azure Data Factory Azure Synapse Analytics
Conseil
Essayez Data Factory dans Microsoft Fabric, une solution d’analyse tout-en-un pour les entreprises. Microsoft Fabric couvre tous les aspects, du déplacement des données à la science des données, en passant par l’analyse en temps réel, l’aide à la décision et la création de rapports. Découvrez comment démarrer un nouvel essai gratuitement !
Vous utilisez des activités de transformation dans un pipeline Data Factory ou Synapse pour transformer et traiter des données brutes en prévisions et en analyses. L’activité Script fait partie des activités de transformation prises en charge par les pipelines. Cet article s’ajoute à l’article Transformer des données qui présente une vue d’ensemble de la transformation de données et des activités de transformation prises en charge.
À l’aide de l’activité Script, vous pouvez exécuter des opérations courantes avec le langage de manipulation de données (DML) et le langage de définition de données (DDL). Les instructions DML telles que INSERT, UPDATE, DELETE et SELECT permettent aux utilisateurs d’insérer, de modifier, de supprimer et de récupérer des données dans la base de données. Les instructions DDL comme CREATE, ALTER et DROP permettent à un gestionnaire de bases de données de créer, modifier et supprimer des objets de base de données tels que des tables, des index et des utilisateurs.
Vous pouvez utiliser l’activité Script pour appeler un script SQL dans l’un des magasins de données suivants de votre entreprise ou sur une machine virtuelle Azure :
- Azure SQL Database
- Azure Synapse Analytics
- Base de données SQL Server Si vous utilisez SQL Server, installez le runtime d’intégration auto-hébergé sur l’ordinateur qui héberge la base de données ou sur un autre ordinateur ayant accès à la base de données. Le runtime d’intégration auto-hébergé est un composant qui connecte des sources de données locales ou se trouvant sur une machine virtuelle Azure à des services cloud de manière gérée et sécurisée. Pour plus d’informations, consultez l’article Runtime d’intégration autohébergé.
- Oracle
- Snowflake
Le script peut contenir une seule ou plusieurs instructions SQL s’exécutant de façon séquentielle. Vous pouvez utiliser la tâche de script aux fins suivantes :
- Tronquer une table pour la préparer à l'insertion de données.
- Créer, modifier et supprimer des objets de base de données tels que des tables et des vues.
- Recréer des tables de faits et de dimension avant d'y charger des données.
- Exécuter des procédures stockées. Si l'instruction SQL appelle une procédure stockée qui retourne des résultats à partir d'une table temporaire, utilisez l'option WITH RESULT SETS afin de définir les métadonnées du jeu de résultats.
- Enregistrez l’ensemble de lignes retourné par une requête en tant que sortie d’activité en vue d’une consommation en aval.
Détails de la syntaxe
Voici le format JSON permettant de définir une activité Script :
{
"name": "<activity name>",
"type": "Script",
"linkedServiceName": {
"referenceName": "<name>",
"type": "LinkedServiceReference"
},
"typeProperties": {
"scripts" : [
{
"text": "<Script Block>",
"type": "<Query> or <NonQuery>",
"parameters":[
{
"name": "<name>",
"value": "<value>",
"type": "<type>",
"direction": "<Input> or <Output> or <InputOutput>",
"size": 256
},
...
]
},
...
],
...
]
},
"scriptBlockExecutionTimeout": "<time>",
"logSettings": {
"logDestination": "<ActivityOutput> or <ExternalStore>",
"logLocationSettings":{
"linkedServiceName":{
"referenceName": "<name>",
"type": "<LinkedServiceReference>"
},
"path": "<folder path>"
}
}
}
}
Le tableau suivant décrit ces paramètres JSON :
Nom de la propriété | Description | Obligatoire |
---|---|---|
name | Nom de l’activité. | Oui |
type | Type de l’activité, défini sur « Script ». | Oui |
typeProperties | Spécifiez les propriétés pour configurer l’activité Script. | Oui |
linkedServiceName | Base de données cible sur laquelle le script s’exécute. Il doit s’agir d’une référence à un service lié. | Oui |
Scripts | Tableau d’objets pour représenter le script. | Non |
scripts.text | Texte brut d’un bloc de requêtes. | Non |
scripts.type | Type du bloc de requêtes. Il peut s’agir du type Query ou NonQuery. Par défaut : Query. | Non |
scripts.parameter | Tableau de paramètres du script. | Non |
scripts.parameter.name | Le nom du paramètre. | Non |
scripts.parameter.value | Valeur du paramètre. | Non |
scripts.parameter.type | Type de données du paramètre. Le type est Logical et suit le mappage de type de chaque connecteur. | Non |
scripts.parameter.direction | Direction du paramètre. Valeur possible : Input, Output, InputOutput. La valeur est ignorée si la direction est Output. Le type ReturnValue n’est pas pris en charge. Définissez la valeur de retour de SP sur un paramètre de sortie pour la récupérer. | Non |
scripts.parameter.size | Taille maximale du paramètre. S’applique uniquement au paramètre de direction Output/InputOutput de type string/byte[]. | Non |
scriptBlockExecutionTimeout | Le temps d’attente avant l’expiration de l’opération d’exécution du bloc de script. | Non |
logSettings | Paramètres pour stocker les journaux de sortie. Si ce paramètre n’est pas spécifié, le journal de script est désactivé. | Non |
logSettings.logDestination | Destination de la sortie du journal. Les valeurs possibles sont ActivityOutput et ExternalStore. Valeur par défaut : ActivityOutput. | Non |
logSettings.logLocationSettings | Paramètres de l’emplacement cible si logDestination est ExternalStore. | Non |
logSettings.logLocationSettings.linkedServiceName | Service lié de l’emplacement cible. Seul le stockage d’objets blob est pris en charge. | Non |
logSettings.logLocationSettings.path | Le chemin d’accès au dossier sous lequel stocker les journaux. | Non |
Sortie d'activité
Exemple de sortie :
{
"resultSetCount": 2,
"resultSets": [
{
"rowCount": 10,
"rows":[
{
"<columnName1>": "<value1>",
"<columnName2>": "<value2>",
...
}
]
},
...
],
"recordsAffected": 123,
"outputParameters":{
"<parameterName1>": "<value1>",
"<parameterName2>": "<value2>"
},
"outputLogs": "<logs>",
"outputLogsLocation": "<folder path>",
"outputTruncated": true,
...
}
Nom de la propriété | Description | Condition |
---|---|---|
resultSetCount | Nombre de jeux de résultats retournés par le script. | Toujours |
resultSets | Tableau qui contient tous les jeux de résultats. | Toujours |
resultSets.rowCount | Nombre total de lignes dans le jeu de résultats. | Toujours |
resultSets.rows | Tableau de lignes dans le jeu de résultats. | Toujours |
recordsAffected | Nombre de lignes affectées par le script. | Si scriptType a la valeur NonQuery. |
outputParameters | Paramètres de sortie du script. | Si le type de paramètre est Output ou InputOutput. |
outputLogs | Journaux écrits par le script, par exemple, l’instruction print. | Si le connecteur prend en charge l’instruction log, si enableScriptLogs a la valeur true et si logLocationSettings n’est pas fourni. |
outputLogsPath | Chemin complet du fichier. | Si enableScriptLogs a la valeur true et logLocationSettings est fourni. |
outputTruncated | Indique que la sortie dépasse les limites et qu’elle a dû être tronquée. | Si la sortie dépasse les limites. |
Notes
- La sortie est collectée à chaque exécution d’un bloc de script. La sortie finale est le résultat de la fusion de toutes les sorties de bloc de script. Le paramètre de sortie qui porte le même nom dans un bloc de script différent sera remplacé.
- Étant donné que la taille et le nombre de lignes de la sortie sont limitées, la sortie sera tronquée dans l’ordre suivant : journaux -> paramètres -> lignes. Notez que cela s’applique à un seul bloc de script, ce qui signifie que les lignes de sortie du bloc de script suivant ne supprimeront pas les journaux précédents.
- Les erreurs provoquées par le journal n’entraîneront pas l’échec de l’activité.
- Pour en savoir plus sur la consommation des jeux de résultats de sortie des activités en aval, consultez Utiliser le résultat de l’activité de recherche.
- Utilisez outputLogs lorsque vous utilisez les instructions « PRINT » à des fins de journalisation. Si la requête retourne des jeux de résultats, ceux-ci seront disponibles dans la sortie de l’activité et seront limités à 5 000 lignes et à une taille de 4 Mo.
Configurer l’activité Script à l’aide de l’interface utilisateur
Script en ligne
Les scripts en ligne s’intègrent parfaitement au pipeline CI/CD puisque le script est stocké dans le cadre des métadonnées du pipeline.
Journalisation
Options de journalisation :
- Désactiver : aucune sortie d’exécution n’est journalisée.
- Sortie de l’activité : la sortie de l’exécution du script est ajoutée à la sortie de l’activité. Les activités en aval peuvent ensuite l’utiliser. La taille de la sortie est limitée à 4 Mo.
- Stockage externe : conserve la sortie dans un stockage. Utilisez cette option si la taille de sortie est supérieure à 2 Mo ou si vous souhaitez conserver la sortie de manière explicite dans votre compte de stockage.
Remarque
Facturation : l’activité Script est facturée comme une activité de pipeline.
Contenu connexe
Consultez les articles suivants qui expliquent comment transformer des données par d’autres moyens :