Bonjour à tous,
derrière ce titre un peu abscons, voici mon problème mieux détaillé.
Je souhaite intégrer des données de recensement dans une table de fait, avec une modélisation en étoile (probablement en flocon d'ailleurs).
Un de mes nombreux questionnements (je suis assez débutant dans le domaine, même si ça fait un moment que je me penche sur la question) provient d'une de mes dimensions : l'âge. EN effet, dans les données de recensement que j'ai, pour un territoire donnée, j'ai la répartition par âge et par sexe. Mais les répartitions par âge sont de 3 types :*détaillées (par exemple par tranche de 5 ans d'écart), moyennes (par tranches de 12 ans) et larges (en gros moins de 20, 20-64, 65 et plus). Malheureusement, ces 3 types ne se recroisent pas, leurs bornes n'étant jamais les mêmes (je n'ai pas une tranche d'âge moyenne ou détaillée qui se termine sur la borne 64, alors que c'est la borne de mon 20-64).
Si j'intègre dans ma table de fait la population en tranche d'âge détaillée, moyenne et large, lorsque je vais lui demander de me donner la population totale, ça va me triple compter la population, on est d'accord ?
Je me suis dit qu'il fallait peut être alors faire 3 dimensions pour mes 3 classifications, mais là encore, en cas de regroupement, ça triple comptera…
Est-ce que dans ce genre de cas, la bonne méthode consiste à avoir 3 tables de faits (et donc 3 cubes) différents ?
Et j'élargis ma question, dans le même esprit, mon fichier initial de recensement de population qui traite, par territoire, de l'âge des personnes, de leur sexe, et de leur métier, est partielle. C'est à dire que pour mon âge détaillé, je n'ai pas la répartition par sexe.
Pour mon âge moyenne et large, j'ai la répartition par sexe.
Pour le métier, j'ai le sexe mais pas l'âge.
Comment modéliser tout ça ? Là encore, au début, j'avais mis toutes les données en table de fait, et ajouté les dimensions aux valeurs qui les avaient et mis null là où j'avais pas (par exemple, j'avais une valeur de population avec une clé de territoire, une clé de métier, une clé de sexe, mais une clé d'âge NULL).
Mais je me rends compte que lors j'analyse mes données ensuite (je travaille en open source, sur un modèle Postgresql - pentaho - saiku analytics) avec saiku, les populations pour un territoire ne sont pas bonnes puisqu'il fait des comptes en trop du fait de ces différentes dimensions qui ne se recoupent pas dans ma table de fait.
Là je fonctionne pour l'instant sans cube précalculé, j'en suis juste à l'étape de design, donc j'ai créé ma base, importé des données test et partielles (j'ai limité à un certain nombre de territoire par exemple) et je les consulte/analyse avec Saiku. Mais je maitrise encore assez mal la notion de cubes d'ailleurs et je me demande si, à partir de ma base telle est qu'elle est là (avec ses doublons), je peux définir plusieurs cubes (un cube avec la dimension age détaillée, un avec l'age moyennement détaillé et le sexe, et un avec uniquement les métiers) qui viendraient donc résoudre mon problème, ou ce n'est pas la bonne chose à faire et qu'il faut 1 cube = 1 table de fait.
Je bloque donc un peu sur la méthode à suivre, si quelqu'un pouvait m'éclairer ce serait super ! Merci beaucoup.
Partager