Partage
  • Partager sur Facebook
  • Partager sur Twitter

Copier/extrapoler des données annuellement

Inventaires tous les x ans, j'ai besoin d'avoir des données annuelles

    8 décembre 2018 à 12:43:23

    Bien le bonjour à toutes et tous :-D

    J'ai des données d'inventaires forestiers, chaque année une parcelle est inventoriée, mais la même parcelle n'est inventoriée que toutes les x années (variable). Ma table ressemble à ceci :

    bdd

    De ceci, on peut extraire les années d'inventaire de chaque parcelle :

    À présent, pour une analyse statistique, j'ai besoin de données annuelles pour l'ensemble des parcelles. Il me faut donc "remplir" les années vides entre deux inventaires en prenant les données de l'inventaire précédent :

    Ceci me permettra de faire des graphiques d'évolution du nombre d'arbres, etc.

    Mon souci est de trouver un moyen de "remplir" les années vides entre deux inventaires automatiquement, car j'ai des millions (oui, vraiment) de données et si je le fais à la main, je serai sec avant d'avoir terminé.

    Si vous avez des pistes pour arriver à un résultat - ou au contraire me dire que c'est impossible - je vous remercie mille fois par avance !

    Belle journée

    -
    Edité par romainbh 8 décembre 2018 à 12:45:22

    • Partager sur Facebook
    • Partager sur Twitter
    Si tes résultats ne sont pas à la hauteur de tes espérances, dis-toi qu'un jour le Grand Chêne a aussi été un gland.
      9 décembre 2018 à 11:49:58

      Bonjour,

      Je dirais que si tu n'as pas de données pour certaines années, ce n'est pas grave ...

      Pour faire tes graphiques, tu peux tout à fait gérer "les trous" à l'affichage ... ce n'est pas à la base de données de faire cette gestion.

      Il te faut juste disposer de la liste des années possibles du côté du code qui va gérer l'affichage, et dans une boucle faire un test "si l'année de la boucle n'est pas disponible alors on affiche la dernière valeur précédente disponible".

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        9 décembre 2018 à 12:48:24

        Bonjour,

        Comme Benzouye, je dirais que tu as déjà toutes les données nécessaires pour ton étude sans avoir besoin de modifier la quantité d'info dans la table.

        Soit, comme proposé ci-dessus tu gères les années vides "à l'affichage", ce qui sera le moins consommateur de ressources.

        Soit, si tu tiens à récupérer une réponse sql pour chaque année, tu peux faire une requête SQL par année en combinant MAX() et WHERE :

        Par exemple, si tu veux les données de 2001 pour la forêt A (dernier inventaire en 2000) tu fais :

        "SELECT forêt, données, MAX(an_inventaire) FROM table WHERE an_inventaire <= 2001"

        Ca te renverra la ligne de l'année 2000.

        Si tu tiens absolument à remplir ta base de données avec des valeurs pour chaque année, tu n'as qu'à combiner cette commande, une boucle et un insert into pour remplir une nouvelle table qui sera exhaustive. Mais je ne pense pas que ça soit utile en l'état.

        A noter qu'à mon avis il te sera peut-être utile un jour de séparer dans deux champs distincts le nombre d'arbre et leur essence : au lieu d'avoir "45 sapins" (un champ pour deux informations) tu devrais avoir "45" et "sapins"(deux champs pour deux informations).

        Mais ce n'est pas l'objet de la question ;) 

        • Partager sur Facebook
        • Partager sur Twitter
          9 décembre 2018 à 19:55:48

          Bonjour et grand merci pour vos deux réponses !

          Effectivement, pour les graphiques par parcelle, ce ne serait pas tant un problème. Mais mon analyse se porte sur la globalité des parcelles (une courbe par type d'arbre) et j'ai donc besoin d'avoir un aperçu global (toutes les parcelles), de faire une sorte de "mise en commun" de toutes mes données, ceci par année.

          C'est là que le bât blesse car mes inventaires ont été réalisés un peu aléatoirement sur différentes parcelles et différentes années. Du coup, les trous sans données entre deux inventaires sont comptés comme une absence d'arbres alors qu'en fait ils sont bien là. Si c'est pas totalement clair comme explications, je peux vous fournir un extrait de ma BDD.

          Du coup la proposition de Carabosse (merci pour l'exemple de requête) va bien m'aider, je vais de ce pas aller voir comment créer une boucle.

          Et je vous rassure, mes données de nombre d'arbres et types d'arbres sont bien séparées dans ma table ;-)

          Encore mille mercis pour votre super aide à un gros débutant en bases de données.

          • Partager sur Facebook
          • Partager sur Twitter
          Si tes résultats ne sont pas à la hauteur de tes espérances, dis-toi qu'un jour le Grand Chêne a aussi été un gland.
            10 décembre 2018 à 12:44:17

            Je dirais surtout, et ça ne va pas t'aider, que tu devrais utiliser un logiciel de statistiques (R,SAS,SPSS,etc..) avec lequel tu te connecteras à la base de donneés (il le font tous).
            • Partager sur Facebook
            • Partager sur Twitter
              6 janvier 2019 à 19:30:04

              Salut,

              Merci encore pour votre aide. J'ai un peu creusé du côté des logiciels de stats mais le même souci se posait, à savoir comment faire pour "boucher" les trous entre les années d'inventaire.

              J'ai pu résoudre mon souci avec plusieurs requêtes que voici résumées :

              • Lister toutes les années d'inventaire pour chaque périmètre forestier
              • Créer une liste avec les années min (1896) et max (2019), puis compléter (1897, 1898...2018, 2019)
              • Joindre les deux listes précédentes par année
              • De ça, j'ai pu extraire la liste des années sans inventaire pour chaque périmètre
              • Jointure entre cette liste "sans inventaire" avec la liste des données d'inventaire avec périmètre = périmètre et année <= année d'inventaire. Mais les années pile entre deux années d'inventaire sont jointes à double
              • Suppression du doublon qui a pris les données de l'inventaire le plus ancien
              • Union des listes "avec année d'inventaire" et "sans inventaire". C'est pile ce que je voulais ! Chaque année a donc des données, soit car c'est une année d'inventaire soit avec des données extrapolées.

              J'ai réalisé le truc avec le logiciel Tableau Prep, visuellement c'est super facile à comprendre et pas besoin de taper de code (car pour l'instant je suis pas tant doué en code, mais ça vient gentiment).

              Encore merci et à+!

              • Partager sur Facebook
              • Partager sur Twitter
              Si tes résultats ne sont pas à la hauteur de tes espérances, dis-toi qu'un jour le Grand Chêne a aussi été un gland.

              Copier/extrapoler des données annuellement

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown