|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Chargé d'études statistiques Inscription : novembre 2011 Messages : 19 ![]() |
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. |
|
|
00
|
|
|
#2 | ||
|
Membre du Club
![]() julien marandetIngénieur Statisticien Inscription : janvier 2013 Messages : 28 ![]() |
Bonjour pix33,
Quelque chose comme ça ? Code :
|
||
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Chargé d'études statistiques Inscription : novembre 2011 Messages : 19 ![]() |
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 |
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() julien marandetIngénieur Statisticien Inscription : janvier 2013 Messages : 28 ![]() |
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 ? |
|
|
10
|
Copyright © 2000-2013 - www.developpez.com