Cyro Technology

Les DataTables

Les DataTables sont les Variables les plus utilisées dans les robots UiPath, elle se comporte comme une table de base de données en mémoire.

Structure d’une DataTable :

Construire une DataTable

Plusieurs activités génèrent une dataTable en sortie, la plus couramment utilisée est la sortie d’un fichier Excel avec « Read Range » ou un CSV avec « Read CSV ».

Il est possible de créer un DataTable avec l’activité « Build Data Table »

L’activité permet de créer des colonnes, paramétrer le type de données qu’elles contiendront ainsi que renseigner directement une liste de lignes, ici {« text »,1}.

 

Une autre solution consiste de la générer depuis une chaine de caractère avec l’activité « Generate Data Table »

L’activité prend une chaine en entrée et fournit des outils pour identifier les éléments de séparation ligne/colonne.

Cette activité est très utile lorsqu’on souhaite traiter des données issues d’un processus d’OCR.

Travailler sur les colonnes

En utilisant l’activité « Add Data Column »

Dans l’exemple ci-dessus on ajout la colonne « Date » au DataTable « dtTest », le type de sera « System.DateTime ». On retrouve ensuite tous les paramètres de la fenêtre « Modifier la colonne » de l’activité « Build Data Table » vu précédemment.

Il est possible de passer tous ces paramètres avec un Objet de type « DataColumn » dans l’entrée « Column ».

Il est possible de supprimer une colonne avec l’activité « Remove Data Column » en précisant son indice, son nom ou un objet DataColumn.

Pour trier une DataTable en fonction de la valeur d’une colonne il faut utiliser l’activité « Sort Data Table » en lui passant le nom, l’indice ou un objet DataColumn ainsi qu’un ordre (ascendant ou descendant).

Travailler sur les lignes

Lorsqu’on souhaite travailler sur les lignes, on utilisera l’Objet DataRow

Pour parcourir les lignes et effectuer une action avec les données de celle-ci (DataRow) le meilleur moyen est d’utiliser l’activité « For Each Row in Data Table ». À ne pas confondre avec l’activité « Fore Each » qui permet de parcourir un objet énumérable (Array, List, Dictionnary…).

Dans cet exemple, chaque ligne du tableau est parcourue et la colonne « Column1 » de la ligne est affichée.

On utilise la syntaxe DataRow(« nomColonne ») pour obtenir le contenu de la cellule, il est aussi possible d’obtenir le même résultat avec l’indice de la colonne ainsi DataRow(0).

Vous pouvez saisir une variable de type Int32 dans le champ « Index » pour obtenir l’indice de la ligne courante.

Pour ajouter une ligne dans une DataTable, on utilise l’activité « AddDataRow ».

Dans cet exemple on ajoute une ligne en passant un tableau en paramètre au champ ArrayRow.

Il est aussi possible de passer un Objet DataRow directement.

Vous pouvez supprimer une ligne dans une DataTable avec l’activité « Remove Data Row » en lui passant un Objet DataRow ou l’indice de la ligne.

Pour vider le contenu, on utilise l’activité « Clear Data Table » en passant la DataTable en paramètre.

Il existe plusieurs méthodes pour filtrer les lignes d’une DataTable. Il est possible d’utiliser une syntaxe proche du SQL avec la méthode DataTable.Select() ou utiliser l’activité « Filter Data Table ».

Donnée de travail

Dans cet exemple, on choisit de conserver les lignes du DataSet « dtTest », dont la valeur de la 2e cellule (indice 1 ou nom Column2) est supérieure à 4 ou égale à 16. Le résultat étant conservé dans la même DataTable il sera alors écrasé.

L’onglet « Colonnes de sortie » permet de spécifier quelles colonnes seront conservées dans le DataTable final.


 

Exemple avec la méthode DataTable.Select()

dtTest = dtTest.Select(« Column2 > 4 OR Column2 = 16 »).CopyToDataTable

Pour fusionner les lignes de deux DataTables, vous pouvez utiliser l’activité « Merge Data Table » en précisant la source et la destination, les lignes de la source seront ajoutées à la suite de celle de la destination.

Dans le cas où les schémas sont différents (colonne en plus ou en moins, colonnes avec le même nom, mais de type différent), il est possible de gérer le comportement de l’activité avec le sélecteur MissingSchemaAction.

Add (par défaut)

Si la colonne est manquante dans le DT de destination, elle sera ajoutée.

Si le type est différent, il y aura une erreur d’incompatibilité de type.

Ignore

Dans ce cas seul les Colonnes au nom et types identiques seront ajoutés et les types diffèrent convertis vers le format de destination. Si la colonne est manquante, les données seront initialisées à null.

Error

Identique à Add

AddWithKey

Si la DataTable a été initialisée avec des clefs primaires (depuis une base de données par exemple) le schéma sera complété avec les colonnes et clefs primaires nécessaires.

Au même titre que les tables d’une base de données relationnelles, il est possible de faire une jointure entre deux DataTable avec l’activité « Join Data Table ». L’activité prend deux tables en entrées et une table de destination. Il est possible de définir 3 types de jointures : Inner, Left et Join.

 

Inner

Ne sélectionne que les données communes entre la DataTable droite et gauche

Left

Toutes les données de la DataTable de gauche seront sélectionnées, si la correspondance n’existe pas dans la DataTable de droite, les informations manquantes seront vides.

Full

Sélectionne toutes les données des deux DataTable, si une donnée est manquante dans une des tables, la cellule sera vide.

L’activité « Remove Duplicated Row » permet de supprimer les doublons d’une DataTable.

Travailler sur les cellules

L’activité « Get Row Item » permet d’obtenir la valeur de la cellule d’une ligne. L’activité prend deux paramètres en entrée, la ligne qui sera un objet DataRow et l’indice ou le nom de la colonne.

Il sera souvent plus rapide d’utiliser une activité « Assign » avec la fonction :

dtTest.Rows(0)(« Column1 »)

L’activité « Update Row Item » permet de modifier la valeur de la cellule d’une ligne. Elle prend trois paramètres, la ligne à modifier sous la forme d’un objet DataRow, la colonne à modifier, qui peut être soit l’indice, soit le nom et la valeur à inscrire dans la cellule.

Comme pour l’acquisition de la valeur d’une cellule, il sera souvent plus pratique d’utiliser une activité Assigne avec à gauche : dtTest.Rows(0)(« Column1 ») et à droite la valeur à assigner.

L’activité « Lookup Data Table » permet de retourner l’indice de la ligne et la valeur de la cellule avec comme critère de recherche la valeur d’une autre colonne.

Exemple :

Résultat :

Poste = « Trésorier du CSE »

indiceLigne = 1

Afficher une DataTable

Il est possible d’avoir une sortie au format texte du contenu d’une DataTable avec l’activité « Output Data Table », l’activité prend une DataTable en entrée et une variable String en sortie.

Résultat :

Column1,Column2

Data 1,4

Data2,8

Data3,16