IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Designer Discussion :

Nombre de points "glissant" sur plusieurs matchs


Sujet :

Designer

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Nombre de points "glissant" sur plusieurs matchs
    Bonjour à tous;

    Voici mon problème:
    j'ai une table SAISON qui contient les champs suivants : ID MATCH ; NBRE_POINT, etc. Le champ qui m'intéresse est NBRE_POINT.
    j'arrive à sélectionner le nombre de points par match. Jusque-là, rien de bien compliquer.

    Je voudrais montrer une évolution des points par match.
    c'est-à-dire que je voudrais calculer "le nombre de points glissant". je m'explique: "le nombre de points glissant" doit prendre le résultat d'un match et les 12 résultats précèdent ce match afin d'en faire une moyenne.

    Exemple :
    si on est au match 20.
    alors "le nombre de points glissant" doit prendre le résultat du match 20 et les résultats des 12 matchs précédents.

    Je n'arrive pas à traduire cela dans BO.
    Je suis ORACLE 8 et BO XI, j'ai accès au designer et à deski.

    J'espère que je suis assez clair.
    Merci pour vos réponses

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 364
    Points : 551
    Points
    551
    Par défaut
    Bonjour,
    Avec un accès au Designer, je tenterais ce qui suit (et sans accès je personnaliserais le SQL pour faire la même chose au final).

    En supposant qu'ID MATCH soit numérique.
    Créer un objet dimension ID MATCH 13 contenant dans le select
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @select(Classe\ID_MATCH)+13
    Ensuite, dans Desktop intelligence.
    Tu fais 2 Requêtes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <Id MATCH><NBRE_POINT>
    et 
    <Id MATCH 13><NBRE_POINT>
    Tu lies les deux dimensions <Id MATCH> et <Id MATCH 13> dans le gestionnaire de données.
    Si tu affiches dans un même tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <ID MATCH><REQ1.NBRE_POINT> <REQ2.NBRE_POINT>
    Tu devrais voir les mêmes valeurs d'indicateur décalés de 13 lignes entre les colonnes 2 et 3.
    Tu crées une formule ou une variable contenant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =sommeCumulative(<REQ1.NBRE_POINT>)-sommeCumulative(<REQ2.NBRE_POINT>)
    et tu devrais y voir apparaître le nombre de points cumulés glissants sur 12 matchs.

    Cordialement,

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Bonjour drla_,

    Tout d'abord merci pour ta reponse.

    Ensuite IDMATCH est de type alphanumerique. j'avais oublié de le préciser.
    Et je ne vois pas comment lier les deux dimensions <Id MATCH> et <Id MATCH 13> dans le gestionnaire de données.

    Merci.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 364
    Points : 551
    Points
    551
    Par défaut
    Bonjour,

    Et dans le Designer (pour une fois qu'on y a accès on ne va pas se gêner).

    Peux-tu rajouter un objet Numérique contenant le numéro de ligne ramené par ta requête (ROWNUM sur Oracle, ROW_NUMBER() sur SQL server etc).

    Si oui : Tu crées un objet RowNum et un objet RowNum_13 de la même manière qu'expliqué précedemment. Avec un peu de chance, IDMatch est l'index primaire de ta table et si tu l'inclus dans ta requête, elle sortira toujours triée de la même manière et le numéro de ligne sera pertinent pour faire ton tri.

    Cordialement,

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Dans le designer, j'ai rajouté les objets RowNum et RowNum_13.
    Puis à partir de DESKI, je fais les 2 requêtes séparées.
    Mais je ne vois pas comment lier la requête 1 à la requête 2.

    Pour le moment quand je met rowmun et rowmun_13 dans un même rapport j'obtiens ceci :

    IDMATCH | RowNum | RowNum_13 | NBRE_POINT
    S12/2012 | 1 | 14 | 60

    Cordialement

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 364
    Points : 551
    Points
    551
    Par défaut
    Tu lies Rownum de la requête 1 à Rownum13 de la requête 2.

    Pour chaque ligne fusionnée, tu devrais avoir les indicateurs de score décalés de 13 lignes, Tu appliques à ces indicateurs la formule contenant les sommes cumulatives telle que décrite ci-dessus. et normalement le résultat de cette formule te donne le cumul des scores sur les 12 dernier matchs.

    Pour synchroniser les deux requêtes dans le document (Desktop Intelligence). Tu ouvres le gestionnaire de données (l'icône représentant un cube bleu de mémoire).
    Tu sélectionnes un des champs Rownum ou Rownum13, tu affiches l'onglet définition puis tu cliques sur "lier à" et tu choisis l'autre champ (Rownum13 ou Rownum). si tu as besoin de mettre d'autres dimensions dans ton tableau, tu dois les lier aussi mais fais attention à ce qu'elles ne perturbent pas la liaison avec RowNum (je pense à ID-match notamment).
    La liaison de deux requêtes se comporte un peu comme une jointure interne SQL (un peu seulement). Tu lies et tu intègres deux dimensions incompatibles dans ton tableau et il ne t'affiche plus rien.

    Cordialement,

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    J'ai bien crée le lien entre les 2 dimensions.
    Mais après de multiples essais, je n'obtiens toujours pas le décalage espérer.
    De plus lorsque j'ajoute la dimension ID_MATCH, les résultats ne correspondent plus du tout.

    D'autre pistes ?

    Cordialement.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 364
    Points : 551
    Points
    551
    Par défaut
    Cela ne me surprend pas qu'insérer ID match dans ton tableau mette la panique. Je l'avais d'ailleurs suggéré dans mon post précécent.

    Si tu utilises Desktop intelligence, tu dois avoir accès au SQL personnalisé.

    On va refaire la même démarche en SQL.

    Je n'ai pas tes données on va donc utiliser le jeu de test suivant :

    Et comme je suis fainéant on va faire une moyenne glissante sur 3 matchs.
    La table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CREATE TABLE "TEST"."MATCH"
    (
    "ID_MATCH" VARCHAR2(20 BYTE) NOT NULL ENABLE,
    "EQUIPE_1" VARCHAR2(20 BYTE),
    "EQUIPE_2" VARCHAR2(20 BYTE),
    "SAISON" VARCHAR2(20 BYTE),
    "SCORE_1" NUMBER(3,0),
    "SCORE_2" NUMBER(3,0));
    Les données
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ID_MATCH     EQUIPE_1    EQUIPE_2   SAISON   SCORE_1     SCORE_2
    2011/08     Les Furets Les belettes  2011     3            2
    2011/09     Les Furets Les renards   2011     1            4
    2011/10     Les Furets Les loups     2011     2            5
    2011/11     Les Furets Les abeilles  2011     2            1
    2011/12     Les Furets Les canards   2011     0            0
    2011/13     Les Furets Les blaireaux 2011     1            1
    2011/14     Les Furets Les cygnes    2011     2            0
    2011/15     Les Furets Les hiboux    2011     0            1
    2011/16     Les Furets Les chevaux   2011     1            0
    2011/17     Les Furets Les oies      2011     4            5
    Créer un nouveau document. Mode d'accès aux données : SQL à la carte
    Créer la connexion vers la base de données : Tester
    Saisir le sql
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Select a.Id_Match, Score_1, RefScore from 
    (select ID_Match,rownum as ligneA,Score_1 from Match order by Id_Match) a
    left join
    (select ID_Match,rownum as refMatch,Score_1 as RefScore from Match order by Id_Match) b
    on a.ligneA = b.RefMatch+3
    order by a.Id_Match
    Résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ID_Match Score_1 RefScore
    2011/08      3 
    2011/09      1 
    2011/10      2 
    2011/11      2         3
    2011/12      0         1
    2011/13      1         2
    2011/14      2         2
    2011/15      0         0
    2011/16      1         1
    2011/17      4         2
    On voit bien ici le décalage de la grille des scores.
    Dans le rapport tu colles la formule des sommes cumulatives de ma première réponse.
    =sommeCumulative(<Score1>)-sommeCumulative(<RefScore>)
    Le résultat de la formule est détaillé dans la colonne "Mobile". Elle Affiche la somme glissante des 3 derniers matchs à partir de la ligne et quand c'est possible.

    Résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ID_MATCH      SCORE_1  REFSCORE    Mobile 
    2011/08          3,00      3,00
    2011/09          1,00      4,00
    2011/10          2,00      6,00
    2011/11          2,00      3,00      5,00
    2011/12          0,00      1,00      4,00
    2011/13          1,00      2,00      3,00
    2011/14          2,00      2,00      3,00
    2011/15          0,00      0,00      3,00
    2011/16          1,00      1,00      3,00
    2011/17          4,00      2,00      5,00
    Si j'ai bien tout suivi cela devrait répondre à ta question initiale.

    Tu n'as plus qu'a transposer.

    Cordialement,

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Sa marche !
    Merci beaucoup ^^

    Maintenant, peut-on mettre du SQL a la carte dans un rapport utilisant un univers ?

    Cordialement.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 364
    Points : 551
    Points
    551
    Par défaut
    Bonne nouvelle.

    Tu peux personnaliser le SQL d'une requête créée avec l'éditeur de requête. Tu as un bouton pour cela dans l'éditeur.

    De mémoire pour Desktop intelligence, la contrainte est que tu dois avoir dans le select du sql le même nombre d'objets que dans les objets du résultat et qu'ils soient de même type.
    Après dans le from et ce qui suit tu fais ce que tu veux.

    Si tu veux intégrer directement la requête dans l'univers, tu peux faire une table dérivée. Mais attention à bien renseigner la description des objets qui en découlent. Car mixé avec le reste des objets de l'univers, ce type de SQL pourrait avoir des effets surprenant.

    Cordialement,

  11. #11
    Rédacteur
    Avatar de Bruno2r
    Homme Profil pro
    Exploitation des données
    Inscrit en
    Décembre 2006
    Messages
    2 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Exploitation des données
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 566
    Points : 4 780
    Points
    4 780
    Par défaut
    Citation Envoyé par jer.menager Voir le message
    Sa marche !
    Merci beaucoup ^^

    Maintenant, peut-on mettre du SQL a la carte dans un rapport utilisant un univers ?

    Cordialement.
    A ce sujet, il me semble très important de se mettre d'accord sur le sens du mot "Rapport"

    Dans BO ...

    un document BO est un fichier d'extension ...
    • .rep lorsqu'il est généré et lisible par le client lourd Desktop Intelligence (Deski pour les intimes)
    • .wid lorsqu'il est généré et lisible par le client léger Web Intelligence (Webi)
    Ce document peut se composer d'un ou plusieurs rapports (onglets) à l'identique d'un classeur Excel comportant des feuilles.

    Des tableaux différents et de sources différentes (univers, feuilles Excel, fichiets texte, sql à la carte au travers d'une connection à un SGBD ...)
    peuvent être positionnés sur des rapports (onglets) différents et cela n'appelle aucune remarque particulière.

    En revanche, si dans un même rapport on veut réunir sur une même page et dans une même section deux tableaux issues de sources différentes, il faudra synchroniser les dimensions communes aux deux fournisseurs de données.
    Précisez la VERSION !
    Un message vous a aidé ? Votez en cliquant sur Pensez au bouton
    Tutoriels BO et FAQ BO
    "A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"

  12. #12
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Merci a drla_

    Mon problème est résolu ^^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 08/04/2010, 15h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo