Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Business Objects > Webi
Webi Forum d'entraide Webi (client léger)
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 21/03/2008, 11h13   #1
Invité régulier
 
Inscription : juin 2006
Messages : 55
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 55
Points : 7
Points : 7
Par défaut [BO 6.5] calcul d'une variation dans BO

bonjour,

j'ai une requete BO 6.5 avec 3 objets (2 dimensions, 1 indicateur) , j'ai en résultat un tableau croisé :

200711 200712 Variation
toto1 13945 17870
toto2 253439 355295
toto3 1225 2335

Dans la derniere colonne je voudrais faire un calcul de variation entre les valeurs des 2 mois pour chaque "toto". Comment faire sous BO ?? Webi ? (6.5)

Merci !!
boutte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2008, 11h46   #2
Invité régulier
 
Inscription : juin 2006
Messages : 55
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 55
Points : 7
Points : 7
Par défaut précision

je précise :

Dans mon rapport il n'y a toujours que 2 mois cependant ces 2 mois sont variables car réponse à une invite.

Dans la colonne "Varioation" que j'ai créée je voudrais donc voir ces résultats :
3925 (=17870 - 13945)
101856 (=355295 - 253439)
1110 (=2335 - 1225)

Quelle serait la définition d'une telle varible ?
Merci de votre aide !!
boutte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2008, 13h23   #3
Membre régulier
 
Inscription : juillet 2005
Messages : 175
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 175
Points : 80
Points : 80
Bonjour,

est-ce qu'une variable de type indicateur =<Mois2>-<Mois1> ne répond pas à ton besoin ?
dcollart est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2008, 13h46   #4
Invité régulier
 
Inscription : juin 2006
Messages : 55
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 55
Points : 7
Points : 7
qu'entends tu par <Mois1> et <Mois2> ?

je n'ai qu'un seul indicateur dans ma requete : <Ventes> et j'ai 2 dimensions <Client> et <Mois>.
<Client> vaut toto1, toto2 etc
<Mois> vaut 200712, 200801 etc

Je suis sur un tabelau croisé, je ne peux pas utiliser la formule BO "a-b" car mes données mois ne sont pas fixes mais en réponses d'une invite
boutte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2008, 14h05   #5
Invité régulier
 
Inscription : février 2008
Messages : 32
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 32
Points : 8
Points : 8
utilise la fonction "Réponse Utilisateur":
Variation = (Ventes Où Réponse première Invite) - (Ventes Où Réponse deuxième Invite)
Marco24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2008, 14h26   #6
Invité régulier
 
Inscription : juin 2006
Messages : 55
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 55
Points : 7
Points : 7
Désolé, j'ai essayé mais ça en fonctionne pas.

J'ai déja l'erreur DMB0007 si je crée la variable :
VAR1=<Ventes> Où (<Mois>=RéponseUtilisateur ("R1" , "Mois des ventes (aaaamm) ?"))

par contre, pas d'erreur si je mets la réponse en "dur" :
VAR1=<Ventes> Où (<Mois>="200801")

...mais je ne peux pas mettre 200801 en "dur" vu que j'ai une invite !

... je ne m'en sors pas ....

En BO C/S j'ai trouvé une parade en créant 2 requetes liées, mais là je suis en Webi !! comment faire sous Webi 6.5 ???
boutte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2008, 14h42   #7
Invité régulier
 
Inscription : février 2008
Messages : 32
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 32
Points : 8
Points : 8
et si tu crées d'abord la variable indicateur "Réponse Invite 1" tya tjrs l'erreur ?
Marco24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2008, 15h06   #8
Invité régulier
 
Inscription : juin 2006
Messages : 55
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 55
Points : 7
Points : 7
oui j'ai tout de meme l'erreur.
Je dirais meme plus : j'ai aussi l'erreur si je crée tout simplement une variable VAR2="200801" !!

=> OK pour VAR1=<Ventes> Où (<Mois>="200801")
mais KO pour VAR1=<Ventes> Où (<Mois>=<VAR2>) => erreur DMB0007

A savoir que <Mois>, et <VAR2> sont tous les 2 de meme type : <Mois> en alphanumerique car la donnée source est en VARCHAR2 et <VAR2> défini en chaine de caracteres.

A croire que le "Où" fonctionne avec une variable mais pas 2 !

Est ce faisable en Webi 6.5 ce que je demande ?
C'est pourtant quelque chose de tout à fait basique non ?
boutte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2008, 15h14   #9
Membre régulier
 
Inscription : décembre 2003
Messages : 96
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 96
Points : 80
Points : 80
T'as variable <Mois> c'est une variable date ou alphanumerique.

Si c'est une date il faut caster la RéponseUtilisateur en Date, pour ça il existe la fonction EnDate.

Citation:
Exemple d'utilisation :
EnDate(RéponseUtilisateur("..","..") , "dd/mm/yyyy")
jsaviola est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2008, 15h24   #10
Invité régulier
 
Inscription : juin 2006
Messages : 55
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 55
Points : 7
Points : 7
<Mois> est en alphanum tout comme la VAR2 citée dans mon post précédent, tout comme RéponseUtilisateur.

