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

SAS Base Discussion :

Merge complet


Sujet :

SAS Base

  1. #1
    Candidat au Club
    Homme Profil pro
    Responsable application base de données / maintenicien
    Inscrit en
    Mai 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable application base de données / maintenicien
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2015
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Merge complet
    Bonjour,
    Je suis nul en SAS, du coup j'utilise souvent des PROC SQL. Mais là le temps avec un PROC SQL est trop long.


    J'ai une table A à mettre à jour : Elle a une vingtaine de colonne, dont une qui va servir d' ID de valeur de rapprochement, et, COL1 et COL2 vide à mettre à jour. (ID apparait plusieurs fois dans A car non discriminantes (accumulation historique) , c'est une autre colonne qui sert de valeur discriminante)

    J'ai une table B qui va servir de source pour la mise à jour : Elle a 3 colonnes : ID, COL1 et COL2

    j'aimerai mettre à jour la table A, avec les valeur de B.COL1 dans A.COL1 et idem pour COL2 quand A.ID = B.ID

    plusieurs problématique :
    • pas d'ajout de nouvelles lignes dans A provenant de B
    • Pas d'ajout de colonne dans A


    donc je cherche une solution SAS rapide, efficace, fiable. Pas de PROC SQL déjà testé.

    exemple :
    table A (la colA illustre de nombreuses autres colonnes à ne pas toucher qui ont des données diverses mais discriminantes : date, flag, etc.)
    id;colA;col1;col2
    1;1;;
    2;2;;
    2;3;;
    2;4;;

    3;5;;
    4;6;;

    Table B
    id;col1;col2
    1;a;e
    2;b;f
    3;c;g
    4;d;h
    5;z;m
    6;k;n

    je fais un proc sort des deux tables en amont puis je fais un merge
    DATA table_C ;
    MERGE table_A ( IN = A )
    table_B ( IN = B ) ;
    BY ID ;
    IF A ; /* plus rapide que IF A=1 THEN OUTPUT THREE ; !!! */
    RUN ;


    et au mieux j'obtiens la table C
    id;colA;col1;col2
    1;1;a;e
    2;2;b;f
    2;3;;
    2;4;;

    3;5;c;g
    4;6;d;h

    les lignes (2;3) et (2;4) n'ont pas été mise à jour ...
    je veux obtenir cela :
    id;colA;col1;col2
    1;1;a;e
    2;2;b;f
    2;3;b;f
    2;4;b;f

    3;5;c;g
    4;6;d;h

    Merci de votre aide

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur en SAS/ Statisticien
    Inscrit en
    Janvier 2013
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur en SAS/ Statisticien
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 483
    Points : 1 552
    Points
    1 552
    Par défaut
    Bonjour,
    Pour la mise à jour souhaitée, tu peux insérer les deux lignes, en gras, dans ton code initial : (les colonnes col1 et col2 à supprimer de la table table_C)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    DATA table_C ;
    MERGE table_A ( IN = A )
    table_B ( IN = B ) ;
    BY ID ;
    IF A ; /* plus rapide que IF A=1 THEN OUTPUT THREE ; !!! */
    
    col1_machin=col1 ;
    col2_machin=col2 ;
    
    RUN ;
    Bon courage
    Ward

  3. #3
    Candidat au Club
    Homme Profil pro
    Responsable application base de données / maintenicien
    Inscrit en
    Mai 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable application base de données / maintenicien
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2015
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    On m'a indiqué

    DATA table_C ;
    MERGE Table_A (drop= col1 col2 IN = A )
    Table_B ( IN = B ) ;
    BY ID ;
    IF A ;
    RUN ;

    et cela fonctionne !

    Merci

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

Discussions similaires

  1. Une doc VBScript complète et compacte
    Par jérôme dans le forum ASP
    Réponses: 5
    Dernier message: 13/03/2013, 09h46
  2. action APRES chargement complet ...
    Par PinGuy dans le forum Delphi
    Réponses: 7
    Dernier message: 06/07/2006, 17h16
  3. [PROFILER][THREAD][java.prof] outil gratuit/complet?
    Par narmataru dans le forum Général Java
    Réponses: 11
    Dernier message: 16/11/2005, 12h28
  4. Obtenir le chemin complet d'un fichier
    Par pamplemousse_mk2 dans le forum Linux
    Réponses: 3
    Dernier message: 13/08/2003, 23h07
  5. Recherche de documentation complète en algorithmes
    Par Anonymous dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 29/03/2002, 12h09

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