# Nettoyer ses données avec OpenRefine (niveau1)

Aurélien Moisan

► To cite this version:

Aurélien Moisan. Nettoyer ses données avec OpenRefine (niveau1). Printemps de la Donnée 2024, May 2024, Paris, France. 10.5281/zenodo.11263006. hal-04684340

HAL Id: hal-04684340

https://hal.inrae.fr/hal-04684340v1

Submitted on 2 Sep 2024

HAL is a multi-disciplinary open access
archive for the deposit and dissemination of sci-
entific research documents, whether they are pub-
lished or not. The documents may come from
teaching and research institutions in France or
abroad, or from public or private research centers.

L'archive ouverte pluridisciplinaire HAL, est
destinée au dépôt et à la diffusion de documents
scientifiques de niveau recherche, publiés ou non,
émanant des établissements d'enseignement et de
recherche français ou étrangers, des laboratoires
publics ou privés.

<figure><img src="image_1.png" /></figure>

Distributed under a Creative Commons Attribution 4.0 International License
# NETTOYER SES DONNÉES AVEC OPENREFINE (NIVEAU 1)

AURÉLIEN MOISAN

21 MAI 2024

<figure><img src="image_2.png" /></figure>

LabRADoR
LAB DE RESSOURCES ET D'ACCOMPAGNEMENT
AUX DONNÉES DE LA RECHERCHE
SORBONNE UNIVERSITÉ

<figure><img src="image_3.png" /></figure>

SORBONNE
UNIVERSITÉ

BIBLIOTHÈQUE
UNIVERSITAIRE

<figure><img src="image_4.png" /></figure>
<figure><img src="image_5.png" /></figure>

# Sommaire

1. INTRODUCTION

2. INSTALLATION ET DÉCOUVERTE DE L'INTERFACE

3. FILTRES, FACETTES ET TRI

4. NETTOYER LES DONNÉES : LES FONCTIONS BASIQUES

5. INTRODUCTION À L'ÉDITEUR DE FORMULES GREL
SORBONNE
UNIVERSITÉ

BIBLIOTHÈQUE
UNIVERSITAIRE

# 1
INTRODUCTION
# OpenRefine
Qu'est-ce que c'est ?

<figure><img src="image_6.png" /></figure>

OpenRefine

OpenRefine est un outil gratuit et open source qui permet de nettoyer, transformer, convertir, enrichir des données.
# OpenRefine permet de :

Nettoyer un jeu de données

<figure><img src="image_7.png" /></figure>

Convertir un jeu de données

<figure><img src="image_8.png" /></figure>

Transformer un jeu de données

<figure><img src="image_9.png" /></figure>

Enrichir un jeu de données

<figure><img src="image_10.png" /></figure>

Exposer des données sur Wikidata

<figure><img src="image_11.png" /></figure>
# OpenRefine

## Ses atouts

* Il permet de modifier des données en masse (grâce à des traitements appliqués par colonnes)

* Il permet de définir un ensemble de données sur lequel appliquer un traitement grâce à des filtres et des facettes

* Ses formules pré-enregistrées et ses extensions permettent d'effectuer des traitements simples sans maitriser de langage de programmation

* Il enregistre l'ensemble des traitements réalisés, pour que vous puissiez les reproduire à l'identique sur un autre jeu de données

* Sa grande communauté d'utilisateurs

Il est parfois présenté dans comme « un excel sous stéoroïde » mais ...
# ... ce n'est pas un tableur

OpenRefine ne permet pas :

- de visualiser les données sous forme graphique

- le travail collaboratif

Il n'est pas optimisé pour :

- saisir des données

- réaliser des calculs

≠

<figure><img src="image_12.png" /></figure>

<figure><img src="image_13.png" /></figure>

<figure><img src="image_14.png" /></figure>
# Historique de l'outil

<figure><img src="image_15.png" /></figure>
SORBONNE
UNIVERSITÉ

BIBLIOTHÈQUE
UNIVERSITAIRE

1

INSTALLATION ET DÉCOUVERTE DE L'INTERFACE
# Installation et exécution

Lien de téléchargement : https://openrefine.org/download

- Dézippez l'archive et stockez le dossier dans le répertoire de votre choix.

- Il n'y a rien à installer, il faut simplement lancer le fichier exécutable. Ensuite :

