Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Autres
Autres Autres logiciels d'informatique décisionnelle, de statistiques, générateurs d’états ou outils infocentre : EpiInfo, FreeReport, FastReport, Hyperion, JPivot, QuickReport, Mondrian, ReportBuilder, Stata, Spad, Spss, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/02/2008, 03h36   #1
Membre chevronné
 
Avatar de Jester
 
Inscription : septembre 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 625
Points : 634
Points : 634
Par défaut [OLAP][Mondrian] Fait semi-multiplicatif

Je travaille actuellement sur des suites temporelles, plus précisément des valeurs boursières. Ce qui importe n'est pas leur valeur, mais leur évolution dans le temps.

A chaque jour de cotation, j'ai une variation qui est enregistrée (+3% par exemple, stocké sous la forme 1.03). Le cube est grosso modo le suivant (au format mondrian) :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
	<Cube name="Detail">
		<TABLE name="Value"/>
		<Dimension name="Date" foreignKey="date">
			<Hierarchy hasAll="true" allMemberName="Toutes dates" primaryKey="id">
				<TABLE name="Date"/>
				<Level name="Annee" COLUMN="year" uniqueMembers="true"/>
				<Level name="Trimestre" COLUMN="quarter" uniqueMembers="false"/>
				<Level name="Mois" COLUMN="month" uniqueMembers="false"/>
			</Hierarchy>
		</Dimension>
		<Dimension name="Type" foreignKey="valuableId">
			<Hierarchy hasAll="true" allMemberName="Toutes supports" primaryKey="id">	
				<TABLE name="Valuable"/>
				<Level name="Type" COLUMN="Type" uniqueMembers="true"/>
				<Level  name="Nom" COLUMN="name" uniqueMembers="true"/>
			</Hierarchy>
		</Dimension>
		<Measure name="VariationBrute" COLUMN="variation" aggregator="mul" formatString="##0.00%"/>
		<CalculatedMember name="Variation" dimension="Measures">
			<Formula>[Measures].[VariationBrute]-1</Formula>
			<CalculatedMemberProperty name="FORMAT_STRING" value="##0.00%"/>
		</CalculatedMember>
	</Cube>
Sur un intervalle temporel, la multiplication de l'ensemble des fait donne la variation sur la période. J'ai du modifier mondrian pour lui ajouter cette méthode d'agrégation.

Par contre sur la dimension type, je ne voudrais pas multiplier, mais faire une moyenne. Par exemple, comparer entre 2 types de supports, lequel est en moyenne plus intéressant. Bref la méthode d'agrégation est dépendante de la dimension sur laquelle on l'applique.

Une solution que je vois est de faire des table d'agrégations sur la dimension Type. En fait, de garder la propriété aggregator sur la dimension de cardinalité la plus grande et de précalculer tout sur les autres dimensions. Cette solution me semble quand même un peu limite car sémantiquement fausse pour mondrian (je lui dis qu'il faut multiplier mais dans les tables d'agrégation je faits des moyennes).

Vu le nombre de faits semi-additifs qu'on peut rencontrer, je me disais qu'une solution générale devait exister. Peut-être un concurrent à Mondrian si lui ne le gère pas?

Merci.
Jester est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2008, 01h30   #2
Membre chevronné
 
Avatar de Jester
 
Inscription : septembre 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 625
Points : 634
Points : 634
Citation:
Envoyé par Jester Voir le message
Une solution que je vois est de faire des table d'agrégations sur la dimension Type. En fait, de garder la propriété aggregator sur la dimension de cardinalité la plus grande et de précalculer tout sur les autres dimensions. Cette solution me semble quand même un peu limite car sémantiquement fausse pour mondrian (je lui dis qu'il faut multiplier mais dans les tables d'agrégation je faits des moyennes).
J'ai appliqué cette solution, mais en créant des agrégats sur les différents niveau temporels (donc agrégation par multiplication) en donnant à Mondrian la sémantique d'agrégation avg (valide pour les autres dimension). Ca marche très bien, sauf qu'il ne faut pas oublier le moindre niveau dans la hiérarchie.
Jester est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h32.


 
 
 
 
Partenaires

Hébergement Web