# QUESTIONS de marc sur l'extraction rp pour famille # Inconsistance des libellés de commune Base observée : jdbc:postgresql://clodicldb01.ad.insee.intra:1983/ci_pg_odic_cl01 ```sql! select distinct codedepartement||codecommune as "codedepartement||codecommune" , cloc, rim.cpostloc from reponseinternetmenages rim codedepartement||codecommune='59143' ``` codedepartement||codecommune|cloc |cpostloc| ----------------------------+-----------------------------------------------------------+--------+ 59143 |(INDIQUEZ AU PREALABLE LE CODE POSTAL) |59930 | 59143 |(INDIQUEZ AU PRÉALABLE LE CODE POSTAL) |59299 | 59143 |59 - NORD |59930 | 59143 |59143-59930 |59930 | 59143 |59930 | | 59143 |59930 |59930 | 59143 |59930 |La ch | 59143 |59930 LA CHAPELLE D'ARMENTIERES |59930 | 59143 |59930 - LA CHAPELLE D ARMENTIE |59930 | 59143 |59930 - LA CHAPELLE D ARMENTIERES |59930 | 59143 |HOUPLINES |59116 | 59143 |HOUPLINES 59116 |59116 | 59143 |LA CHA¨PELLE D' ARMENTIERES |59930 | 59143 |LA GORGUE |59253 | 59143 |LA-CHAPELLE-D'ARMENTIÈRES |59930 | 59143 |LACHAPELLE D ARMENTIERES |59930 | 59143 |LILLE |59000 | 59143 |LILLE |59930 | 59143 |MARCQ-EN-BARŒUL |59930 | 59143 |NIEPPE |59850 | 59143 |PPAT.BOIDINLA CHAPELLE-D'ARMENTIERES |59930 | 59143 |RUE MILLE |59930 | 59143 |WEZ-MACQUART |59930 | ==> On voit que pour une commune codedepartement||codecommune='59143' on récupère plein de libellés commube différents (le code postal n'est pas demandé pour l'extraction). **Dois-on les garder tels quel?** <font color='#28ABE3' weight=bold> RÉPONSE: je ne comprends pas comment ça se passe car La chapelle d'Armentières a son code postal 59930 et son code commune 59143 donc ça colle mais Houplines a son code postal 59116 et son code commune 59317 donc pourquoi tu le récupères dans ton extraction ? et pour moi, il faut bien extraire le code postal car on en aura besoin pour la relance courrier postal : on va creuser </font> # Nombre de colonnes prévues Base observée : jdbc:postgresql://clodicldb01.ad.insee.intra:1983/ci_pg_odic_cl01 - Max nombre d'enfant pour un parent : 12 ```sql! select individurelie , count(*) as nb from lienindividus l where l.lienenregistre = 3 group by individurelie order by count(*) desc ``` - Nombre MAX d'adultes du même sexe par rim : 19 ** ```sql! select feuillelogement,sexe,count(*) from bulletinindividuels b where anai::int <=2004 and tableauabcd ='A' group by feuillelogement ,sexe order by count(*) desc ``` Dans le format CSV de sortie on me demande de donner, pour chaque RIM considéré (logement avec au moins un H ou F majeur appartenant à une commune ciblée) une ligne avec - Infos du logement - Liste des prénoms des personnes enquêtées (H/F majeurs). - Pour chaque personne enquêtée, des infos sur son conjoints et ses enfants (prénom, sexe, année de naissance). Avec une colonne par donnée. Ca me fait donc à minima : 19*12*3 (+ des colonnes pour le conjointe, l'adresse...) colonnes au fichiers CSV produit pour la suite du traitement. **Est-ce acceptable?? Sinon doit on prévoir un nombre maximum d'enfants par personne enquêtée? Et dans ce cas quel est la règle pour les choisir?** <font color='#28ABE3' weight=bold> RÉPONSE: on va se limiter à 10 personnes de meme sexe par logement, les 10 premiers qui sont trouvés dans la table RIM et à 12 enfants par personnes, les 12 premiers qui sont trouvés dans la table RIM </font> # Incohérence conjoints Base observée : jdbc:postgresql://clodicldb01.ad.insee.intra:1983/ci_pg_odic_cl01 ```sql! select distinct l.idlienindividu , individu , b1.nom , b1.prenom , b1.anai , individurelie , b2.nom, b2.prenom , b2.anai , lienenregistre , b1.feuillelogement, b2.feuillelogement from lienindividus l left join bulletinindividuels b1 on l.individu = b1.id left join bulletinindividuels b2 on l.individurelie = b2.id where lienenregistre in (1) and b1.feuillelogement =47974913 and b2.feuillelogement =47974913 and b1.tableauabcd ='A' and b2.tableauabcd ='A' ``` On voit un cas où A est conjoint de B B est conjoint de A (le mirroir semble normal) C est conjoint de A (pas de relation mirroir) ```sql! select distinct l.idlienindividu , individu , b1.nom , b1.prenom , b1.anai , individurelie , b2.nom, b2.prenom , b2.anai , lienenregistre , b1.feuillelogement, b2.feuillelogement from lienindividus l left join bulletinindividuels b1 on l.individu = b1.id left join bulletinindividuels b2 on l.individurelie = b2.id where lienenregistre in (1) and b1.feuillelogement =31720713 and b2.feuillelogement =31720713 and b1.tableauabcd ='A' and b2.tableauabcd ='A' ``` Cas où : A est le conjoint de B B est le conjoint de A,C,D,E,F Sachant que le format CSV indiqué ne prévoit qu'un seul conjoint comment traiter les cas où - On a plusieurs conjoint ? - On a une relation A->B mais pas B-> ? <font color='#28ABE3' weight=bold> RÉPONSE: il faut bien un seul conjoint : dans le 1er exemple, on garde A et B conjoints mais on considère que C est seul sans conjoint s'il n'y a pas de lien miroir. Il faut conserver uniquement les cas où il y a bien le lien miroir. Dans le 2e exemple, pareil : on garde A et B conjoints mais on considère que C est seul, sans conjoint car c'est une erreur, il ne peut pas avoir 4 conjoints </font> # Incohérences table lienindividus ```sql! select distinct l.idlienindividu , individu , b1.nom , b1.prenom , b1.anai , individurelie , b2.nom, b2.prenom , b2.anai , lienenregistre , b1.feuillelogement, b2.feuillelogement from lienindividus l left join bulletinindividuels b1 on l.individu = b1.id left join bulletinindividuels b2 on l.individurelie = b2.id where lienenregistre in (1,2,3) and ( --Famille 'normale' : enfant individu --> parent individurelie idlien=2 ( b1.feuillelogement =29378060 and b2.feuillelogement =29378060 ) or --Famille 'inverse' ( b1.feuillelogement =41829290 and b2.feuillelogement =41829290 ) ) and b1.tableauabcd ='A' and b2.tableauabcd ='A' order by b1.feuillelogement, lienenregistre, individu ``` Famille 29378060 : A né en 1990 référence B comme conjoint (lienenregistre=1) B référence A comme conjoint (lienenregistre=1) A et B référencent C et D (nés en 2017 et 2018 ) comme enfant (lienenregistre==2) C et D référencent a et B comme parents (lienenregistre=3) Famille 41829290 : A né en 1991 référence B né en 1949 comme enfant (lienenregistre=2) B né en 1949 référence A né en 1991 comme parent (lienenregistre=3) (idem pour toute la fraterie) - **Quel est le bon sens de la relation dans la table lienindividus ? (individu,individurelie, lienenregistre)** - **Que faire de cas où une personne référence plus que 2 parents?** <font color='#28ABE3' weight=bold> RÉPONSE: la table Lienindidus contient une ligne par lien. <br>Si Michel est le père de pierre, on a 2 lignes <br> id_ind de michel, id_indrelie=id_ind de Pierre et lienenregistre = 2 (père). <br>id_ind de Pierre, id_indrelie=id_ind de michel et lienenregistre = 3 (fils) <br><br> tu as beaucoup de cas où une personne référence plus de 2 parents ? Si oui, il faudrait éventuellement prévoir un contrôle sur l'âge (écart année naissance du parent et de l'enfant au moins 15 ans). Si non, prends les 2 premiers que tu rencontres dans la table </font> <BR><BR> <font color='#CC8B66' weight=bold> DEMANDE DE PRECISION: ```sql! select cnt,count(*) from ( select l.individurelie ,count(*) as cnt from lienindividus l where l.lienenregistre = 2 group by l.individurelie order by count(*) desc) v group by cnt order by cnt desc ``` BASE qfhomereldb02 | Nombre parents référencés | count(*) | | -------- | -------- | | 1|33429| | 2|42858| | 3| 244| | 4| 53| | 5| 14| | 6| 2| BASE clodicldb01 | Nombre parents référencés | count(*) | | -------- | -------- | 8| 1| 7| 7| 6| 31| 5| 102| 4| 435| 3| 3213| 2|1418858| 1| 752254| <br><br> Règles métier à valider : 1 - Ne garder que les liens où on a le miroir (on ignore les autres). 2 - Quand une personne a plus de deux parents, je garde les 2 premiers que je trouve. 3 - Pas de vérification de cohérence sur l'age des parents Pour mon logement '41829290' (base clone odic) qui semble incorrect. Edith référence 7 personnes comme parent (lien 3). Edith est référencée par 9 personnes comme étant leur enfant (lien 2). ==> Je discard les 2 liens sans mirroir (marie et alice) Edith aura 2 parents au hasard parmis les 7 possibles. Elle n'aura pas d'enfant Elodie (adulte) n'aura pas de parent ni d'enfant mais fera bien partie des personnes interrogées. individu | prenom | anai | individurelie | prenom | anai | lienenregistre | | -------- | -------- | -------- | -------- | -------- | -------- | -------- | 41884153|Tristan|1991| 41884149|Edith |1949| 2| 41884158|Daniel |1992| 41884149|Edith |1949| 2| 41884169|Laurent|1993| 41884149|Edith |1949| 2| 41884180|Elodie |1992| 41884149|Edith |1949| 2| 41884194|Déborah|1995| 41884149|Edith |1949| 2| 41884217|Adrien |1996| 41884149|Edith |1949| 2| 41884234|Samuel |2001| 41884149|Edith |1949| 2| 41884149|Edith |1949| 41884234|Samuel |2001| 3| 41884149|Edith |1949| 41884217|Adrien |1996| 3| 41884149|Edith |1949| 41884194|Déborah|1995| 3| 41884149|Edith |1949| 41884180|Elodie |1992| 3| 41884149|Edith |1949| 41884169|Laurent|1993| 3| 41884149|Edith |1949| 41884153|Tristan|1991| 3| 41884149|Edith |1949| 41884150|Marie |1990| 3| 41884149|Edith |1949| 41884158|Daniel |1992| 3| 41884149|Edith |1949| 41884251|Alice |2001| 3| 41884150|Marie |1990| 41884149|Edith |1949| 3| 41884251|Alice |2001| 41884149|Edith |1949| 3| </font> <font color='#28ABE3' weight=bold> REPONSE merci de tes extractions. Je valide les 3 règles que tu proposes. Je suis ok avec les conséquences dans l'exemple. (Entre nous, cet exemple est vraiment faux car Edith née en 1949 ne peut être ni la fille ni la mère de Samuel né en 2001) mais ces cas restent relativement marginaux. </font> # Collocataires J'ai identifié des cas où nous avons des RIM avec uniquement des collocataires. Ex: 3 collocataires femmes majeures dans une commune femme ==> Une seule ligne dans le fichier CSV résultat avec aucun conjoint et aucun enfant. Est-ce le fonctionnement attendu? <font color='#28ABE3' weight=bold> RÉPONSE: oui c'est le fonctionnement attendu : 3 colocataires sans enfant, sans parent, cela fait 3 individus donc 3 lignes à interroger </font> <BR> <font color='#CC8B66' weight=bold> DEMANDE DE PRECISION: Au niveau de l'identifiant issu de la table internaute que je dois extraire, il est lié à la table reponseinternetmenages et pas aux individus. Du coup on n'en a qu'un par logement. Dans le cas des collocataires comment le renseigner ? Ca semblerait bizzare de mettre le même à tous les collocataires. </font> <font color='#28ABE3' weight=bold> RÉPONSE: comme dans le RP, on met bien le même identifiant aux 3 colocataires de même sexe : chacune va se connecter au site de collecte Enquête Familles avec le même identifiant (identifiant logement) et renseigner son questionnaire individuel </font> # Ordre des personnes il existe une sous population avec un ordre spécifique : les parents => il faut qu'ils soient classés du plus vieux au plus jeune. Il faut donc faire attention aux variables qui s'y rapportent (sexe, prénom, année naissance et donc à quel enquêté cela se rapporte). => Cela est il conservé? <font color='#28ABE3' weight=bold> RÉPONSE: oui il faut conserver ça </font> # Calcul des majeurs Règle donnée : Majeur : annee ear - anai >= 18 En francais ça donne : Pour une extraction lancée en 2022 toutes les personnes dont le champ anai dans la table bulletinindividuels est <= 2004 sont considérées comme majeurs. **Exemple pour une extraction lancée le 1er février 2022** - Une personne née le 10 janvier 2005 ==> Mineure - Une personne née le 10 janvier 2004 ==> Majeure (age au jour de l'extraction : 18 ans) - Une personne née le 10 février 2004 ==> Majeure (age au jour de l'extraction : 17 ans et 11 mois) **Est-ce le fonctionnement attendu?** <font color='#28ABE3' weight=bold> RÉPONSE: non il ne faut pas prendre l'âge au moment de l'extraction mais bien la règle donnée : par exemple, pour le test 2023, on interroge tous ceux nés avant le 1er janvier 2005. </font> Notes perso : RIM Intéressantes Familles avec plusieurs couples 41458099 38701078