Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > SAS Base
SAS Base Forum d'entraide sur SAS base : étape data, procédures non statistiques, procédures non graphiques, SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/03/2011, 09h04   #1
Invité de passage
 
Inscription : mars 2011
Messages : 21
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 21
Points : 3
Points : 3
Par défaut Exporter données avec colonne de tailles différentes

Bonjour,

Je travaille actuellement sur un fichier texte que je dois exporter sous sas.
Dans ce fichier, certains élément de la ligne renvoie aux nombres de colonne de celle-ci, ainsi les lignes ne vont pas toutes avoir le même nombre de colonne.

Est-ce que quelqu'un saurait comment on fait pour lire l'indice du nombre de colonnes???
Jack_nicholson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 09h13   #2
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 006
Détails du profil
Informations personnelles :
Nom : Homme Samir SELMANE
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : février 2011
Messages : 1 006
Points : 1 701
Points : 1 701
Rien compris. Un peu plus de précision STP.
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 09h24   #3
Invité de passage
 
Inscription : mars 2011
Messages : 21
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 21
Points : 3
Points : 3
Je vais essayer d'être plus clair :
Voici quelques lignes de mon fichier texte

0002252000150 5 3 16591 256
0055526421243 2 6 11 258894
0586587901459 7 4 2569875 1453

Les nombres en gras renvoie le nombre de caractère qui vont suivre et appartenir à la même colonne
Pour la première ligne, on va donc d'abord avoir une colonne contenant les 5 nombres (16591) puis une autre avec les 3 suivants (123).
Jack_nicholson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 09h29   #4
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 823
Points : 2 823
Bonjour.
C'est à cela que sert l'informat $varying. après lequel on indique la variable contenant la longueur.
Code :
1
2
3
4
5
6
7
8
9
10
11
DATA work.test ;
  INPUT @1 chaine1 $ 13 
        longueur1 longueur2
        chaine2 $varying. longueur1
		chaine3 $varying. longueur2 ;
CARDS ;
0002252000150 5 3 16591 256
0055526421243 2 6 11 258894
0586587901459 7 4 2569875 1453
;
RUN ;
Bon courage.
Olivier
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 09h50   #5
Invité de passage
 
Inscription : mars 2011
Messages : 21
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 21
Points : 3
Points : 3
Ok merci,

par contre le second nombre en gras exprime lui le nombre de colonnes, par exemple le nombre 3 en gras sur la première ligne exprime qu'il y'aura 3 colonnes constituées de la valeur 2 pour la première colonne, 5 pour la seconde et 6 pour la troisième.

0002252000150 5 3 16591 256
0055526421243 2 6 11 258894
0586587901459 7 4 2569875 1453
Jack_nicholson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 09h57   #6
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
Citation:
Pour la première ligne, on va donc d'abord avoir une colonne contenant les 5 nombres (16591) puis une autre avec les 3 suivants (123).
Tu viens de dire que les 2 nombre en gras représentent la longueur de chacune de tes 2 variables, je n'en vois pas d'autres moi
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 10h01   #7
Invité de passage
 
Inscription : mars 2011
Messages : 21
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 21
Points : 3
Points : 3
oui j'étais allé un peu en vite en précipitation, le deuxième nombre indique le nombre de colonnes qui vont suivre en réalité
Jack_nicholson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 10h05   #8
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
On a la première ligne de ton fichier:

Code :
1
2
0002252000150 5 3 16591 256
longueur(16591)=5 longueur(256)=3
Je ne vois pas les 2 colonnes qui suivent, éssaies d'être plus clair
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 10h19   #9
Invité de passage
 
Inscription : mars 2011
Messages : 21
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 21
Points : 3
Points : 3
Citation:
Envoyé par MEGAMIND2 Voir le message
on a la première ligne de ton fichier:

Code :
1
2
0002252000150 5 3 16591 256
longueur(16591)=5 longueur(256)=3
Je ne vois pas les 2 colonnes qui suivent, éssaies d'être plus clair
Le 3 indique un nombre de colonnes et (2 5 6 n'est que le contenu de ces 3 colonnes)
A partir de cette ligne de texte
0002252000150 5 3 16591 256

Voici les colonnes que je veux obtenir :
2252000150 5 3 16591 2 5 6

colonne 1 -> 2252000150
col 2 -> 5
col 3 -> 3
col 4 -> 16591
col 5 -> 2
col 6 -> 5
col 7 -> 6


Je t'avoue que je trouve ce fichier assez complexe dans son organisation
Jack_nicholson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 10h27   #10
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
à mon avis tu as mal lu le fichier à l'origine (perso, je ne sais pas comment tdécouper le contenu d'une colonnes en plusieurs). Est ce que c'est un fichier texte à l'origine? Si oui, tu peux le mettre en pièce jointe
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 10h42   #11
Invité de passage
 
