#1 Thu 18 March 2021 11:05
- Bouhuiii
- Juste Inscrit !
- Date d'inscription: 4 Jun 2015
- Messages: 3
SQL aide méthodologie pour récupérer une information
Je vous souhaite le bonjour !
J'ai un problème de méthodologie sur PostgreSQL 9.4 ou 11 (apparemment j'aime doublonner l'information).
J'ai récupéré les données sur l'open data des permis de construire et à partir de la description des travaux, je dois en tirer des informations.
Et c'est la première fois que je tente ce genre d'exploitation et je ne sais pas vers quoi me renseigner en fait. Mon objectif premier serait de récupérer le nombre de logement pour le moment.
Prenons un exemple fictif d'un permis de construire dans un monde idéal: "Construction de 3 immeubles (36 logements créées) et changement de destination d'un local d'activité en logement (3 logements créées)"
Il y a alors 39 nouveaux logements et en utilisant PostgreSQL et mes connaissances actuelles, je ne vois pas comment arriver à extraire cette information.
Et ce que j'aimerais, ce sont des pistes de recherches, un bout d'idée, de concept, d'approche car je ne sais pas quoi taper sur google. Je pensais utiliser substr(), position(), une fonction pour valider si c'est un chiffre qui est extrait, mais c'est très flou dans ma tête et je me dis qu'il existe peut-être quelque chose de plus simple pour sélectionner un mot avant un autre.
Je vous remercie grandement par avance car je sens que je peux tourner en rond un long moment sur le sujet!!!
Hors ligne
#2 Thu 18 March 2021 11:38
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1549
Re: SQL aide méthodologie pour récupérer une information
Bonjour
Houla, de la recherche d'information dans un texte non structuré: bon courage !
Ca peut devenir super complexe. Ca va dépendre de ce que vous rencontrez dans la description des permis.
Dans le cas que vous donnez, vous pouvez utiliser des expressions régulières, qui sont très puissantes pour parser un texte.
Ici, ca serait "chercher dans un texte tous les nombres présents avant le mot "logement" et en faire la somme.
Par exemple (mais bon je suis nul en regexp, alors je vous conseille un bon tuto là-dessus):
On chercher par regexp les nombres présents avant le mot 'logement'
on extrait ce nombre du tableau de résultat (nbre[1]), on le cast en int et on fait la somme par id de permis.
Code:
with permis as ( select 1 as id, 'Construction de 3 immeubles (36 logements créés) et changement de destination d''un local d''activité en logement (3 logements créées)' as val UNION ALL select 2 as id, '(12 logements créés) et changement de destination commerce en logement (1 logement créé)' as val ), nbre_logement as ( select id, regexp_matches(val, '([0-9]+) logement', 'gi') as nbre from permis ) select id, sum(nbre[1]::int) as sum_logements from nbre_logement group by id; id sum_logements 1 39 2 13
A raffiner ensuite en fonction des différentes facons qui expriment le nbre de logements dans le texte du permis.
Nicolas
Hors ligne
#3 Thu 18 March 2021 11:56
- Bouhuiii
- Juste Inscrit !
- Date d'inscription: 4 Jun 2015
- Messages: 3
Re: SQL aide méthodologie pour récupérer une information
Les expressions régulières alors! Merci
Mais je sais que j'ai vais rencontrer beaucoup de problème car chaque instructeur a sa façon d'écrire ... parfois assez personnelle. Mais qui ne tente rien ! et ça va être une belle découverte tout ça je sens car j'y connais rien en regexp
Et encore merci
Marie
Hors ligne