Précédent   Forum du club des développeurs et IT Pro > Logiciels > Solutions d'entreprise > Business Intelligence > Microsoft BI > SSAS
SSAS Forum d'entraide sur SQL Server Analysis Services (SSAS) et ses langages (MDX, DMX, XMLA). Avant de poster : FAQ Microsoft BI et Tutoriels Microsoft BI
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 08/01/2013, 19h12   #1
BoromSikim
Nouveau Membre du Club
 
Inscription : mars 2009
Messages : 85
Détails du profil
Informations personnelles :
Âge : 56

Informations forums :
Inscription : mars 2009
Messages : 85
Points : 30
Points : 30
Par défaut Problème de totalisation sur une hiérarchie.

Bonsoir ,

Je dispose de 3 tables de faits :
  • Ventes : Référence, Marque, Date, Quantité Vendue
  • Stocks : Référence, Marque, Date, Quantité en Stock
  • Référentiel : Référence, Marque, Date, Nb de mois de présence de la référence dans la société exprimé en nombre de mois. [Qt Mois Présence Ref] (Date-Date de création référence)

Dans un cube, j’ai :
  • Une Dimension type Time pour la date
  • Une Dimension pour les Marques et Références, organisées en hiérarchie Marque + Référence.

Quantités Vendues et En stock sont agrégées dans mon cube avec la fonction SUM().
[Qt Mois Présence Ref ] est agrégé dans mon cube avec la fonction MAX()

J’ai enfin deux mesures calculées :
  • Moyenne des ventes sur les 6 derniers mois
  • Quantité en stock Vivant
définies comme suit :

Code :
1
2
3
4
CREATE MEMBER CURRENTCUBE.[Measures].[Qt Moy Vte 6m]
 AS avg(LASTPERIODS(6, [Période].[Mois].currentmember),
[Measures].[Qt Vendues]), 
VISIBLE = 1;
Code :
1
2
3
4
5
6
CREATE MEMBER CURRENTCUBE.[MEASURES].[Qt Stock Vivant]
 AS case 
when [Measures].[Qt Mois Présence Ref] <= 6 then [Measures].[Qt Stock] 
when [Measures].[Qt Moy Vte 6m] <> 0 then [Measures].[Qt Stock] 
 else 0 end, 
VISIBLE = 1  ;
Lorsque je consulte les chiffres (avec Excel) :
  • Avec la REFERENCE en ligne, C’est OK. Ils correspondent bien à la base de données, et le calcul du stock vivant se fait bien. MAIS LA LIGNE TOTAL N’EST PAS JUSTE.
  • Avec la MARQUE en ligne, C’est KO. Tout le stock considéré comme Vivant.

Je me doute bien que cela a à voir avec le mode d’agrégation (ou quelque chose comme ca) de [Qt Mois Présence Ref] et/ou de la moyenne des ventes, mais je n’arrive pas à cerner le problème. (En fait, je ne suis un pur autodidacte occasionnel en techno BI.)

Si quelqu'un pouvait m’indiquer une piste de recherche.

Merci.
BoromSikim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 12h53   #2
Laurent C
Nouveau Membre du Club
 
Homme Laurent Couartou
Inscription : septembre 2012
Messages : 22
Détails du profil
Informations personnelles :
Nom : Homme Laurent Couartou
Localisation : France

Informations forums :
Inscription : septembre 2012
Messages : 22
Points : 30
Points : 30
Qu'est-ce qui n'est "pas juste" dans la ligne de total. As-tu un exemple, de résultat espéré?
Laurent C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 14h43   #3
BoromSikim
Nouveau Membre du Club
 
Inscription : mars 2009
Messages : 85
Détails du profil
Informations personnelles :
Âge : 56

Informations forums :
Inscription : mars 2009
Messages : 85
Points : 30
Points : 30
Bonjour et merci de ton intérêt.

Un Exemple:
R1, R2, R3 sont 3 références. Total Cube=Le total édité par le cube, Tot Att, le total attendu.


Qt Mois Présence R1->51 R2->62 R3->31 Total Cube->62 Tot Att->62
Qt Stock R1->2 R2->3 R3->6 Total Cube->11 Tot Att->11
Qt Moy Vte 6m R1->1,3 R2->0 R3->1 Total Cube->1,6 Tot Att->1,6
Qt Stock Vivant R1->2 R2->0 R3->6 Total Cube->11 Tot Att->8


Je voudrais que le total stock vivant soit de 8 au lieu de 11.

Je me doute bien que le calcul de la mesure STOCK VIVANT s'effectue au niveau Marque avec 62, 11, 1,6 et donc le résultat du calcul donne 11.

Il faudrait que le calcul décrit s'effectue bien au niveau d'une référence, mais pas aux niveaux supérieurs. Dans ce cas il faut que la mesure prenne la somme des niveaux inférieurs.
BoromSikim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2013, 17h42   #4
d.joubert
Membre confirmé
 
Homme David Joubert
Consultant en Business Intelligence
Inscription : novembre 2010
Messages : 121
Détails du profil
Informations personnelles :
Nom : Homme David Joubert
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : novembre 2010
Messages : 121
Points : 200
Points : 200
Si tu mets un truc comme ça, ça donne quoi ?

Code :
1
2
3
4
5
6
7
8
9
10
11
Scope 
  ( 
     [MEASURES].[Qt Stock Vivant],
     [marque].Members 
  ) ;   
 
    This = Sum(
[MEASURES].[Qt Stock Vivant],
[marque].currentmember.children) ;   
 
  End Scope ;
d.joubert est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2013, 20h08   #5
Laurent C
Nouveau Membre du Club
 
Homme Laurent Couartou
Inscription : septembre 2012
Messages : 22
Détails du profil
Informations personnelles :
Nom : Homme Laurent Couartou
Localisation : France

Informations forums :
Inscription : septembre 2012
Messages : 22
Points : 30
Points : 30
Effectivement, [Measures].[Qt Moy Vte 6m] <> 0 va être évalué au niveau de la marque, et pas de chaque référence, et sera donc toujours vrai.

Comme le note David, l'utilisation de la fonction SUM semble indiquée.

J'aurais plutôt pensé à quelque chose comme cela:

CREATE MEMBER CURRENTCUBE.[MEASURES].[Qt Stock Vivant]
AS
SUM(
EXISTING LEAVES( [Référentiel])
, CASE WHEN ... END
)
Laurent C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2013, 14h07   #6
BoromSikim
Nouveau Membre du Club
 
Inscription : mars 2009
Messages : 85
Détails du profil
Informations personnelles :
Âge : 56

Informations forums :
Inscription : mars 2009
Messages : 85
Points : 30
Points : 30
Bonjour,

Merci à vous deux de vos avis.

J'ai perdu 2 jours sur ces problèmes de scope, mais n'ai pas réussi.

J'ai traité le problème par SQL. Cela limite les possibilités d'analyse de la donnée, mais tant pis.

Encore Merci.
BoromSikim est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 17h38.


 
 
 
 
Partenaires

Hébergement Web