- Le programme s'ouvre dans une fenêtre, elle doit restée ouverte. Sinon l'interface ne répondra plus.

- L'interface s'ouvre dans votre navigateur par défaut. OpenRefine se sert juste de votre navigateur pour afficher son interface. **C'est une application locale** rien n'est en ligne, vos données sont uniquement stockées sur votre ordinateur.

<figure><img src="image_16.png" /></figure>

<figure><img src="image_17.png" /></figure>

- Pour fermer l'outil il faut fermer l'onglet dans le navigateur, ainsi que le programme
# Paramétrage

Si vous souhaitez modifier les paramètres d'OpenRefine, ouvrez le fichier `openrefine.l4j.ini` avec un éditeur de texte (notepad, gedit etc..); Pour :

* Augmenter la mémoire allouée à OpenRefine, modifiez la ligne :

```
# max memory memory heap size
-Xmx1024M
```

* Changer le répertoire de travail, ajoutez une ligne :

```
-Drefine.data_dir=Chemin absolu du repertoire
```

<figure><img src="image_18.png" /></figure>

<figure><img src="image_19.png" /></figure>

**Attention** : ces modifications peuvent entrainer un dysfonctionnement de l'outil. Si vous n'êtes pas sûr de vous, effectuez une copie du fichier de paramétrage initial avant toute modification pour pouvoir le restaurer en cas d'erreur.
# Interface

## Gérer ses projets

<figure><img src="image_20.png" /></figure>
# Interface

## Créer un projet à partir de cet ordinateur

Le plus souvent le format de fichier est détecté automatiquement par OpenRefine.

- Pour l'import d'un tableau type .xlsx ou .ods > peu de paramétrage

