Skip to content

Gérer le croisement de données des questionnaires qui multiplie les lignes par sessions token #41

@JeanLouisLamezec

Description

@JeanLouisLamezec

🐞 Problème de déduplication des session_token lors de l’analyse croisée des catégories Distill

Contexte

Dans le cadre de l’exploration des résultats de Distill, des catégories automatiques sont apposées :

  • aux questions
  • et aux répondants via un identifiant session_token.

Le fichier généré suit la règle :

  • 1 ligne = 1 appairage session_tokencategory
  • donc plusieurs lignes possibles pour un même session_token (multi-catégorisation).

Problème

Lorsqu’on souhaite croiser ces catégories avec le reste du questionnaire, il faut joindre cette table au modèle principal.

➡️ Cette jointure multiplie les lignes par session_token, ce qui :

  • fausse les indicateurs existants
  • et change les agrégations selon le type de question.

Cas à traiter

1) Questions single_option

Actuel : on fait un count du nombre de lignes.
Problème : les doublons liés aux catégories gonflent artificiellement les comptes.

Attendu : dédupliquer sur session_token directement dans le script (ou via une clé d’unicité), pour compter le nombre réel de répondants.

Image

2) Questions multiple_option

Contrainte : il y a déjà plusieurs lignes par session_token (une par réponse).
➡️ Un distinct uniquement sur session_token ne fonctionne pas.

Solution : créer une clé d’unicité basée sur la combinaison :

  • (session_token, answer)

dans une nouvelle colonne : unicity_key_answer.

Image

Puis utiliser cette clé pour effectuer les distinct / agrégations correctement :

Image

3) Questions sorting_points

Problème spécifique : ne pas sur-pondérer les questions ayant plusieurs lignes dans le calcul de la somme par réponse.

Approche en 2 étapes :

  1. Réaliser un premier résumé (moyenne) de sorting_points par :

    • (unicity_key_answer, answer)
    • on ajoute answer uniquement pour le conserver au second résumé (sans changer l’agrégation)
  2. Réaliser un second résumé :

    • SUM du résultat précédent groupé par answer
    • puis tri décroissant

➡️ Cela permet de dédupliquer par session_token avant de sommer, et donc d’obtenir une somme “réelle” des points.

Image

Résultat attendu

  • Les statistiques restent stables et correctes même après jointure avec les catégories Distill.

  • Les agrégations sont adaptées selon le type de question :

    • single_option : distinct sur session_token
    • multiple_option : distinct sur (session_token, answer) via unicity_key_answer
    • sorting_points : agrégation en deux passes pour éviter la sur-pondération

Pistes d’implémentation

  • Ajouter / standardiser la colonne unicity_key_answer dans le modèle (ou en amont à l’import).

  • Adapter les scripts d’agrégation / indicateurs existants pour utiliser :

    • session_token distinct (single)
    • unicity_key_answer distinct (multiple + sorting)

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions