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 BI Discussion :

import d'une table oracle sous sas et requête hiéarchique


Sujet :

Outils BI

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 5
    Points : 3
    Points
    3
    Par défaut import d'une table oracle sous sas et requête hiéarchique
    Bonjour,
    J'ai un problème je suis entrain de travailler sous sas mais j'utilise des tables oracle pour ce faire j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     proc sql;
      connect to oracle (user= &useror password=&pwora path="&pathora");
      create table work.linked_errfs as select * from connection to oracle
          (select * from &shema..linked_errfs  );
      disconnect from oracle;
      quit;
    mon problèmme que dans la table linkef_errf j'ai deux colonnes:
    errf_id linked_errf_id
    1 3
    1 5
    2 4
    3 6
    mois je cherche une table où je trouve toutes les liaisons comme:
    errf_id linked_errf_id
    1 1
    1 3
    1 5
    1 6
    2 2
    2 4

    je débute dans le BI et je ne sais pas comment faire: mais je crois qu'on peut faire ca directement sous oracle avec oracle prior
    ou sous sas après avoir importer la table errf_linked
    Merci d'avance pour votre aide

  2. #2
    Rédacteur

    Homme Profil pro
    SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Inscrit en
    Avril 2009
    Messages
    2 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 2 497
    Points : 6 064
    Points
    6 064
    Par défaut
    Cherches-tu à faire un produit cartésien ?

    depuis
    1 3
    1 5
    2 4
    3 6
    vers
    1 3
    1 5
    1 4
    1 6
    2 3
    2 5
    2 4
    2 6
    3 3
    3 5
    3 4
    3 6

  3. #3
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Merci pour ta réponse, mais je ne cherche pas un produit cartésien, je cherche à identifier toutes les études liés à l'étude principale par exemple la 3 est liée à la 1, et la 6 est liés à la 3 donc la 6 est liée à la 1
    1 3
    3 6

    moi je veux creer
    1 1
    1 3
    1 6

    puisque la 1 est liée à elle même
    la 3 est liée à la 1
    et la 6 est liée à la 1 (à travers la 3)
    j'espère que j'étais clair!!

  4. #4
    Rédacteur

    Homme Profil pro
    SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Inscrit en
    Avril 2009
    Messages
    2 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 2 497
    Points : 6 064
    Points
    6 064
    Par défaut
    Oui c'est ok cette fois

    je te propose quelque chose mais il faut que tu l'adaptes donc digère le tranquillement.

    Il faut prendre garde à la profondeur de tes relations car cela conditionnera le nombre de jointure (plus tu as de relation, plus tu rajoutes des JOIN).

    Je te donne une table test2 qui est une version intermédiaire avec les variables de travail à l'identification de parent_final et une table test3 avec le résultat final et propre (à toi de dire si c'est juste )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    data t;
    input enfant parent ;
    cards;
    3 1
    5 1
    4 2
    6 3
    7 6
    8 6
    ;
    run;
     
    proc sql;
    create table test2 as select t1.*, /*t2.enfant as e2,*/ t2.parent as px2, /*t3.enfant as e3,*/ t3.parent as px3, coalesce(t3.parent, t2.parent, t1.parent) as parent_final
    from t as t1
    left join t as t2 on t1.parent=t2.enfant
    left join t as t3 on t2.parent=t3.enfant
    order by enfant;
    quit;
     
    proc sql;
    create table test3 as select  coalesce(t3.parent, t2.parent, t1.parent) as parent_final, t1.enfant
    from t as t1
    left join t as t2 on t1.parent=t2.enfant
    left join t as t3 on t2.parent=t3.enfant
    order by parent_final, enfant;
    quit;

  5. #5
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup pour ton aide,
    Mais le problème que c'est l'utilisateur qui décide la profondeur, chaque fois qu'il ajoute une étude c'est lui qui décide si elle est principale ou liée et si elle liée moi dans la table linked_errf j'aurais que la dernière liaison et non l'étude principale!!! et moi je dois faire quelque chose automatisé

  6. #6
    Rédacteur

    Homme Profil pro
    SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Inscrit en
    Avril 2009
    Messages
    2 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 2 497
    Points : 6 064
    Points
    6 064
    Par défaut
    avec ce départ tu devrais t'en sortir.

    A toi d'automatiser le répérage de la profondeur et d'utiliser les macros pour créer du code dans la proc SQL.

    Autrement tu considères 100 niveaux et tu pars avec cela.

  7. #7
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    ok!
    Merci beaucoup
    je te tiens au courant!
    Slim

  8. #8
    Rédacteur

    Homme Profil pro
    SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Inscrit en
    Avril 2009
    Messages
    2 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 2 497
    Points : 6 064
    Points
    6 064
    Par défaut
    Regarde si tu as le module SAS/OR ou QC, dedans il y a la proc BOM 'Bills of materials'. Elle fait cela automatiquement.

  9. #9
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Bonjour , j'ai trouvé la solution, merci beaucoup pour ton aide
    slim

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    DATA t;
     input enfant parent ;
     cards;
     3 1
     5 1
     4 2
     6 3
     7 6
     8 6
     ;
     run;
     
     
     
    %macro hierarchy(errf=);
    data hierarchy0;
       set t(where=(enfant=&errf));
    run;
     
    /**************search of brothers*************/
    proc sql;
      create table brothers0 as select e.enfant, e.parent
        from hierarchy0 p, t e
        where p.parent=e.parent;
    quit;
     
    %let rank=0;
     
    %do %until(&nb_ligne =0);
    %let rank=%eval(&rank+1);
    proc sql;
      create table hierarchy&rank as
    select p.parent,p.enfant
      from t p, brothers%eval(&rank-1) e
      where p.enfant=e.parent;
     quit;
     proc sort data= hierarchy&rank nodupkeys;
       by parent enfant;
    run;
    proc sql;
      create table brothers&rank as select e.enfant, e.parent
        from hierarchy&rank p, t e
        where p.parent=e.parent;
    quit;
    %let nb_ligne=0;
    data _null_;
      set brothers&rank;
      call symput('nb_ligne',_n_);
    run;
     
    %end;
     data linked (keep=errf );
       set
       %do i=0 %to &rank;
          brothers&i
       %end;
       ;
       errf=parent; output;
    errf =enfant;output;
    run;
    proc sort data=linked nodupkeys;
       by errf;
    run;
     
    %mend;
     option mprint;
     
    %hierarchy(errf=4)

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

Discussions similaires

  1. [9i] Voir une Table Oracle sous Delphi
    Par stfanny31 dans le forum Débuter
    Réponses: 2
    Dernier message: 27/03/2013, 00h58
  2. Import d'une table STATA sous SAS
    Par Simon75013 dans le forum SAS Base
    Réponses: 2
    Dernier message: 19/03/2012, 14h48
  3. Ajout d'une champ dans une table Oracle sous Toad ?
    Par christ571 dans le forum SQL
    Réponses: 5
    Dernier message: 20/07/2011, 16h23
  4. Réponses: 2
    Dernier message: 27/06/2007, 11h22
  5. [9i] Importer des données Excel dans une table
    Par oasma dans le forum SQL
    Réponses: 6
    Dernier message: 19/03/2007, 08h39

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