Inscription : mars 2011
Messages : 21
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 21
Points : 3
Points : 3
le fichier texte est assez volumineux, voici un échantillon,
malheureusement je ne sais pas si ça pourra t'aider.
Fichiers attachés
Type de fichier : txt test.txt (850 octets, 9 affichages)
Jack_nicholson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 10h44   #12
Invité de passage
 
Inscription : mars 2011
Messages : 21
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 21
Points : 3
Points : 3
Les colonnes nb1, nb2 et nb3 sont les équivalents du second caractère que je marquai en gras à chaque fois et indique le nombre de colonnes qui doivent suivre et contenant les valeurs de la variable "texte".
Bref tout ça n'est pas facile!!! lol
Jack_nicholson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 10h57   #13
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
La colonne texte doit être lue sur une seule colonne? ou faut le découper en 2 voire 3 colonnes.

désolé de te le redemander encore, tu voudrais obtenir quoi à partir des 2 lignes du fichiers (combien de colonnes et les valeurs correspondantes)?:

Code :
1
2
3
ID	Nb1	Nb2	Nb3	texte
47615	1	1	1	21000222Z491  N180  Z
47618	1	3	4	004222O800        Z
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 11h01   #14
Invité de passage
 
Inscription : mars 2011
Messages : 21
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 21
Points : 3
Points : 3
A partir de ces deux lignes voila ce que j'aimerai obtenir :

47615 1 1 1 2 1000222Z491 N180 Z
Jack_nicholson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 11h04   #15
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
Citation:
Envoyé par Jack_nicholson Voir le message
A partir de ces deux lignes voila ce que j'aimerai obtenir :

47615 1 1 1 2 1000222Z491 N180 Z
Et la deuxième ligne?
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 11h06   #16
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 823
Points : 2 823
Pas facile, non, mais on a tous les outils dans l'instruction INPUT...
Par exemple, avec un @, tu suspends la lecture de la ligne à un endroit précis. Ensuite tu peux reprendre avec un autre INPUT, à l'intérieur d'une boucle. Il faudra juste un INPUT sans @ quelque part pour "libérer" la ligne lue et passer à la suivante.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
DATA work.test ;
  ARRAY colSup {10} ;
  INPUT col1 longueur nbCol 
        col2 $varying. longueur +1 @ ;
  DO i=1 TO nbCol ;
    INPUT colSup{i} 1. @ ;
  END ;
  INPUT ;
CARDS ;
0002252000150 5 3 16591 256
;
RUN ;
Le bloc de variables (Array) est là pour pouvoir indiquer leurs noms par des indices.
Bon courage.
Olivier
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 11h07   #17
Invité de passage
 
Inscription : mars 2011
Messages : 21
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 21
Points : 3
Points : 3
Citation:
Envoyé par MEGAMIND2 Voir le message
La colonne texte doit être lue sur une seule colonne? ou faut le découper en 2 voire 3 colonnes.

désolé de te le redemander encore, tu voudrais obtenir quoi à partir des 2 lignes du fichiers (combien de colonnes et les valeurs correspondantes)?:

Code :
1
2
3
ID	Nb1	Nb2	Nb3	texte
47615	1	1	1	21000222Z491  N180  Z
47618	1	3	4	004222O800        Z

Je m'aperçois que c'est bien plus compliqué qu'il n'y parait, je reviens te voir quand j'aurais mieux compris la structure de la base, en tout cas merci pour ton aide, ça m'as déjà un peu avancé
Jack_nicholson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 11h19   #18
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
Je constate qu'à chaque ligne, le nombre de colonnes est variable si j'ai bien compris.

Bon courage
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 12h15   #19
Invité de passage
 
Inscription : mars 2011
Messages : 21
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 21
Points : 3
Points : 3
Oui c'est tout à fait ça!!
Jack_nicholson est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h16.


 
 
 
 
Partenaires

Hébergement Web