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 :

Insertion de labels d'une table vers une autre


Sujet :

SAS Base

  1. #1
    Membre à l'essai
    Homme Profil pro
    Chargé d'études statistiques
    Inscrit en
    Novembre 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'études statistiques
    Secteur : Services de proximité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 23
    Points : 15
    Points
    15
    Par défaut Insertion de labels d'une table vers une autre
    Bonjour,

    Je souhaite automatiser des contrôles sous sas pour un travail de bases de données mais je bute sur un problème. Je vous explique:

    1) J'ai une table sas (voir pièce jointe "labels") ou j'ai mes variables et leurs libellés.
    2) Dans l'autre table sas (pièce jointe "inclusion"), je retrouve ces mêmes variables avec toutes les données de mon étude, mais je n'ai pas leurs labels.

    J'aimerai insérer les libellés (colonne "description" de ma table "LABELS") en tant que labels dans les variables de ma table "inclusion". Et ce, à partir de la 3ème colonne de ma table INCLUSION, les deux premières colonnes étant des identifiants générés automatiquement.

    Je n'ai mis qu'un extrait de ma base pour que vous compreniez bien. Je suis obligé de fonctionner à chaque fois avec deux tables comme celles ci car elles sont exportés à partir d'un autre logiciel.

    Est-ce possible?

    Merci d'avance pour vos réponses.
    Images attachées Images attachées   

  2. #2
    Membre du Club
    Homme Profil pro
    Ingénieur Statisticien
    Inscrit en
    Janvier 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Statisticien
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2013
    Messages : 28
    Points : 59
    Points
    59
    Par défaut
    Bonjour pix33,

    Quelque chose comme ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    %macro libelle(table,variable,libelle);
    	proc sql;
    		alter table &table. modify &variable. label=&libelle.;
    	quit;
    %mend;
    data _null_;
    	set label_inc;
    	call execute('%libelle(test.inc,'||sasCode||',"'||Description||'")');
    run;

  3. #3
    Membre à l'essai
    Homme Profil pro
    Chargé d'études statistiques
    Inscrit en
    Novembre 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'études statistiques
    Secteur : Services de proximité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    Je viens d'exécuter le code et cela marche très bien.

    Il ne me reste plus qu'à le comprendre maintenant, ce qui va être plus dur.

    Merci beaucoup en tt cas, cela faisait quelques temps que je cherchais, en vain

  4. #4
    Membre du Club
    Homme Profil pro
    Ingénieur Statisticien
    Inscrit en
    Janvier 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Statisticien
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2013
    Messages : 28
    Points : 59
    Points
    59
    Par défaut
    Ce code fait appel à trois notions distinctes

    1. La PROC SQL
    Il s'agit ici de manipuler la structure d'une table en faisant appel au langage SQL
    Dans ce cas précis, la manipulation se résume à changer l'attribut "label" d'une colonne. Cela se fait par l'instruction ALTER TABLE

    2. Le langage %MACRO
    Il permet de généraliser le code compris entre les balises %macro et %mend, en une fonction paramétrable.
    Dans le cas précis, j'ai choisi de faire une fonction à 3 paramètres : table, variable, libelle.
    On remarque alors que ces paramètres sont utilisés dans la procédure SQL, sous la forme &table., &variable. et &libelle..

    3. L'appel à ces fonctions dans une étape DATA.
    Ici, il s'agit de lire les données de la table des libellés, et pour chaque ligne récupérée, de demander l'exécution de la macro-fonction %libelle
    A chaque ligne de la table, on a de nouvelles valeurs pour SASCODE et DESCRIPTION. Ces valeurs sont passées comme paramètre &variable et &libelle en concaténant les chaines suivantes :
    '%libelle(test.inc,' || SasCode || ',"' || Description || '")'

    Ce qui donne pour chaque ligne une nouvelle chaine de caractère (on remplace SasCode et Description par de nouvelles valeurs).

    La chaine de caractère ainsi obtenue correspond à une fonction, qui est exécutée par la commande CALL EXECUTE

    Au final, à chaque ligne de la table, c'est comme si on rédigeait à la suite plusieurs instructions ALTER TABLE ... MODIFY ... LABEL="...";

    Est-ce que cela vous éclaire un peu plus ?

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

Discussions similaires

  1. copier une table d'une BDD dans une table d'une autre BDD
    Par faniette dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/05/2013, 10h17
  2. [VB.Net] Comment copier une DataRow d'une table vers une autre ?
    Par YLF dans le forum Accès aux données
    Réponses: 7
    Dernier message: 05/09/2012, 23h23
  3. Réponses: 1
    Dernier message: 19/10/2011, 12h13
  4. Copier les enregistrements d'une table vers une table d'une autre DB
    Par karinette21 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 18/11/2008, 21h50
  5. [VB.NET] Copie d'une table d'une DB vers une autre
    Par SergeF dans le forum Windows Forms
    Réponses: 9
    Dernier message: 20/11/2004, 09h54

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