wecitizens / electoral-gps-frontend

The Single App Electoral GPS for the municipal
0 stars 1 forks source link

Export of data #63

Closed JPPinon closed 5 years ago

JPPinon commented 6 years ago

@danielsum Peux-tu produire un tableau avec les réponses des candidats (càd inscrit à une des 5 élections, avec ID 16 à 20)?

danielsum commented 6 years ago

Pour l’instant on peut voir les infos comme ça :

https://api.wecitizens.be/v1/vote/election/2018_be_municipal/district/be_1030.json

http://api.wecitizens.be/v1/gps/answer/segment/2018_be_municipal_be_1030_candidate.json

http://www.jsoneditoronline.org

=> Je suis occupé toute la journée malheureusement avec plusieurs sites à mettre en ligne et donc finaliser.

Bonne journée,

Dan

Le 3 octobre 2018 à 11:48:13, JPPinon (notifications@github.com) a écrit:

@danielsum https://github.com/danielsum Peux-tu produire un tableau avec les réponses des candidats?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/wecitizens/electoral-gps-frontend/issues/63, or mute the thread https://github.com/notifications/unsubscribe-auth/AByDMddE61Lx2fEkll_XKGxEVIcJCzVzks5uhIfcgaJpZM4XFqXC .

olivier5741 commented 6 years ago
SELECT 
    p.id AS participant_id,
    CONCAT(p.name, ' ', p.surname) AS participant_name,
    (CASE
        WHEN p.is_party_local = 1 THEN 'electoral_list'
        WHEN p.is_party_local = 0 THEN 'candidate'
    END) AS participant_type,
    party.abbr AS in_electoral_list,
    localite_menu.postcodes_principal AS district_postcode,
    localite_menu.municipality_fr AS district_name_fr,
    a.opinion_id AS question_id,
    (CASE
        WHEN a.opinion_answer = '1' THEN 'fully_agree'
        WHEN a.opinion_answer = '2' THEN 'agree'
        WHEN a.opinion_answer = '3' THEN 'no_opinion'
        WHEN a.opinion_answer = '4' THEN 'disagree'
        WHEN a.opinion_answer = '5' THEN 'fully_disagree'
        ELSE 'no_opinion'
    END) AS answer,
    e.questionnaire AS survey_completed,
    a.opinion_total_sent AS question_sent_total,
    a.opinion_total_received AS question_answered_total,
    a.opinion_received AS answer_received
FROM
    politician_election e
        JOIN
    politician p ON p.id = e.id_politician
        LEFT JOIN
    party party ON party.id = e.roll
        JOIN
    election ON election.id = e.id_election
        LEFT JOIN
    localite_menu ON localite_menu.id_gps = election.id_gps
        LEFT JOIN
    opinions_answers a ON a.id_politician = e.id_politician
WHERE
    a.id_politician != 5439
        AND e.id_election >= 16
        AND a.opinion_answer IN ('1' , '2', '3', '4', '5')
        AND party.abbr <> 'Other party'
olivier5741 commented 6 years ago

Results too big ... 2 millions line

Need to append the following to create file on db but access denied. @danielsum, an idea ?

INTO OUTFILE '/tmp/mytable.csv'
FIELDS TERMINATED BY ','
    OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n';
olivier5741 commented 6 years ago

Impossible d'uploader sur drive. Quelqu'un doit vérifier que les données sont exactes (par rapport au profil sur directory) https://we.tl/t-GHmH4ijlgy

JPPinon commented 6 years ago

@olivier5741 Je suppose que ce que tu appelles "participant" est un candidat à une des cinq élections courantes. Il semble y avoir des problèmes avec cette extraction de données:

JPPinon commented 6 years ago

En analysant l'extraction de la base de données, faite par Daniel le 6/10, http://wecitizens.be/stats.php
je m'aperçois d'un problème. Les champs PolDir "opinion-answers" > [opinion_received] : je ne trouve pas de valeur > à 1/10/2018 [total_received] ne fonctionne plus correctement, et ne semble pas reflèter le nombre total de questions répondues par le politicien. C'est la raison pour laquelle ce champ est blanc ou nul pour tous les politiciens de la nouvelle génération (après la mise en prod du nouveau PolDir en juillet dernier). Pour repérer les politiciens ayant répondu à des questions il faut soit créer un nouveau champ (où on note le total réel des réponses reçues), soit forcer une mise à jour de [total_received]. Faisable maintenant?

Pour l'instant je ne vois pas où je peux vérifier l'activité (le nombre de réponses reçues.

olivier5741 commented 6 years ago
SELECT DISTINCT
    a.id_politician AS partipant_id,
    concat(p.surname, ' ', p.name) as participant_name,
    'candidate' AS segment_type,
    a.opinion_id AS question_id,
    (CASE
    WHEN a.opinion_answer = '1' THEN 'strongly_agree'
    WHEN a.opinion_answer = '2' THEN 'agree'
    WHEN a.opinion_answer = '3' THEN 'no_opinion'
    WHEN a.opinion_answer = '4' THEN 'disagree'
    WHEN a.opinion_answer = '5' THEN 'strongly_disagree'
    ELSE 'wrong'
    END) AS answer
FROM
    opinions_answers a
        INNER JOIN
    politician p ON p.id = a.id_politician
        INNER JOIN
    politician_election e ON e.id_politician = a.id_politician 
WHERE
    a.id_politician != 5439 # Jean-Paul
    AND a.opinion_answer in ('1','2','3','4','5')
    AND a.opinion_id in ('4','14','20','21','22','23','31','38','46','49','52','58','84','88','89','90','93','95','96','97','98','99','100','101','102','103','104','105','106','107','108','110','112','113','114','115','116','117','118','119','120','121','123','124','125')
    AND p.personal_gender in ('m','f', 'i')
    ORDER BY opinion_received DESC

file available at Content > participant_answers.csv

JPPinon commented 6 years ago

@danielsum : Merci à Olivier pour l'export du tableau des réponses, par candidat. Il nous intéresserait de faire une analyse par parti, et par commune et en fonction du poste occupé par le candidat. Il nous faudrait donc un tableau plus complet, en étant conscient que cela demande de croiser plusieurs tables MySQL. Possible?