J'ai l'impression que le "Où" ne veut pas en opérande une variable !
Mais la doc BO ne dit rien là dessus, mais tous les exemples que j'ai pu trouvés pour la fonction "Où" sont avec en opérande une valeur fixe et non une variable ...
Exact ?

Une autre possibilité sans utiliser le "Où" ??
boutte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2008, 15h30   #11
Membre régulier
 
Inscription : décembre 2003
Messages : 96
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 96
Points : 80
Points : 80
C'est exacte, il me semble que ça ne fonctionne qu'avec une constante, j'avais rencontré le même problème mais je ne me souviens plus comment je l'ai réglé.
jsaviola est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2008, 17h10   #12
Membre du Club
 
Inscription : juin 2004
Messages : 208
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 208
Points : 41
Points : 41
Envoyer un message via Yahoo à nat54
Bonjour,

As-tu testé cela ?

VENTES WHERE (MONTH=[MOIS1])
-
VENTES WHERE (MONTH=[MOIS2])

En sachant que
MOIS1 est une variable information qui reprend la réponse d'une invite, =RéponseUtilisateur([MOIS1])
MOIS2 est aussi une variable information qui reprend la réponse d'une invite,
=RéponseUtilisateur([MOIS2])

J'utilise toujours cette méthode qui fonctionne dans mes rapports
nat54 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2008, 23h08   #13
Rédacteur
 
Avatar de Bruno2r
 
Bruno ROMAN-RUIZ
Inscription : décembre 2006
Messages : 2 185
Détails du profil
Informations personnelles :
Nom : Bruno ROMAN-RUIZ
Âge : 57

Informations professionnelles :
Secteur : Santé

Informations forums :
Inscription : décembre 2006
Messages : 2 185
Points : 2 724
Points : 2 724
Citation:
Envoyé par boutte Voir le message
je précise :

Dans mon rapport il n'y a toujours que 2 mois cependant ces 2 mois sont variables car réponse à une invite.
Les variables ça ne marche pas.
Les écarts et variations de BO sont certes séduisant au moment de la mise en oeuvre mais lorsque le tableau croisé évolue ... bonjour l'angoisse !

Le plus simple pour faire un tableau croisé doté de variations évolutives ... c'est de ne pas faire de tableau croisé !

Faire 2 requêtes distinctes
R1
Objets Totos & Indicateur
Condition Annéemois = Invite Quelle période AAAAMM ?

R2
Objets Totos & Indicateur
Condition Annéemois = Invite Quelle période AAAAMM-1 ?

(On pourrais bien sûr déduire Période AAAAMM-1 de Période AAAAMM mais ça compliquerais le sujet immédiat)

Synchroniser les deux requêtes en liant la Dimension commune Totos
  1. Gestionnaire de données
  2. Sélectionner Totos de R1
  3. Onglet Définition
  4. Lier...
  5. Sélectionner Totos de R2
  6. Valider
Création des variables
Code :
1
2
3
4
5
6
7
8
Définir la Variable <M> = Indicateur(R1)
Définir la Variable <M-1> = Indicateur(R2)
Définir la Variable <Ecart> = <M> - <M-1>
Définir la variable <Variation> = Si(<M-1> <> 0) Alors ((<M> - <M-1>) / <M-1>)
 
  Un conseil : appliquer la Somme dans cette dernière formule en prévision des totaux
 
<Variation> = Si(Somme(<M-1>) <> 0) Alors (Somme(<M> - <M-1>) / Somme(<M-1>))
A l'aide du gestionnaire de rapport créer le tableau simple
Totos <M-1> <M> <Ecart> <Variation>

Cela dit il faut essayer aussi la proposition de nat54 j'ai pas pu la tester mais elle a l'air de dire que ça marche
__________________
Précisez la VERSION ! Règles du forum Business Objects et FAQ BO
"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"
Bruno2r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2008, 11h36   #14
Invité régulier
 
Inscription : juin 2006
Messages : 55
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 55
Points : 7
Points : 7
nat54,
Sous quelle version de BO es tu ?
car désolé mais je ne peux pas faire ce que tu dis faire. De mon côté je suis en BO et Webi 6.5 SP2 et mon "Où" (ton "Where") veut bien prendre un objet et une constante mais pas 2 variables.
D'ailleurs, sous webi 6.5, le "Où" n'existe meme pas ...

bruno2r,
oui, la solution que tu décris est celle que j'ai implémentée (cf un de mes posts précédents) mais mon but est de savoir s'il est possible de réaliser ce simple calcul de variation à partir d'une seule requete ... voire sous Webi (mais là, sous Webi 6.5, je reve).
boutte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2008, 12h09   #15
Membre actif
 
Inscription : février 2008
Messages : 129
Détails du profil
Informations personnelles :
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : février 2008
Messages : 129
Points : 157
Points : 157
Par défaut avec la fonction Précédent()

Si tu souhaites travailler sous forme de tableau croise avec 1 seule requete, tu peux

1)créer la variable suivante :

= Si Non EstNul(Précédent(<indicateur>)) Alors (<indicateur>-Précédent(<indicateur>))/Précédent(<indicateur>)

