Bonjour à tous,
Mon problème est le suivant : lors de l'importation de fichiers XLSX multiple, SAS definit certaines colonnes comme du TEXT si le champ importé est vide.
Il me faut donc pré-formater les données XLSX dès la récupération des datas via le premier Data Set en utilisant la fonction DBSASTYPE.
Via la fonction 'FORMAT' cela ne fonctionne pas car SAS affiche le message d'erreur variable définie comme numeric & caractere.
Le code suivant fonctionne parfaitement
Le problème, c'est que je dois faire cette opération pour 20 fichiers XLSX de structure identique avec chacun 50 champs à adapter.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 LIBNAME xls_data EXCEL 'C:\test.xlsx' header = no ; data BASE_FNI_EPARGNE ; set xls_data.'révision vers BD$'n (dbsastype=( 'f30'n=numeric 'f31'n=numeric)) ; run ;
L'idée est donc la suivante qui fonctionne parfaitement dans une fonction FORMAT mais pas DBSASTYEPE.
Il s'agit s'assigner toute la structure à une variable que l'on appelle ensuite dans le code.
Ici je la nomme 'formatage_xls' que je récupère dans notre dbsastype via '&&fomatage_xls'.
La variable est bien reconnue mais :
Voici le code posant problème ....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 399 data BASE_FNI_EPARGNE ; 400 set xls_data.'révision vers BD$'n(dbsastype=('&&fomatage_xls')); --------- 23 ERROR 23-7: Invalid value for the DBSASTYPE option.
Auriez-vous une idée ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 %let formatage_xls = 'f30'n=numeric 'f31'n=numeric ; %put _user_ ; data BASE_FNI_EPARGNE ; set xls_data.'révision vers BD$'n(dbsastype=('&&fomatage_xls')); run ; libname _all_ clear ;
Merci d'avance
Partager