- Pour l'import d'un fichier avec séparateur (.tsv, .csv..) > sélectionner le séparateur, le format des caractères (l'encodage) (ex ci-dessous)

- Pour les fichiers à balises (xml, json) > sélectionner la balise racine que l'on souhaite importer (ci-contre)

Par défaut la pré-visualisation se met à jour automatiquement

Cliquer sur le premier élément XML correspondant à la première entrée à charger.

<figure><img src="image_21.png" /></figure>

Considérer les données

### Considérer les données comme

Fichiers CSV / TSV / séparateur

Fichiers texte à base de lignes

Fichiers texte à largeur de champ fixe

PC-Axis text files

Fichiers JSON

Fichiers MARC

Fichiers JSON-LD

Fichiers RDF/N3

Format des caractères

US-ASCII

Les colonnes sont séparées par

○ une virgule (CSV)

◎ une tabulation (TSV)

○ personnalisé \t

☑ Utiliser le caractère "\" pour fermer les cellules contenant les séparateurs de colonnes

☐ Supprimer les espaces de début et de fin

Protéger les caractères spéciaux avec \t

☐ Ignorer la ou les 0 première(s) ligne(s) du début du fichier

◎ Analyser la ou les 1 ligne(s) suivante(s) comme des entêtes de colonnes

○ Noms de colonnes (séparés par des virgules)

☐ Ignorer la ou les 0 première(s) ligne(s) de données

☐ Charger au plus 0 première(s) ligne(s) de données

Mettre à jour l'aperçu

☐ Désactiver l'aperçu automatique

☐ Analyser le texte des cellules comme nombres

☑ Conserver les lignes vides

☑ Enregistrer les cellules vides comme des valeurs nulles

☐ Indiquer la source du fichier

☐ stocker le fichier d'archive
# Interface
Le menu

<figure><img src="image_22.png" /></figure>

## Exporter

Permet d'afficher les différents formats d'export.

Archive de projet OpenRefine permet d'exporter la totalité de votre projet (données + historique des traitements) pour le réimporter dans une autre instance OpenRefine

Lorsqu'on a créé ou ouvert un projet, un menu en haut à droite apparait

<figure><img src="image_23.png" /></figure>

## Ouvrir

Permet d'ouvrir un nouvel onglet pour ouvrir un projet en parallèle. C'est notamment utile lorsque l'on souhaite importer une colonne à partir d'un autre projet (voir **diapo**)

Ouvrir...

Exporter

Aide

<figure><img src="image_24.png" /></figure>

## Aide

Renvoi vers la documentation complète de l'outil.

Notez que la communauté OpenRefine est très active, vous pourrez donc également trouver de l'aide sur des forums
## Defaire / Refaire

C'est l'historique des traitements effectués. Vous pouvez naviguer dans cet historique pour annuler ou réappliquer des traitements.

Vous pouvez également extraire les traitements effectués pour les appliquer à un autre jeu de données. A l'inverse vous pouvez appliquer des traitements réalisés sur un autre jeu (voir **diapo**)

## Facette / Filtre

Dans cet onglet vous pourrez paramétrer et supprimer vos facettes/filtres.

# Interface
## L'espace de travail

### lignes / entrées

Un affichage « lignes » numérote chaque ligne et considère les lignes indépendamment les unes des autres.

Un affichage « entrée » se base sur la première colonne (l'identifiant unique) pour définir des « entrées » qui peuvent contenir plusieurs lignes (exemple ci-dessous).

### Navigation dans les entrées

Vous avez la possibilité de paramétrer le nombre de résultats affichés et de naviguer dans les différentes pages.

Notez qu'OpenRefine est un outil pour effectuer des traitements en masse sur la totalité de vos entrées, vous n'avez donc pas besoin de toutes les voir. Pour vérifier si vos traitements ont bien fonctionné, vous pouvez utiliser les facettes pour afficher la liste des valeurs d'un champ

<figure><img src="image_25.png" /></figure>
SORBONNE
UNIVERSITÉ

BIBLIOTHÈQUES
UNIVERSITaires

2

FILTRES, FACETTES ET TRI
# Les filtres
## Comment les utiliser ?

* Cliquez sur la colonne sur laquelle vous souhaitez appliquer un filtre > Filtrer le texte

<figure><img src="image_26.png" /></figure>

* Votre filtre apparaît dans l'onglet « Facette / Filtre », saisissez la valeur souhaitée, le filtre s'applique en temps réel

* Pour supprimez votre filtre cliquez sur la croix

<figure><img src="image_27.png" /></figure>

<figure><img src="image_28.png" /></figure>

Le filtre cherche la chaîne de caractère exacte ! Faites attention notamment quand vous filtrez avec des chiffres
# Les filtres
Dans quel cas les utiliser ?

* Définir une plage: dans OpenRefine on applique des traitements en masse. Parfois on souhaite simplement traiter un sous-ensemble

* Explorer les données : bien que ce ne soit pas la fonction première d'OpenRefine, un filtre peu permette de savoir si une valeur est présente dans un champ ou non

* Filtrer des valeurs inconnues : Il est possible de construire un filtre à partir de REGEX (expression régulière). Par exemple le filtre «^01» sur un champ numéro de téléphone permettra de filtrer tous les numéros commençant pas l'indicateur « 01 ». Ce qui serait trop fastidieux à partir d'une facette (exemple ci contre)

<figure><img src="image_29.png" /></figure>

Ici un filtre sur le champ « Code postal » qui permet d'afficher les codes postaux commençant par 75, 91, 92 ou 93

* Cochez « **expression rationnelle** » si vous utilisez des opérateurs **booléens** ou des REGEX

* Pour utiliser l'opérateur **booléens OR**, il faut utiliser sa version informatique | (AltGr + 6)

* ^ est la REGEX utilisée pour « commence par »

<table><thead><tr><th>ncienne région</th><th>Adresse</th><th>Code postal</th></tr></thead><tbody><tr><td>-France</td><td>12 AVENUE LÉONARD DE VINCI</td><td>92916</td></tr><tr><td>-France</td><td>21 rue d'Assas</td><td>75270</td></tr><tr><td>-France</td><td>11 AVENUE DU TREMBLAY</td><td>75012</td></tr><tr><td>-France</td><td>254 boulevard Raspail</td><td>75014</td></tr><tr><td>-France</td><td>14 RUE BONAPARTE</td><td>75006</td></tr><tr><td>-France</td><td>31 RUE D ULM</td><td>75240</td></tr><tr><td>-France</td><td>34 quai d'Austerlitz</td><td>75013</td></tr></tbody></table>
# Les facette
Comment les utiliser ?

<figure><img src="image_30.png" /></figure>

Facette

<figure><img src="image_31.png" /></figure>

Facette textuelle

Facette numérique

Facette chronologique

Facette de nuage de
points...

Facette textuelle
personnalisée...

Facette numérique
personnalisée...

Facettes personnalisées

<figure><img src="image_32.png" /></figure>

Facette par mot

Facette doublons

Facette logarithmique

Facette logarithmique de limite 1

Facette longueur du texte

Facette logarithmique de longueur du texte

Facette sur le code de caractère Unicode

Facette par erreur

Facette par valeur nulle

Facette par chaîne vide

Facette par valeur vide (valeurs nulles ou chaîne vide)

* Cliquez sur la colonne sur laquelle vous souhaitez appliquer une facette > Facette > Sélectionnez le type de facette

* Les facettes fonctionnent avec les types de valeur. Par exemple pour appliquer une facette chronologique il faut un champ de type « date » (pour modifier le type d'un champ voir **diapo**)

* Une fois la facette appliquée, elle s'affiche dans l'onglet « Facette /Filtre ». Vous pouvez alors sélectionner la ou les valeur(s) à filtrer

* Les facettes peuvent lister les valeurs de votre colonne (ex: facette textuelle à gauche) ou être booléennes (facette doublons à droite)

<figure><img src="image_33.png" /></figure>

<figure><img src="image_34.png" /></figure>
# Les facettes

## Dans quel cas les utiliser ?

<figure><img src="image_35.png" /></figure>

<figure><img src="image_36.png" /></figure>

* Définir une plage: dans OpenRefine on applique des traitements en masse. Parfois on souhaite simplement traiter un sous-ensemble ;

* Explorer les données : une facette permet d'afficher toutes les valeurs d'un champ. Ainsi, on peut facilement identifier si des valeurs ne sont pas normées (facette textuelle; exemple bas), s'il y a des doublons (facette doublons; exemple haut), des valeurs erronées..

* Modifier des valeurs : Vous pouvez éditer les facettes textuelles, pour corriger des coquilles ou fusionner des valeurs. Cela permet de modifier l'ensemble des enregistrements correspondants à la valeur d'un seul coup ;

* Clusteriser : La fonction « cluster » (« grouper » en français), permet d'identifier des valeurs similaires grâce à des algorithmes basés sur les chaines de caractères. Cela pourra être utilisé pour normaliser les valeurs d'un champ. (voir **diapo**)

<figure><img src="image_37.png" /></figure>
# Le tri
## Comment l'utiliser ?

<figure><img src="image_38.png" /></figure>

* Cliquez sur la colonne sur laquelle vous souhaitez appliquer un tri > Trier > Sélectionnez le type de tri

* Les tris fonctionnent avec les types de valeur. Par exemple pour appliquer un tri « nombre » il faut un champ de type « nombre » (pour modifier le type d'un champ voir **diapo**)

* Une fois le tri effectué, un bouton « Trier », apparaît à côté du nombre de résultats par page. Il permet de modifier ou supprimer un tri

* Si vous appliquez plusieurs tris, ils s'appliqueront dans l'ordre

* Par défaut un tri est temporaire, vous pouvez le supprimer. Mais vous pouvez l'appliquer de manière permanente, cela entrainera une renumérotation de vos lignes et vous ne pourrez plus le supprimer

<figure><img src="image_39.png" /></figure>
# Le tri

# Dans quel cas l'utiliser ?

Au delà de la réorganisation des valeurs, le tri est surtout utilisé pour appliquer les deux traitements suivants :

* **Vider des valeurs répétées dans des cellules consécutives** : sur un champ trié, cette fonction permet de conserver uniquement la première occurrence d'une valeur et de supprimer toutes les autres. Ce qui est utile pour supprimer des doublons (exemple ci-contre) ou réorganiser son tableau

* **Recopier les valeurs dans les cellules vides consécutives** : si une valeur d'une entrée est attribuée à plusieurs lignes, vous pouvez la dupliquer sur chaque ligne de l'entrée

Après avoir effectué un tri alphabétique permanent sur la colonne *identifiant_interne* (voir *diapo* précédente) :

* j'applique une « facette doublons » pour afficher les doublons

* je vide les valeurs répétées dans les cellules consécutives. Ce qui me permet de supprimer les valeurs en doublons.

Ensuite je n'ai plus qu'à supprimer les lignes (voir *diapo*) dont la valeur est nulle pour supprimer mes lignes en double.

1

<figure><img src="image_40.png" /></figure>

2

<figure><img src="image_41.png" /></figure>

3

<figure><img src="image_42.png" /></figure>

4

<figure><img src="image_43.png" /></figure>
3

NETTOYER LES DONNÉES : LES FONCTIONS BASIQUES
# Editer les cellules
## La modification simple

Lorsque vous survolez une cellule avec votre souris, un bouton « edit » apparaît. Il vous permet de modifier la valeur, ou d'« Appliquer la modification à toutes les cellules identiques ». Cela modifiera toutes les cellules qui ont la même valeur.

<table><tr><td>et commerciales</td></tr><tr><td>École supérieure</td></tr></table>

<figure><img src="image_44.png" /></figure>

« Appliquer la modification à toutes les cellules identiques » ne s'appliquera que sur la plage sélectionnée. Aussi, pensez bien à supprimer vos facettes et vos filtres si vous souhaitez appliquer la modification à l'ensemble de votre projet.
# Editer les cellules

## Marquer des entrées

Dans la colonne « Toutes », au début de chaque ligne, vous pourrez marquer vos entrées avec des étoiles ou des drapeaux. Il s'agit de repères (par exemple en vue d'une suppression). Vous pourrez ensuite afficher les entrées marquées avec des facettes dédiées accessibles dans la colonnes « Toutes » : Facette > Facette par étoile / Facette par marque

<table><thead><tr><th>Toutes</th><th>identifiant_interne</th><th>Libellé</th></tr></thead><tbody><tr><td>1.</td><td>5YWUA</td><td>École supérieure des sciences économiques et commer</td></tr><tr><td>2.</td><td>0347i</td><td>École supérieure d'ingénieries des travaux de la constru</td></tr><tr><td>3.</td><td>yIVkq</td><td>École supérie</td></tr></tbody></table>

<table><thead><tr><th>Toutes</th><th>identifiant_interne</th><th>Libellé</th><th>Libellé</th></tr></thead><tbody><tr><td>Transformer...</td><td></td><td>École supérieure des sciences économiques et</td><td>École</td></tr><tr><td>Modifier toutes les colonnes</td><td></td><td></td><td></td></tr><tr><td>Facette</td><td></td><td>Facette par étoile</td><td></td></tr><tr><td>Éditer les lignes</td><td></td><td>Facette par marque</td><td></td></tr></tbody></table>

<table><tr><td><input type="checkbox" checked disabled> Lignes étoilées</td><td>changer inverser réinitialiser</td></tr><tr><td colspan="2">2 choix Trier par: nom compte</td></tr><tr><td>false</td><td>249 include</td></tr><tr><td>true</td><td>1 exclude</td></tr><tr><td colspan="2">Facette par nombre de choix</td></tr></table>
# Editer les cellules

## Les transformations courantes

* **Supprimer les espaces de début et de fin / rassembler les espaces consécutifs:** Ces fonctions permettent de supprimer les espaces indésirables. Quand vous manipulez des données, que vous fusionnez des cellules, il n'est pas rare que des espaces indésirables s'invitent dans vos cellules. Dans l'idéal effectuez « rassembler » puis « supprimer » les espaces avant de commencer à manipuler les données. Faites-le également après avoir terminé de manipuler vos données.

<figure><img src="image_45.png" /></figure>

* **En nombre / En date / En texte:** Ces fonctions permettent de modifier le type des données. Elles sont notamment utiles si vous souhaitez utiliser des facettes ou des tris spécifiques à un type de données (ex : facette TimeLine). Attention la conversion ne fait pas tout, la valeur initiale devra déjà correspondre à un formalise particulier (format de date, pas d'espace dans les nombres..).

* **En valeur nulle:** Permet de supprimer les données concernées. Cela s'applique à la plage de données sélectionnées. Si aucun filtre ou aucune facette n'est sélectionné l'ensemble des valeurs de la colonne est supprimé.

Ces modifications peuvent être appliquées à plusieurs colonnes si elles sont effectuées à partir de la colonne « Toutes » (voir **diapo**)
# Editer les cellules
## Remplacer

Cette fonctionnalité permet de remplacer une chaîne de caractères par une autre.

Notez qu'elle fonctionne avec n'importe quel caractère y compris les espaces.

Vous avez la possibilité de remplacer des caractères par une valeur nulle, ce qui aura pour effet de supprimer le caractère ou la chaîne de caractères sélectionnée.

Vous pouvez élégamment utiliser des REGEX pour identifier des chaînes de caractères à remplacer (exemple ci-contre)

Ici un exemple avec une REGEX pour remplacer les 0 en début de ligne par +33 pour modifier les numéros de téléphone en ajoutant l'indicatif français +33

<figure><img src="image_46.png" /></figure>

<figure><img src="image_47.png" /></figure>
# Editer les cellules

## Grouper et éditer (clusteriser)

Grouper et éditer permet d'identifier des valeurs similaires qui ne seraient pas orthographiées de la même manière. Cette fonctionnalité est très utile pour normaliser les valeurs d'un champ. Il existe différents algorithmes qui permettent d'identifier des doublons potentiels.

Cette fonctionnalité est aussi accessible via les facettes (voir **diapo**)

<figure><img src="image_48.png" /></figure>
# Editer les cellules / Transposer
Les cellules multivaluées

* **Joindre les cellules multivaluées** : Pour une même entrée, lorsqu'un champ a plusieurs valeurs sur plusieurs lignes, cette fonction permet de regrouper les valeurs avec un séparateur sur une seule ligne.

* **Diviser les cellules multivaluées** : Sur la base d'un séparateur, vous créez autant de lignes que de valeurs présentes dans votre cellule initiale.

* **Transposer les cellules de plusieurs colonnes en ligne** : permet de regrouper des cellules de plusieurs colonnes dans une seule colonne avec des cellules multivaluées.

* **Transposer les cellules en colonne séparée** : Pour une même entrée, lorsqu'un champ a plusieurs valeurs sur plusieurs lignes, cette fonction permet de transposer les valeurs dans des colonnes. Attention vous devrez définir en amont le nombre de colonne, il faut que chaque entrée ait le même nombre de valeurs, ou connaitre l'entrée qui a le nombre de valeur le plus élevé.

* **Convertir en liste des colonne de clé/valeur** : Permet de créer des colonnes sur la base d'une liste de valeurs d'un champ, et d'alimenter ces colonnes avec la valeur d'un autre champ
# Les modifications groupées sur l'ensemble des colonnes

La colonne « Toutes » permet de travailler sur l'ensemble des colonnes

* **Modifier toutes les colonnes** : faire des transformations courantes (voir diapo) sur plusieurs colonnes

* **Editer les lignes** :

* Marquer / Etoiler : permet d'ajouter / de supprimer des étoiles ou des drapeaux pour la sélection

* Supprimer les lignes correspondantes : permet de supprimer la sélection

* **Facettes** :

* Par étoile / par marque : permet d'afficher les entrées marquées (voir ci-dessus et diapo)

* Par valeur vide : permet d'afficher les lignes entièrement vides

* Valeurs / Entrées vides/non vides par colonne : permet d'afficher une facette avec chaque nom de colonne, qui affichera les cellules / entrées vides pour chaque colonne.

* **Editer les colonnes** :

* Retrier / Supprimer : permet de réordonner ou supprimer des colonnes

* Recopier / vider les valeurs dans les cellules consécutives (voir diapo)
# Editer les colonnes

## Renommer, supprimer, déplacer des colonnes

* **Renommer cette colonne** : permet de renommer la colonne concernée. Notez que contrairement à un tableur, vous ne pouvez pas nommer deux colonnes de la même manière. Si vous avez prévu d'utiliser des formules, utilisez un nommage simple et explicite.

* **Supprimer cette colonne**

* **Déplacer la colonne...** : permet modifier la position d'une colonne. Notez qu'il est plus simple d'utiliser la colonne « Toutes » pour travailler sur la réorganisation et la suppression des colonnes (voir **diapo**)

* **Ajouter un colonne ?** OpenRefine ne permet pas d'ajouter de nouvelles colonnes vierges. Vous pouvez le faire de manière détournée en utilisant la fonctionnalité « Ajouter une colonne en fonction de cette colonne » sur une colonne lambda et en remplaçant « value » par des doubles guillemets.
# Editer les colonnes

## Joindre et diviser des colonnes

* **Diviser en plusieurs colonnes** : Vous pouvez diviser votre colonne sur la base d'un séparateur ou d'une longueur. Notez que contrairement à un tableur classique :

* Vous pouvez utiliser un séparateur de plusieurs caractères, ou basé sur une expression régulière.

* La division créer de nouvelles colonnes, elle ne remplace pas les valeurs dans des colonnes déjà existantes

* **Joindre de colonnes** : permet de fusionner plusieurs colonnes sur la base d'un ordre et d'un séparateur. Vous pouvez ou non prendre en compte les valeurs nulles, et ajouter le résultat dans la colonne active ou dans une nouvelle colonne. Pour des jonctions plus complexes vous pouvez aussi utiliser une formule (voir **diapo**)
# Extraire et appliquer des traitements

* Vous avez la possibilité d'extraire les traitements réalisés au format JSON. Ne seront extraits que les traitements de masse (ex : si vous faites de l'édition simple sur une cellule cela n'apparaitra pas dans le fichier JSON)

* Pour cela rendez-vous dans votre historique (Défaire/Refaire) et cliquez sur « Extraire »

<figure><img src="image_49.png" /></figure>

* Vous pouvez sélectionner les traitements à exporter

<figure><img src="image_50.png" /></figure>

* Vous pourrez ensuite réappliquer ces traitements sur un tableau qui a une structure similaire en collant le JSON dans « Appliquer »
4

# INTRODUCTION A L'ÉDITEUR DE FORMULE GREL
# Les formules dans OpenRefine

OpenRefine fonctionne avec un langage qui lui est propre, le GREL « Google/General Refine Expression Language ».

Pour les cas les plus complexes il est possible d'utiliser Jython ou Clojure.

Notez que les fonctionnalités de base sont en grande partie disponibles via les menus « Editer les cellules » et « Editer les colonnes »

Pour accéder à l'éditeur de formules GREL :

* **Editer les cellules > Transformer** : permet d'appliquer des modifications en masse dans la colonne sélectionnée

* **Editer la colonne > Ajouter une colonne en fonction de cette colonne** : permet d'appliquer les modifications en masse dans une nouvelle colonne, ainsi la colonne sélectionnée n'est pas modifiée
# L'éditeur de formule GREL
## Interface

**Historique:** Historique des formules utilisées au cours du projet. Un bouton « Réutiliser » permet de copier la formule dans l'interface de saisie. L'Etoile permet d'identifier des formules « favorites »

<figure><img src="image_51.png" /></figure>

SORBONNE
UNIVERSITÉ

BIBLIOTHÈQUE
UNIVERSITAIRE

### Interface de saisie :

Interface de saisie de la formule. On vous indique en bout de ligne si la syntaxe est correcte ou non

**L'aperçu:** A gauche il s'agit du contenu actuel de la colonne, et droite du contenu une fois la formule appliquée

<figure><img src="image_52.png" /></figure>

<figure><img src="image_53.png" /></figure>

<figure><img src="image_54.png" /></figure>

**Etoilée:** Permet d'accéder à vos formules favorites
# Quelques notions de bases

## La concaténation

L'une des fonctions de base pour les chaines de caractères est la concaténation. Pour cela vous articulez vos « value » initiales avec d'autres chaines de caractères grâce à des « + » :

"valeur à ajouter"+value

Exemple :

"https://idref.fr/"+value

Pour générer une URL à partir d'un identifiant IDREF. Il faut ajouter« https://idref.fr/ » devant l'identifiant.

"https://idref.fr/"+value

Pas d'erreur de syntaxe.

<figure><img src="image_55.png" /></figure>
# Quelques notions de bases

## Remplacer le contenu d'une cellule par une cellule d'une autre colonne

Cette formule permet de transférer les valeurs d'une colonne dans une autre colonne

`cells["colonne à transférer").value`

Exemple :

`cells["test_ID").value`

Si on applique cette formule sur une colonne, le contenu de chaque cellule de cette colonne sera remplacé par le contenu de la cellule de la colonne "test_ID"

### Transformation textuelle personnalisée sur la colonne Adresse

Expression

Langue

General Refine Expression Language (GREL)

value+, "+cells["Commune").value+, "+cells["Code postal").value

Pas d'erreur de syntaxe.

<table><thead><tr><th>Aperçu</th><th>Historique</th><th>Étoilée</th><th>Aide</th></tr></thead><tbody><tr><td><strong>row value</strong></td><td></td><td></td><td></td></tr><tr><td>1. AVENUE BERNARD HIRSCH</td><td></td><td></td><td>value+, "+cells["Commune").va ...</td></tr><tr><td>2. 6 rue Marconi</td><td></td><td>6 rue Marconi, Metz, 57070</td><td>AVENUE BERNARD HIRSCH, Cergy, 95021</td></tr><tr><td>3. 12 AVENUE LÉONARD DE VINCI</td><td></td><td></td><td>12 AVENUE LÉONARD DE VINCI, Courbevoie, 92916</td></tr><tr><td>4. 43 boulevard du 11 Novembre 1918</td><td></td><td></td><td>43 boulevard du 11 Novembre 1918, Villeurbanne, 69622</td></tr></tbody></table>

En cas d'erreur

● conserver l'original

☐ Retransformer

10

fois maximum, tant que les données changent

○ vider la cellule

Un second exemple où l'on reconstitute une cellule à partir de cellules existantes. Ici on reconstitute une adresse postale complète en ajoutant le contenu de la colonne "Commune" puis de la colonne "Code postal" à la colonne "Adresse" initiale. Le tout séparé par des virgules

`value+`, `"+cells["Commune").value+`, `"+cells["Code postal").value`
# Quelques notions de bases
Extraire une partie d'une
cellule (REGEX)

OpenRefine vous permet d'extraire une chaine de caractère d'une cellule avec la formule `value.find()`. Pour cela vous devez connaitre la structure de la chaine de caractères à exporter et l'indiquer via une expression régulière. Notez que dans une formule vous devez mettre les REGEX entre slash (`/`). Par défaut les résultats de cette formule sont stockés dans une liste, vous pouvez convertir ce résultat en chaine de caractères en ajoutant `.toString()` à la fin de votre formule

`value.find(/REGEX de la chaine de caractère à extraire/).toString()`

Exemple :

`value.find(/\d{5}/).toString()`

Ici un exemple pour récupérer les suites de 5 chiffres dans un champ « Adresse complète ». Ce qui permet de récupérer les codes postaux.

* `\d` est la REGEX pour les chiffres

* `\d{5}` signifie 5 chiffres successifs

<figure><img src="image_56.png" /></figure>
# Quelques notions de bases

## Le croisement de colonnes

OpenRefine vous permet d'importer des colonnes d'un autre projet OpenRefine sur la base d'une valeur pivot grâce à la fonction « cross » avec la formule suivante :

`cell-cross("Nom du projet duquel on souhaite importer la colonne", "colonne pivot").cells["colonne à importer").value[0]`

Exemple :

`cell-cross("Test_ID_OpenRefine", "hal").cells["File_HAL").value[0]`

`cell-cross("Test_ID_OpenRefine", "hal").cells["File_HAL").value[0]`

Pas d'erreur de syntaxe.

<table><thead><tr><th>Aperçu</th><th>Historique</th><th>Étoilée</th><th>Aide</th></tr></thead><tbody><tr><td>row value</td><td colspan="3">cell-cross("Test_ID_OpenRefine ...")</td></tr><tr><td>1.</td><td>https://hal-essec.archives-ouvertes.fr/</td><td>458</td><td></td></tr><tr><td>4.</td><td>https://hal-univ-lyon1.archives-ouvertes.fr/</td><td>83382</td><td></td></tr></tbody></table>
# De la documentation complète sur GREL

* Sur le site d'OpenRefine : https://openrefine.org/docs/manual/greflfunctions

* Mathieu Saby – Mémo : Programmer dans Openrefine avec GREL, 2019 : https://fr.slideshare.net/27point7/programmer-dans-openrefine-avec-grel

* Les tutoriels vidéo du Réseau Bases de Données : https://www.canal-u.tv/chaines/rbdd/tes-premiers-pas-avec-openrefine-0

* Lancez-vous, testez, recherchez des solutions sur des forums !
Nous Contacter

<figure><img src="image_57.png" /></figure>

SORBONNE
UNIVERSITÉ

BIBLIOTHÈQUE
UNIVERSITAIRE

<figure><img src="image_58.png" /></figure>

LabRADoR

LAB DE RESSOURCES ET D'ACCOMPAGNEMENT
AUX DONNÉES DE LA RECHERCHE
SORBONNE UNIVERSITÉ

labrador@sorbonne-universite.fr
MERCI

Cellule données et humanités numériques
labrador@sorbonne-universite.fr

<figure><img src="image_59.png" /></figure>

SORBONNE
UNIVERSITÉ

BIBLIOTHÈQUE

UNIVERSITAIRE

<figure><img src="image_60.png" /></figure>

Sauf mention contraire, cette présentation est mise
à disposition selon les termes de la Licence
Creative Commons Attribution 2.0 France.

Icônes : freepik