2)creer une colonne dans ton tableau et glisser la variable dedans

3) présenter cette colonne en format %

cependant, tu auras une colonne vide (c'est pas top) !


pour ma part, je préfère la solution 2 requetes
isalille est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2008, 14h05   #16
Membre du Club
 
Inscription : juin 2004
Messages : 208
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 208
Points : 41
Points : 41
Envoyer un message via Yahoo à nat54
Citation:
Envoyé par boutte Voir le message
nat54,
Sous quelle version de BO es tu ?
car désolé mais je ne peux pas faire ce que tu dis faire. De mon côté je suis en BO et Webi 6.5 SP2 et mon "Où" (ton "Where") veut bien prendre un objet et une constante mais pas 2 variables.
D'ailleurs, sous webi 6.5, le "Où" n'existe meme pas ...
BO : Webi XI release 2

Tu as crée tes variables information ??

un exemple de chez moi

=[Total deal order value Eur-ext]Where([Month ID ( YYYYMM )]=[Mois_M])-[Total deal order value Eur-ext]Where([Month ID ( YYYYMM )]=[Mois_M-1])

[Mois_M] =RéponseUtilisateur("M") >> invite au lancement de la requête
[Mois_M-1]) =RéponseUtilisateur("M-1") >> invite au lancement de la requête
nat54 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/03/2008, 16h10   #17
Invité régulier
 
Inscription : juin 2006
Messages : 55
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 55
Points : 7
Points : 7
merci de tes infos nat54, mais tu es en webi XI, cela change tout !
je ne suis encore qu'en webi 6.5, mon BO en est au XXieme siecle et non encore au XXI ieme.
boutte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2008, 19h38   #18
Invité de passage
 
Inscription : juillet 2008
Messages : 1
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 1
Points : 1
Points : 1
C'est un problème épineux mais il y a une solution sans passer par deux requêtes :

Si tu as un tableau croisé à deux colonnes, ici <mois> avec deux valeurs mois1 et mois2

Imaginons que ton tableau ait deux dimensions <client> et <ville>
et 1 indicateur <vente>

1) Créer une première variable : <variation> =
Code :
<vente>-précédent(<vente>)
2) créer une deuxième variable :

Code :
 <variation vente> = Somme(<variation>)dans(<client>,<ville>,<mois>)
Place cette variable dans une troisième colonne et tu as ton delta. Magique semble-t-il ?

L'astuce réside dans le fait que la fonction "dans" n'a pas d'ORDER BY défini. Par défaut BO va utiliser le bloc similaire déjà présent dans le rapport. Du coup la fonction "précédent" non native du contenu du tableau croisé ne va pas créer de colonne vide cette fois.
Silfeas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2008, 15h48   #19
Membre actif
 
Inscription : juillet 2008
Messages : 181
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : juillet 2008
Messages : 181
Points : 169
Points : 169
Bonjour,

Je vous propose de mettre la formule suivante dans la colonne variation:

=Somme(Abs((([indicateur])-([indicateur] PourTout ([Mois]))/2) ) PourChaque([Mois]))

A quoi cela correspond?
prenons l'exemple

toto1 13945 17870

Pour chaque mois, on fait
- pour 200711 on va calculer [indicateur] - ([indicateur] PourTout ([Mois]))/2
soit 13945 - (13945+17870)/2 = 13945 - 15908 (qui est la moyenne) = -1963

- idem pour 200712 on trouve 1962

En fait on cherche la différence entre chaque mois et la moyenne
On prends ensuite la valeur absolue de ces deux valeurs qu'on ajoute ensuite

1963+1963 = 3925 qui est bien égal à 17870 - 13945


2 inconvénients importants à noter


- Cette formule ne permet pas de savoir si c'est une augmention ou une baisse.

- Autre soucis avec cette formule: si une des deux valeurs n'est pas renseignée, le calcul de la variation est fausse.

toto1 13495 vide

donne une variation de 6972


Je fais encore des tests pour améliorer cela.
alextoucour est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2008, 13h55   #20
Invité régulier
 
Raoudi
Développeur informatique
Inscription : octobre 2005
Messages : 41
Détails du profil
Informations personnelles :
Nom : Raoudi
Localisation : France, Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : octobre 2005
Messages : 41
Points : 7
Points : 7
Citation:
Envoyé par isalille Voir le message
Si tu souhaites travailler sous forme de tableau croise avec 1 seule requete, tu peux

1)créer la variable suivante :

= Si Non EstNul(Précédent(<indicateur>)) Alors (<indicateur>-Précédent(<indicateur>))/Précédent(<indicateur>)

2)creer une colonne dans ton tableau et glisser la variable dedans

3) présenter cette colonne en format %

cependant, tu auras une colonne vide (c'est pas top) !


pour ma part, je préfère la solution 2 requetes

Bonjour,

Ok pour la solution à 2 requêtes. Elle fonctionne bien sur 2 années. Mais je rencontre ce genre de problème avec un tableau pouvant avoir jusque 15 années d'historique.


Cordialement
raoudi57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h41.


 
 
 
 
Partenaires

Hébergement Web