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

Outils de restitution et d'analyse Discussion :

Faire des requêtes sur plusieurs bases de données


Sujet :

Outils de restitution et d'analyse

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    mars 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2011
    Messages : 60
    Points : 42
    Points
    42
    Par défaut Faire des requêtes sur plusieurs bases de données
    Bonjour ,
    Je suis à la recherche d'un outil de reporting qui permettra d'interroger plusieurs bases de données en même temps. En ce moment j'utilise pentaho report designer mais il permet seulement d'interroger une seule source de données ( à travers l'écriture d'une requête). Pour pouvoir le faire sur plusieurs bases de données il faut répéter l'opération plusieurs fois et insérer toutes les requêtes ainsi créées dans le rapport ( ce qui n'est pas top top).
    J'aimerai donc savoir si il existe un outil open source permettant d'interroger toutes mes bases avec la même requête ou si il est possible de le faire avec PRD.

    Merci beaucoup pour votre aide, j'ai déjà posé cette question sur le forum dédié à pentaho mais depuis je n'ai eu aucune réponse ( c'est peut être parce que ce n'est pas possible avec PRD.....

  2. #2
    Membre éprouvé Avatar de Jester
    Inscrit en
    septembre 2003
    Messages
    813
    Détails du profil
    Informations forums :
    Inscription : septembre 2003
    Messages : 813
    Points : 1 014
    Points
    1 014
    Par défaut
    De mémoire BIRT peut combiner des résultats requêtes. Dans aucun cas, un outil de reporting pourra faire une requête qui utilise plusieurs bases de données par contre.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    mars 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2011
    Messages : 60
    Points : 42
    Points
    42
    Par défaut
    Merci pour ta réponse Jester,
    mais qu'est que tu entends par combiner le résultat de plusieurs requêtes?
    Est ce le fait d’exécuter la requête autant de fois qu'il y a de bases de données et ensuite de consolider le résultat?

  4. #4
    Membre éprouvé Avatar de Jester
    Inscrit en
    septembre 2003
    Messages
    813
    Détails du profil
    Informations forums :
    Inscription : septembre 2003
    Messages : 813
    Points : 1 014
    Points
    1 014
    Par défaut
    oui

  5. #5
    Membre confirmé

    Profil pro
    Consultant en Business Intelligence
    Inscrit en
    mai 2008
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : mai 2008
    Messages : 260
    Points : 536
    Points
    536
    Par défaut
    @Jester Avec Pentaho Report Designer, on peut récupérer des données en temps réel sur plusieurs sources en même temps, en utilisant une datasource de type "Kettle"

    Jetez plutôt un œil sur ce post :
    http://arubawayne.blogspot.fr/2011/0...tion-data.html

    Il y a quelques temps, j'expliquai aussi comment on pouvait utiliser kettle comme source de données pour combler l'absence (inexplicable !) de tableaux croisés dans Pentaho Report Designer :

    http://www.osbi.fr/vos-tableaux-croi...g-grace-a-pdi/

    Amusez-vous bien ;-)
    Sylvain (www.osbi.fr)

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    mars 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2011
    Messages : 60
    Points : 42
    Points
    42
    Par défaut
    Merci beaucoup sylvain ,
    je m’apprêtais même à poser cette question sur ton site en espérant que tu ai une idée sur ce problème.
    Je regarde le lien que tu as envoyé et je fais un retour sur le forum
    Merci encore

  7. #7
    Expert confirmé
    Avatar de doc malkovich
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    juillet 2008
    Messages
    1 884
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : juillet 2008
    Messages : 1 884
    Points : 4 281
    Points
    4 281
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Jester Voir le message
    Dans aucun cas, un outil de reporting pourra faire une requête qui utilise plusieurs bases de données par contre.
    Si, Business Objects dès la xi3 ou OBI (Oracle) le fait.
    Et PRD aussi, merci Sylvain
    N'oubliez pas de cliquer sur lorsque votre problème est réglé !

  8. #8
    Membre éprouvé Avatar de Jester
    Inscrit en
    septembre 2003
    Messages
    813
    Détails du profil
    Informations forums :
    Inscription : septembre 2003
    Messages : 813
    Points : 1 014
    Points
    1 014
    Par défaut
    Citation Envoyé par doc malkovich Voir le message
    Si, Business Objects dès la xi3 ou OBI (Oracle) le fait.
    Et PRD aussi, merci Sylvain
    Mes compétences BO s'arrête à la XI r2, mais il me semble que c'est faire 2 requêtes puis les fusionner. Passer par une transfo Kettle c'est pas non plus ce que j'appelle du easy. Pour moi un outils qui réalise cela c'est un outil où tu donne 1 requête SQL de plusieurs sources de données (en préfixant les tables par le nom de la source de données par exemple).

    Par contre, j'ai peut-être eu un problème de communication avec nandy.c. Par fusion j'entend une requête retourne les clients, une autre les ventes, et la fusionner fait la jointure entre les deux. Je n'entend pas de travail de consolidation "à la main" comme c'était peut-être le propos.

  9. #9
    Expert confirmé
    Avatar de doc malkovich
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    juillet 2008
    Messages
    1 884
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : juillet 2008
    Messages : 1 884
    Points : 4 281
    Points
    4 281
    Billets dans le blog
    1
    Par défaut
    Pour info dans BO tu as un module qui s'appelle datafederator.
    En gros tu modélises les tables et les jointures, mais tu peux prendre des tables qui viennent de bases différentes (et de type différent). Après c'est l'outil qui fait le reste. Et c'est transparent pour l'utilisateur, qui ne fait qu'une requête et pour le designer qui peut prendre des sources de données multiples.
    N'oubliez pas de cliquer sur lorsque votre problème est réglé !

  10. #10
    Membre éprouvé Avatar de Jester
    Inscrit en
    septembre 2003
    Messages
    813
    Détails du profil
    Informations forums :
    Inscription : septembre 2003
    Messages : 813
    Points : 1 014
    Points
    1 014
    Par défaut
    Citation Envoyé par doc malkovich Voir le message
    Pour info dans BO tu as un module qui s'appelle datafederator.
    En gros tu modélises les tables et les jointures, mais tu peux prendre des tables qui viennent de bases différentes (et de type différent). Après c'est l'outil qui fait le reste. Et c'est transparent pour l'utilisateur, qui ne fait qu'une requête et pour le designer qui peut prendre des sources de données multiples.
    Clairement je retire mon propos alors

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    mars 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2011
    Messages : 60
    Points : 42
    Points
    42
    Par défaut
    Citation Envoyé par Jester Voir le message
    Pour moi un outils qui réalise cela c'est un outil où tu donne 1 requête SQL de plusieurs sources de données (en préfixant les tables par le nom de la source de données par exemple).
    Par fusion j'entend une requête retourne les clients, une autre les ventes, et la fusionner fait la jointure entre les deux. Je n'entend pas de travail de consolidation "à la main" comme c'était peut-être le propos.

    Merci à tous pour votre contribution , par contre mon problème c'est qu'il s'agit de sources de données identiques mais pour des villes différentes en fait.
    Pour reprendre l'exemple de Jester ça correspondrait à des clients de différentes villes et chaque ville dispose de sa propre base de données. Or je veux obtenir le nombre de clients total ( ce n'est qu'un exemple parce que dans les faits c'est beaucoup plus complexe que ça). Ma solution actuelle est donc d'effectuer ma requête sur toutes les bases et ensuite de consolider le résultat. Or ce que je veux c'est interroger toutes les bases de données en même temps ( ce qui est impossible d'après ce qu'on m'a dit).
    Mon problème c'est qu'il ne s'agit pas de tables différentes qui se trouvent sur des bases différentes (car dans ce cas j'aurais pu préfixé avec le nom de ma base de données et faire une jointure) mais il s'agit plutôt de mêmes tables qu'il faut interroger plusieurs fois.

    En discutant avec sylvain il m'a dit que la seule solution est de faire un datawarehouse , ce que je pense aussi mais que j'aimerai éviter à cause de certaines contraintes que j'ai sur le projet.


    Merci pour toutes vos réponses et pour les outils dont vous avez parlez mais en voyant les noms (Business Object et Oracle) je crains fort qu'au niveau de ma hierarchie ce soit non , mais bon on peut toujours espérer ( ça au moins ça ne nous coûte rien )

  12. #12
    Membre éprouvé Avatar de Jester
    Inscrit en
    septembre 2003
    Messages
    813
    Détails du profil
    Informations forums :
    Inscription : septembre 2003
    Messages : 813
    Points : 1 014
    Points
    1 014
    Par défaut
    Il devrait aussi être possible de faire une DB qui fédère les autres sans pour autant monter un DWH.

    Sous SQL Server par exemple, on peut avoir une table client sur 3 bases et dans une base FUSION faire :
    create view FUSION.dbo.Client as
    select * from PARIS.dbo.Client
    union all
    select * from LYON.dbo.Client
    union all
    select * from MARSEILLE.dbo.Client

    Si elles sont sur la même instance, sinon utiliser les serveur liés. Concept de base fédérée sur Postgresql ou Mysql.

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    mars 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2011
    Messages : 60
    Points : 42
    Points
    42
    Par défaut
    Merci Jester,

    Citation Envoyé par Jester Voir le message
    Il devrait aussi être possible de faire une DB qui fédère les autres sans pour autant monter un DWH.

    Sous SQL Server par exemple, on peut avoir une table client sur 3 bases et dans une base FUSION faire :
    create view FUSION.dbo.Client as
    select * from PARIS.dbo.Client
    union all
    select * from LYON.dbo.Client
    union all
    select * from MARSEILLE.dbo.Client

    Si elles sont sur la même instance, sinon utiliser les serveur liés. Concept de base fédérée sur Postgresql ou Mysql.

    Les bases sont effectivement sur la même instance, mais le fait de les fusionner posera, à mon avis, un problème de clés primaires dupliquées (car sur une base A et sur une base B ont peut trouver des clients qui on la même clé primaire) . Il faudra donc transformer les clés avant de les intégrer dans la nouvelle table.
    De plus , je n'ai pas seulement 3 bases j'en ai beaucoup plus (près de 80 dont certaines avec des volumes très importants donc côté performances.... )

  14. #14
    Membre éprouvé Avatar de Jester
    Inscrit en
    septembre 2003
    Messages
    813
    Détails du profil
    Informations forums :
    Inscription : septembre 2003
    Messages : 813
    Points : 1 014
    Points
    1 014
    Par défaut
    Pour les duplicata : rajouter une colonne ville par exemple.

    Pour le volume : Dans tous les cas le problème restera entier même si c'était dans la même base/table. Le volume en dessous de 10 millions ce n'est pas un problème.

    Pour la maintenance/nombre de base : il est possible de prévoir une écriture automatique de la requête pour ne pas le faire à la main.

    Si ça ne suffit pas, une étape de consolidation ETL/data warehouse est en effet recommandable.

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    mars 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2011
    Messages : 60
    Points : 42
    Points
    42
    Par défaut
    Citation Envoyé par Jester Voir le message
    Pour les duplicata : rajouter une colonne ville par exemple.
    Exactement ce que j'ai fais en rajoutant dans les clé primaire le préfixe de la base concernée
    Citation Envoyé par Jester Voir le message
    Pour la maintenance/nombre de base : il est possible de prévoir une écriture automatique de la requête pour ne pas le faire à la main.
    .
    Je suis très intéressée par cette suggestion , peux tu m'en dire plus stp

  16. #16
    Membre éprouvé Avatar de Jester
    Inscrit en
    septembre 2003
    Messages
    813
    Détails du profil
    Informations forums :
    Inscription : septembre 2003
    Messages : 813
    Points : 1 014
    Points
    1 014
    Par défaut
    1 - Tu dois avoir la liste des bases d'une instance SQL Server dans une vue système (je ne sais pas où par contre).

    2 - Tu peux donc faire une requête dessus et construire un varchar du genre le select que j'ai donné 2 message plus haut.

    3 - Tu peux exécuter ce select (qui est contenu dans un varchar) par la commande exec().

Discussions similaires

  1. Réponses: 5
    Dernier message: 16/11/2007, 17h54
  2. [PDO] Requêtes sur plusieurs bases de données
    Par nabab dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 23/08/2007, 08h11
  3. Réponses: 5
    Dernier message: 23/01/2007, 05h24
  4. Requête sur plusieurs bases de données
    Par Oluha dans le forum ASP
    Réponses: 8
    Dernier message: 14/10/2005, 14h57

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